Sourced from imagesize's releases.
Bug fix
- Optimize metadata parsing and HTTP range reads.
- Fix JPEG2000 box parsing.
- Accept single-quoted SVG dimensions.
- Return positive heights for top-down BMP images.
- Remove the upper Python version cap, migrate packaging to pyproject.toml, and add Python 3.15 CI coverage.
- Bump the package version to 2.0.1 and add recent feedback contributors to the README.
Related issues: shibukawa/imagesize_py#64 shibukawa/imagesize_py#83 shibukawa/imagesize_py#84
Related pull requests: shibukawa/imagesize_py#86 shibukawa/imagesize_py#87 shibukawa/imagesize_py#88 shibukawa/imagesize_py#89 shibukawa/imagesize_py#90 shibukawa/imagesize_py#91 shibukawa/imagesize_py#92
cf87fc0
Prepare release 2.0.124992f6
Merge pull request #92
from shibukawa/feature/add-test-python315cda8b07
Add Python 3.15 test coveragea42d408
Merge pull request #91
from shibukawa/feature/fix-issue83a83b14f
Merge remote-tracking branch 'origin/master' into
feature/fix-issue84a1374b1
Optimize metadata parsing and HTTP range readsd088634
Merge pull request #90
from shibukawa/feature/fix-issue84fde3b5e
Fix JPEG2000 box parsing for issue 847d5c748
Merge pull request #87
from stephenfin/pyprojectefe3db1
Merge pull request #89
from jdillard/fix-64-svg-single-quotesSourced from gunicorn's releases.
gunicorn 26.2.0
Cleartext HTTP/2 lands, and an HTTP/2 security fix.
Cleartext HTTP/2 (h2c)
http2_cleartextacceptsprior-knowledge,upgrade,bothoroff(the default). Prior knowledge serves a connection that opens with the HTTP/2 preface;upgradehonours an HTTP/1.1Upgrade: h2crequest. Both work on the gthread, gevent and asgi workers.This is for deployments where TLS is terminated by a proxy that speaks HTTP/2 upstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in
forwarded_allow_ipsare considered; everyone else is served HTTP/1.x exactly as if the setting were off. Each mechanism is enabled separately, so turning one on does not turn the other on.Do not expose a cleartext HTTP/2 port to the internet.
Security
HTTP2Requestbuilt its headers straight from the stream, so nothing the HTTP/1 path enforces applied over HTTP/2: the underscore andheader_mappolicy, duplicateHostandContent-Type, control characters in values, and theforwarded_allow_ipstrust gate. An untrusted client could setSCRIPT_NAMEand forgeHTTP_*entries in the WSGI environ, and decidewsgi.url_schemethrough:scheme. Both request classes now share one policy mixin, and the scheme comes from the transport.If you serve HTTP/2, this is the reason to upgrade.
Other HTTP/2 fixes
WSGI responses were buffered whole before anything was sent; they stream now. HEAD, 204 and 304 no longer carry a body. Events read while blocked on a flow-control window were discarded, losing requests and body data outright.
sendfile()is refused on HTTP/2 responses rather than bypassing framing.Request bodies dropped on Upgrade requests
On the ASGI worker with the fast parser, any request carrying an
Upgradeheader reached the application with an empty body, whatever the header's value and with HTTP/2 switched off entirely. Fixed ingunicorn_h1c0.6.9, which thefastextra now requires.Full changelog: https://gunicorn.org/news/
36f2a3c
gunicorn 26.2.0cbba350
test: cover the h2c edge paths that had none9885411
Merge pull request #3703
from cormier/fix-inconsistency-in-control-socket-docs86f0919
Merge pull request #3704
from methane/doc-wsgi-h1c5853551
Merge pull request #3712
from Rotzbua/patch-17bce87e
Merge pull request #3700
from benoitc/fix/sponsor-logo-path972dfb0
Merge pull request #3690
from melbinjp/docs/contributing-settings-path7b3f16b
Merge pull request #3711
from benoitc/docs/http2-changelog5bf237c
http2: require gunicorn_h1c 0.6.9 and drop the upgrade body
workaround7cf0338
test: skip the fast-parser cases when gunicorn_h1c is absentSourced from platformdirs's releases.
4.11.4
What's Changed
- 🔧 chore: batch dependency updates weekly on Tuesday by
@gaborbernatin tox-dev/platformdirs#528- fix: stop iter_*_dirs yielding the same directory twice by
@darrenhuaiin tox-dev/platformdirs#524- docs: fix merge order in the config how-to by
@gaborbernatin tox-dev/platformdirs#529Full Changelog: https://github.com/tox-dev/platformdirs/compare/4.11.3...4.11.4
Sourced from platformdirs's changelog.
########### Changelog ###########
.. towncrier-draft-entries:: Unreleased
.. towncrier release notes start
4.11.5 (2026-08-27)
- Give :func:
~platformdirs.user_preference_dirand :func:~platformdirs.user_preference_paththe same arguments as :func:~platformdirs.user_config_dir. Added without arguments in :pr:491, they could only return the unscoped base directory even though the property they wrap appends the app name and version. :pr:531- Make :func:
~platformdirs.site_applications_pathreturn the first entry whenmultipath=True, matching :func:~platformdirs.site_data_path. On Unix and macOS it passed the whole$XDG_DATA_DIRSlist to :class:~pathlib.Path, giving one unusable path such as/first/applications:/second/applications. :pr:532- Give :func:
~platformdirs.user_applications_dir, :func:~platformdirs.user_applications_path, :func:~platformdirs.site_applications_dirand :func:~platformdirs.site_applications_paththe app arguments. Android scopes both applications directories to the app, so without them the functions could only return the unscoped base directory there. On the two site functions they are keyword-only, keepingmultipathfirst positional as it has been since 4.9.0; the two user functions take their boolean options keyword-only. :pr:534- Correct the ordering note on the iterator methods.
use_site_for_rootdrops the user directory entirely, so the iterators are documented as yielding the most specific directory first rather than always yielding the user one. :pr:533
4.11.4 (2026-08-24)
- Stop the
iter_*_dirsmethods yielding the same directory twice when a site directory resolves to its user equivalent - :pr:520covered only Unix withuse_site_for_root. It also hit :meth:~platformdirs.PlatformDirs.iter_runtime_dirson Unix with$XDG_RUNTIME_DIRset, on Windows and macOS, and all six iterators on Android. :pr:524- Fix the config merging example in the how-to guide.
iter_config_pathsyields the user directory first, so theconfig.updateloop let the site defaults override the user's config instead of the other way round. :pr:529
4.11.3 (2026-08-13)
python -m platformdirsnow lists :func:~platformdirs.user_desktop_dir, which was missing from the properties it prints. :pr:523- Stop :func:
~platformdirs.site_data_dir, :func:~platformdirs.site_config_dirand :func:~platformdirs.site_applications_dirraisingIndexErroron Unix and macOS when$XDG_DATA_DIRSor$XDG_CONFIG_DIRSholds only separators and whitespace, such as":". These values now fall back to the platform defaults, and each entry is stripped of surrounding whitespace. :pr:523
4.11.2 (2026-08-10)
... (truncated)
e5fd9ea
Release 4.11.44bf9228
docs: fix merge order in the config how-to (#529)c653668
fix: stop iter_*_dirs yielding the same directory twice (#524)f18ebaf
🔧 chore: batch dependency updates weekly on Tuesday (#528)b2f29d8
build(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 in the all
group (...272f340
build(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 in the all
group (#...d3cf61c
[pre-commit.ci] pre-commit autoupdate (#525)Sourced from virtualenv's releases.
21.7.5
What's Changed
- 🐛 fix(types): adapt to python-discovery 1.5.2 annotations by
@gaborbernatin pypa/virtualenv#3211- 📄 docs: publish llms.txt from the docs build by
@gaborbernatin pypa/virtualenv#3210- Push renamed changelog to PR branch in upgrade workflow by
@gaborbernatin pypa/virtualenv#3213- 🔧 chore: batch dependency updates weekly on Tuesday by
@gaborbernatin pypa/virtualenv#3219- docs: actualize python support version by
@even-evenin pypa/virtualenv#3220- 🐛 fix(create): check every execute bit in ExePathRef.can_run by
@darrenhuaiin pypa/virtualenv#3217- 🐛 fix(util): make safe_delete's error handler actually run by
@darrenhuaiin pypa/virtualenv#3222New Contributors
@even-evenmade their first contribution in pypa/virtualenv#3220Full Changelog: https://github.com/pypa/virtualenv/compare/21.7.4...21.7.5
Sourced from virtualenv's changelog.
Bugfixes - 21.7.5
- Fix the type check against
python-discovery1.5.2, whose annotations allow aNoneprefixand integersysconfig_varsvalues: config var substitution now skips a missing prefix and locating the shared libpython requires stringINSTSONAME/LIBDIRvalues. (:issue:3211)ExePathRef.can_runnow checks the group and other execute bits instead of only the owner one, and returnsFalserather thanNonewhen a file carries none of the three - by :user:darrenhuai. (:issue:3217)safe_deleteno longer passesignore_errors=Truetoshutil.rmtree, which replaced its own chmod-and-retry handler with a no-op and swallowed every failure. Read-only files - every file in a wheel image, whichset_treemarks - survived, so--reset-app-dataand--clearkept trees they reported deleting. The handler now retries only the deletion itself, keeps the other mode bits, and raises the original error for anything it cannot clear - by :user:darrenhuai. (:issue:3222)
v21.7.4 (2026-08-10)
2a645ae
release 21.7.5a48bf4b
🐛 fix(util): make safe_delete's error handler actually run (#3222)31b5081
🐛 fix(create): check every execute bit in ExePathRef.can_run (#3217)5640eef
[pre-commit.ci] pre-commit autoupdate (#3221)1ebcab6
docs: actualize python support version (#3220)eb241a0
🔧 chore: batch dependency updates weekly on Tuesday (#3219)9534eda
chore(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 (#3218)c8c4285
chore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 (#3215)ea806db
[pre-commit.ci] pre-commit autoupdate (#3214)a21130f
Push renamed changelog to PR branch in upgrade workflow (#3213)Sourced from python-discovery's releases.
v1.5.3
What's Changed
- 📄 docs: publish llms.txt from the docs build by
@gaborbernatin tox-dev/python-discovery#118- Avoid passing a non-Collection iterable to parametrize by
@musicinmybrainin tox-dev/python-discovery#120- 🔧 chore: batch dependency updates weekly on Tuesday by
@gaborbernatin tox-dev/python-discovery#125New Contributors
@musicinmybrainmade their first contribution in tox-dev/python-discovery#120Full Changelog: https://github.com/tox-dev/python-discovery/compare/1.5.2...1.5.3
Sourced from python-discovery's changelog.
Bug fixes - 1.5.3
- Restore discovery of Python 3.6 and 3.7 interpreters: the interrogation script had grown 3.8-only syntax and is now kept to Python 3.6. Candidates below 3.6 log one warning naming the version found instead of two debug-level query attempts, and the verdict is cached so they are queried only once; an absolute-path spec for one raises
RuntimeErrorwith the same message - by :user:gaborbernat. (:issue:116)- Prefer the version-matched system executable when CPython reports an existing generic executable for a copied POSIX virtual environment. (:issue:
124)Improved documentation - 1.5.3
- Document the version floors: runs on Python 3.8+, discovers interpreters down to 3.6 - by :user:
gaborbernat. (:issue:116)
v1.5.1 (2026-07-31)
Bug fixes - 1.5.1
- Locate uv's interpreter store the way uv does, using XDG on macOS (
~/.local/share/uv/python) and roaming%APPDATA%\uv\pythonon Windows, neither of whichplatformdirsreported. The uv variables now come from theenvmapping rather thanos.environ- by :user:gaborbernat. (:issue:109)- Pick uv-managed interpreters by install directory name instead of globbing the store. A bare
3.8now means CPython, the way uv resolves it, rather than whichever implementation the filesystem happened to list first, and probing runs newest version first - by :user:gaborbernat. (:issue:110)Packaging updates and notes for downstreams - 1.5.1
- Drop the
platformdirsruntime dependency; locating uv's store was the only thing it did - by :user:gaborbernat. (:issue:109)
v1.5.0 (2026-07-21)
Packaging updates and notes for downstreams - 1.5.0
- Declare support for Python 3.15 and run the test suite against it, currently in beta. (:issue:
104)
v1.4.4 (2026-07-08)
Bug fixes - 1.4.4
- Parse the debug build flag in interpreter specs -
python3.13dand Debian'spython3.13-dbg/python3.13-debugnow select aPy_DEBUGinterpreter instead of being misread as an ISA nameddbg. Resolving a virtualenv to its base interpreter also checks the free-threaded and debug ABI flags, so a debug or free-threaded environment no longer resolves to a release build of the same version - by :user:gaborbernat. (:issue:96)
... (truncated)
a451887
release 1.5.3ba973b4
🔧 chore: batch dependency updates weekly on Tuesday (#125)4d85746
🐛 fix(py_info): prefer exact base Python8ca46d5
build(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 (#123)67cbc06
build(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 (#122)d86823b
[pre-commit.ci] pre-commit autoupdate (#121)b30753a
Avoid passing a non-Collection iterable to parametrize (#120)e87c2c6
📄 docs: publish llms.txt from the docs build (#118)