Skip to content

[pull] master from aio-libs:master - #739

Merged
pull[bot] merged 6 commits into
tj-python:masterfrom
aio-libs:master
Aug 28, 2026
Merged

[pull] master from aio-libs:master#739
pull[bot] merged 6 commits into
tj-python:masterfrom
aio-libs:master

Conversation

@pull

@pull pull Bot commented Aug 28, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

dependabot Bot and others added 6 commits August 28, 2026 11:23
Bumps [imagesize](https://github.com/shibukawa/imagesize_py) from 2.0.0
to 2.0.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/shibukawa/imagesize_py/releases">imagesize's
releases</a>.</em></p>
<blockquote>
<h2>Bug fix</h2>
<ul>
<li>Optimize metadata parsing and HTTP range reads.</li>
<li>Fix JPEG2000 box parsing.</li>
<li>Accept single-quoted SVG dimensions.</li>
<li>Return positive heights for top-down BMP images.</li>
<li>Remove the upper Python version cap, migrate packaging to
pyproject.toml,
and add Python 3.15 CI coverage.</li>
<li>Bump the package version to 2.0.1 and add recent feedback
contributors to
the README.</li>
</ul>
<p>Related issues:
<a
href="https://redirect.github.com/shibukawa/imagesize_py/issues/64">shibukawa/imagesize_py#64</a>
<a
href="https://redirect.github.com/shibukawa/imagesize_py/issues/83">shibukawa/imagesize_py#83</a>
<a
href="https://redirect.github.com/shibukawa/imagesize_py/issues/84">shibukawa/imagesize_py#84</a></p>
<p>Related pull requests:
<a
href="https://redirect.github.com/shibukawa/imagesize_py/pull/86">shibukawa/imagesize_py#86</a>
<a
href="https://redirect.github.com/shibukawa/imagesize_py/pull/87">shibukawa/imagesize_py#87</a>
<a
href="https://redirect.github.com/shibukawa/imagesize_py/pull/88">shibukawa/imagesize_py#88</a>
<a
href="https://redirect.github.com/shibukawa/imagesize_py/pull/89">shibukawa/imagesize_py#89</a>
<a
href="https://redirect.github.com/shibukawa/imagesize_py/pull/90">shibukawa/imagesize_py#90</a>
<a
href="https://redirect.github.com/shibukawa/imagesize_py/pull/91">shibukawa/imagesize_py#91</a>
<a
href="https://redirect.github.com/shibukawa/imagesize_py/pull/92">shibukawa/imagesize_py#92</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/shibukawa/imagesize_py/commit/cf87fc06d599c71b61564eca97873b7bc75ab49a"><code>cf87fc0</code></a>
Prepare release 2.0.1</li>
<li><a
href="https://github.com/shibukawa/imagesize_py/commit/24992f68410217f6daf2984577979470a8dfdc0f"><code>24992f6</code></a>
Merge pull request <a
href="https://redirect.github.com/shibukawa/imagesize_py/issues/92">#92</a>
from shibukawa/feature/add-test-python315</li>
<li><a
href="https://github.com/shibukawa/imagesize_py/commit/cda8b073008a448504d6ba6788e97c436c3373d2"><code>cda8b07</code></a>
Add Python 3.15 test coverage</li>
<li><a
href="https://github.com/shibukawa/imagesize_py/commit/a42d408d4c0b75f218e487b0c88f0501e0372a81"><code>a42d408</code></a>
Merge pull request <a
href="https://redirect.github.com/shibukawa/imagesize_py/issues/91">#91</a>
from shibukawa/feature/fix-issue83</li>
<li><a
href="https://github.com/shibukawa/imagesize_py/commit/a83b14f684109fcf8e6153deb1f83d4fa6f5c8d2"><code>a83b14f</code></a>
Merge remote-tracking branch 'origin/master' into
feature/fix-issue84</li>
<li><a
href="https://github.com/shibukawa/imagesize_py/commit/a1374b11967d841b87b5bf5ec7ebb60b39497197"><code>a1374b1</code></a>
Optimize metadata parsing and HTTP range reads</li>
<li><a
href="https://github.com/shibukawa/imagesize_py/commit/d08863483006e008b8814a031c544b017df5ffc4"><code>d088634</code></a>
Merge pull request <a
href="https://redirect.github.com/shibukawa/imagesize_py/issues/90">#90</a>
from shibukawa/feature/fix-issue84</li>
<li><a
href="https://github.com/shibukawa/imagesize_py/commit/fde3b5ef10bc510452487b1cf8a11811e83c521a"><code>fde3b5e</code></a>
Fix JPEG2000 box parsing for issue 84</li>
<li><a
href="https://github.com/shibukawa/imagesize_py/commit/7d5c7485ee1d9feeac50163f9f4dbad1ff1dc148"><code>7d5c748</code></a>
Merge pull request <a
href="https://redirect.github.com/shibukawa/imagesize_py/issues/87">#87</a>
from stephenfin/pyproject</li>
<li><a
href="https://github.com/shibukawa/imagesize_py/commit/efe3db1835f52095e5655e6c296c8ee80e47263f"><code>efe3db1</code></a>
Merge pull request <a
href="https://redirect.github.com/shibukawa/imagesize_py/issues/89">#89</a>
from jdillard/fix-64-svg-single-quotes</li>
<li>Additional commits viewable in <a
href="https://github.com/shibukawa/imagesize_py/compare/2.0.0...2.0.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=imagesize&package-manager=pip&previous-version=2.0.0&new-version=2.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 26.1.0 to
26.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/benoitc/gunicorn/releases">gunicorn's
releases</a>.</em></p>
<blockquote>
<h2>gunicorn 26.2.0</h2>
<p>Cleartext HTTP/2 lands, and an HTTP/2 security fix.</p>
<h2>Cleartext HTTP/2 (h2c)</h2>
<p><code>http2_cleartext</code> accepts <code>prior-knowledge</code>,
<code>upgrade</code>, <code>both</code> or <code>off</code> (the
default). Prior knowledge serves a connection that opens with the HTTP/2
preface; <code>upgrade</code> honours an HTTP/1.1 <code>Upgrade:
h2c</code> request. Both work on the
gthread, gevent and asgi workers.</p>
<p>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
<code>forwarded_allow_ips</code> are 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.</p>
<p>Do not expose a cleartext HTTP/2 port to the internet.</p>
<h2>Security</h2>
<p><code>HTTP2Request</code> built its headers straight from the stream,
so nothing the HTTP/1
path enforces applied over HTTP/2: the underscore and
<code>header_map</code> policy,
duplicate <code>Host</code> and <code>Content-Type</code>, control
characters in values, and the
<code>forwarded_allow_ips</code> trust gate. An untrusted client could
set <code>SCRIPT_NAME</code>
and forge <code>HTTP_*</code> entries in the WSGI environ, and decide
<code>wsgi.url_scheme</code>
through <code>:scheme</code>. Both request classes now share one policy
mixin, and the
scheme comes from the transport.</p>
<p>If you serve HTTP/2, this is the reason to upgrade.</p>
<h2>Other HTTP/2 fixes</h2>
<p>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.
<code>sendfile()</code> is refused on HTTP/2 responses rather than
bypassing framing.</p>
<h2>Request bodies dropped on Upgrade requests</h2>
<p>On the ASGI worker with the fast parser, any request carrying an
<code>Upgrade</code>
header reached the application with an empty body, whatever the header's
value
and with HTTP/2 switched off entirely. Fixed in
<code>gunicorn_h1c</code> 0.6.9, which the
<code>fast</code> extra now requires.</p>
<p>Full changelog: <a
href="https://gunicorn.org/news/">https://gunicorn.org/news/</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38"><code>36f2a3c</code></a>
gunicorn 26.2.0</li>
<li><a
href="https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe"><code>cbba350</code></a>
test: cover the h2c edge paths that had none</li>
<li><a
href="https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53"><code>9885411</code></a>
Merge pull request <a
href="https://redirect.github.com/benoitc/gunicorn/issues/3703">#3703</a>
from cormier/fix-inconsistency-in-control-socket-docs</li>
<li><a
href="https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139"><code>86f0919</code></a>
Merge pull request <a
href="https://redirect.github.com/benoitc/gunicorn/issues/3704">#3704</a>
from methane/doc-wsgi-h1c</li>
<li><a
href="https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4"><code>5853551</code></a>
Merge pull request <a
href="https://redirect.github.com/benoitc/gunicorn/issues/3712">#3712</a>
from Rotzbua/patch-1</li>
<li><a
href="https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736"><code>7bce87e</code></a>
Merge pull request <a
href="https://redirect.github.com/benoitc/gunicorn/issues/3700">#3700</a>
from benoitc/fix/sponsor-logo-path</li>
<li><a
href="https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6"><code>972dfb0</code></a>
Merge pull request <a
href="https://redirect.github.com/benoitc/gunicorn/issues/3690">#3690</a>
from melbinjp/docs/contributing-settings-path</li>
<li><a
href="https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8"><code>7b3f16b</code></a>
Merge pull request <a
href="https://redirect.github.com/benoitc/gunicorn/issues/3711">#3711</a>
from benoitc/docs/http2-changelog</li>
<li><a
href="https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34"><code>5bf237c</code></a>
http2: require gunicorn_h1c 0.6.9 and drop the upgrade body
workaround</li>
<li><a
href="https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94"><code>7cf0338</code></a>
test: skip the fast-parser cases when gunicorn_h1c is absent</li>
<li>Additional commits viewable in <a
href="https://github.com/benoitc/gunicorn/compare/26.1.0...26.2.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gunicorn&package-manager=pip&previous-version=26.1.0&new-version=26.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [platformdirs](https://github.com/tox-dev/platformdirs) from
4.11.3 to 4.11.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tox-dev/platformdirs/releases">platformdirs's
releases</a>.</em></p>
<blockquote>
<h2>4.11.4</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>🔧 chore: batch dependency updates weekly on Tuesday by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/tox-dev/platformdirs/pull/528">tox-dev/platformdirs#528</a></li>
<li>fix: stop iter_*_dirs yielding the same directory twice by <a
href="https://github.com/darrenhuai"><code>@​darrenhuai</code></a> in <a
href="https://redirect.github.com/tox-dev/platformdirs/pull/524">tox-dev/platformdirs#524</a></li>
<li>docs: fix merge order in the config how-to by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/tox-dev/platformdirs/pull/529">tox-dev/platformdirs#529</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tox-dev/platformdirs/compare/4.11.3...4.11.4">https://github.com/tox-dev/platformdirs/compare/4.11.3...4.11.4</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tox-dev/platformdirs/blob/main/docs/changelog.rst">platformdirs's
changelog</a>.</em></p>
<blockquote>
<p>###########
Changelog
###########</p>
<p>.. towncrier-draft-entries:: Unreleased</p>
<p>.. towncrier release notes start</p>
<hr />
<p>4.11.5 (2026-08-27)</p>
<hr />
<ul>
<li>Give :func:<code>~platformdirs.user_preference_dir</code> and
:func:<code>~platformdirs.user_preference_path</code> the same arguments
as
:func:<code>~platformdirs.user_config_dir</code>. Added without
arguments in :pr:<code>491</code>, they could only return the unscoped
base
directory even though the property they wrap appends the app name and
version. :pr:<code>531</code></li>
<li>Make :func:<code>~platformdirs.site_applications_path</code> return
the first entry when <code>multipath=True</code>, matching
:func:<code>~platformdirs.site_data_path</code>. On Unix and macOS it
passed the whole <code>$XDG_DATA_DIRS</code> list to
:class:<code>~pathlib.Path</code>, giving one unusable path such as
<code>/first/applications:/second/applications</code>.
:pr:<code>532</code></li>
<li>Give :func:<code>~platformdirs.user_applications_dir</code>,
:func:<code>~platformdirs.user_applications_path</code>,
:func:<code>~platformdirs.site_applications_dir</code> and
:func:<code>~platformdirs.site_applications_path</code> the 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,
keeping <code>multipath</code> first positional as it has been
since 4.9.0; the two user functions take their boolean options
keyword-only. :pr:<code>534</code></li>
<li>Correct the ordering note on the iterator methods.
<code>use_site_for_root</code> drops the user directory entirely, so the
iterators are documented as yielding the most specific directory first
rather than always yielding the user one. :pr:<code>533</code></li>
</ul>
<hr />
<p>4.11.4 (2026-08-24)</p>
<hr />
<ul>
<li>Stop the <code>iter_*_dirs</code> methods yielding the same
directory twice when a site directory resolves to its user
equivalent - :pr:<code>520</code> covered only Unix with
<code>use_site_for_root</code>. It also hit
:meth:<code>~platformdirs.PlatformDirs.iter_runtime_dirs</code> on Unix
with <code>$XDG_RUNTIME_DIR</code> set, on Windows and macOS, and
all six iterators on Android. :pr:<code>524</code></li>
<li>Fix the config merging example in the how-to guide.
<code>iter_config_paths</code> yields the user directory first, so the
<code>config.update</code> loop let the site defaults override the
user's config instead of the other way round. :pr:<code>529</code></li>
</ul>
<hr />
<p>4.11.3 (2026-08-13)</p>
<hr />
<ul>
<li><code>python -m platformdirs</code> now lists
:func:<code>~platformdirs.user_desktop_dir</code>, which was missing
from the properties it
prints. :pr:<code>523</code></li>
<li>Stop :func:<code>~platformdirs.site_data_dir</code>,
:func:<code>~platformdirs.site_config_dir</code> and
:func:<code>~platformdirs.site_applications_dir</code> raising
<code>IndexError</code> on Unix and macOS when
<code>$XDG_DATA_DIRS</code> or
<code>$XDG_CONFIG_DIRS</code> holds only separators and whitespace, such
as <code>&quot;:&quot;</code>. These values now fall back to the
platform
defaults, and each entry is stripped of surrounding whitespace.
:pr:<code>523</code></li>
</ul>
<hr />
<p>4.11.2 (2026-08-10)</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/e5fd9eaec045f583563e077649d903ec5db68cbf"><code>e5fd9ea</code></a>
Release 4.11.4</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/4bf9228a33e16c26f1bbd779feb56f5268849b3f"><code>4bf9228</code></a>
docs: fix merge order in the config how-to (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/529">#529</a>)</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/c653668d63658a1f5c468a2f645deb21bedf5ecd"><code>c653668</code></a>
fix: stop iter_*_dirs yielding the same directory twice (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/524">#524</a>)</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/f18ebafb3f8858c51bf27877c279f60e2abfe32e"><code>f18ebaf</code></a>
🔧 chore: batch dependency updates weekly on Tuesday (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/528">#528</a>)</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/b2f29d8e8c17ac18299c2a3e1833620281bb57d2"><code>b2f29d8</code></a>
build(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 in the all
group (...</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/272f3403018cd32fab34e0f185907827f5347f39"><code>272f340</code></a>
build(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 in the all
group (#...</li>
<li><a
href="https://github.com/tox-dev/platformdirs/commit/d3cf61ce5e729f2c35f830b69e14adb7b6970a00"><code>d3cf61c</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/tox-dev/platformdirs/issues/525">#525</a>)</li>
<li>See full diff in <a
href="https://github.com/tox-dev/platformdirs/compare/4.11.3...4.11.4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=platformdirs&package-manager=pip&previous-version=4.11.3&new-version=4.11.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [virtualenv](https://github.com/pypa/virtualenv) from 21.7.4 to
21.7.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/virtualenv/releases">virtualenv's
releases</a>.</em></p>
<blockquote>
<h2>21.7.5</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>🐛 fix(types): adapt to python-discovery 1.5.2 annotations by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3211">pypa/virtualenv#3211</a></li>
<li>📄 docs: publish llms.txt from the docs build by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3210">pypa/virtualenv#3210</a></li>
<li>Push renamed changelog to PR branch in upgrade workflow by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3213">pypa/virtualenv#3213</a></li>
<li>🔧 chore: batch dependency updates weekly on Tuesday by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3219">pypa/virtualenv#3219</a></li>
<li>docs: actualize python support version by <a
href="https://github.com/even-even"><code>@​even-even</code></a> in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3220">pypa/virtualenv#3220</a></li>
<li>🐛 fix(create): check every execute bit in ExePathRef.can_run by <a
href="https://github.com/darrenhuai"><code>@​darrenhuai</code></a> in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3217">pypa/virtualenv#3217</a></li>
<li>🐛 fix(util): make safe_delete's error handler actually run by <a
href="https://github.com/darrenhuai"><code>@​darrenhuai</code></a> in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3222">pypa/virtualenv#3222</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/even-even"><code>@​even-even</code></a>
made their first contribution in <a
href="https://redirect.github.com/pypa/virtualenv/pull/3220">pypa/virtualenv#3220</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pypa/virtualenv/compare/21.7.4...21.7.5">https://github.com/pypa/virtualenv/compare/21.7.4...21.7.5</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst">virtualenv's
changelog</a>.</em></p>
<blockquote>
<h1>Bugfixes - 21.7.5</h1>
<ul>
<li>Fix the type check against <code>python-discovery</code> 1.5.2,
whose annotations allow a <code>None</code> <code>prefix</code> and
integer
<code>sysconfig_vars</code> values: config var substitution now skips a
missing prefix and locating the shared libpython
requires string <code>INSTSONAME</code>/<code>LIBDIR</code> values.
(:issue:<code>3211</code>)</li>
<li><code>ExePathRef.can_run</code> now checks the group and other
execute bits instead of only the owner one, and returns
<code>False</code> rather than <code>None</code> when a file carries
none of the three - by :user:<code>darrenhuai</code>.
(:issue:<code>3217</code>)</li>
<li><code>safe_delete</code> no longer passes
<code>ignore_errors=True</code> to <code>shutil.rmtree</code>, 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, which <code>set_tree</code>
marks - survived, so <code>--reset-app-data</code> and
<code>--clear</code> kept 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:<code>darrenhuai</code>. (:issue:<code>3222</code>)</li>
</ul>
<hr />
<p>v21.7.4 (2026-08-10)</p>
<hr />
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/virtualenv/commit/2a645aece0241e6dc02bf3d67acd88aa0770b601"><code>2a645ae</code></a>
release 21.7.5</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/a48bf4bdce585ab2df7e3eef056b84591429976e"><code>a48bf4b</code></a>
🐛 fix(util): make safe_delete's error handler actually run (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3222">#3222</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/31b50810666aac5075a68472d7f9376148dac8d9"><code>31b5081</code></a>
🐛 fix(create): check every execute bit in ExePathRef.can_run (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3217">#3217</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/5640eef0a51cbea4518ab7d8a302069866a743c9"><code>5640eef</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3221">#3221</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/1ebcab6131bf2f777805e3682b755bf1c81b4f60"><code>1ebcab6</code></a>
docs: actualize python support version (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3220">#3220</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/eb241a03b1b94d4263512c8346fdbaa14f2ba7c3"><code>eb241a0</code></a>
🔧 chore: batch dependency updates weekly on Tuesday (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3219">#3219</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/9534eda10bd9a74317ae50e8fdb1327ffc87a8a2"><code>9534eda</code></a>
chore(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3218">#3218</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/c8c4285104995d63859991f115534828add66457"><code>c8c4285</code></a>
chore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3215">#3215</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/ea806dbc80cbaa493c2de8569767c81b816e9a24"><code>ea806db</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3214">#3214</a>)</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/a21130f1a430f30aa72bf97bdb424c79c7b3a379"><code>a21130f</code></a>
Push renamed changelog to PR branch in upgrade workflow (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3213">#3213</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/virtualenv/compare/21.7.4...21.7.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=virtualenv&package-manager=pip&previous-version=21.7.4&new-version=21.7.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [python-discovery](https://github.com/tox-dev/python-discovery)
from 1.5.2 to 1.5.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tox-dev/python-discovery/releases">python-discovery's
releases</a>.</em></p>
<blockquote>
<h2>v1.5.3</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>📄 docs: publish llms.txt from the docs build by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/tox-dev/python-discovery/pull/118">tox-dev/python-discovery#118</a></li>
<li>Avoid passing a non-Collection iterable to parametrize by <a
href="https://github.com/musicinmybrain"><code>@​musicinmybrain</code></a>
in <a
href="https://redirect.github.com/tox-dev/python-discovery/pull/120">tox-dev/python-discovery#120</a></li>
<li>🔧 chore: batch dependency updates weekly on Tuesday by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/tox-dev/python-discovery/pull/125">tox-dev/python-discovery#125</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/musicinmybrain"><code>@​musicinmybrain</code></a>
made their first contribution in <a
href="https://redirect.github.com/tox-dev/python-discovery/pull/120">tox-dev/python-discovery#120</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tox-dev/python-discovery/compare/1.5.2...1.5.3">https://github.com/tox-dev/python-discovery/compare/1.5.2...1.5.3</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tox-dev/python-discovery/blob/main/docs/changelog.rst">python-discovery's
changelog</a>.</em></p>
<blockquote>
<h1>Bug fixes - 1.5.3</h1>
<ul>
<li>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
<code>RuntimeError</code> with the same message - by
:user:<code>gaborbernat</code>. (:issue:<code>116</code>)</li>
<li>Prefer the version-matched system executable when CPython reports an
existing generic executable for a copied POSIX
virtual environment. (:issue:<code>124</code>)</li>
</ul>
<h1>Improved documentation - 1.5.3</h1>
<ul>
<li>Document the version floors: runs on Python 3.8+, discovers
interpreters down to 3.6 - by :user:<code>gaborbernat</code>.
(:issue:<code>116</code>)</li>
</ul>
<hr />
<p>v1.5.1 (2026-07-31)</p>
<hr />
<h1>Bug fixes - 1.5.1</h1>
<ul>
<li>Locate uv's interpreter store the way uv does, using XDG on macOS
(<code>~/.local/share/uv/python</code>) and roaming
<code>%APPDATA%\uv\python</code> on Windows, neither of which
<code>platformdirs</code> reported. The uv variables now come from the
<code>env</code> mapping rather than <code>os.environ</code> - by
:user:<code>gaborbernat</code>. (:issue:<code>109</code>)</li>
<li>Pick uv-managed interpreters by install directory name instead of
globbing the store. A bare <code>3.8</code> now 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:<code>gaborbernat</code>.
(:issue:<code>110</code>)</li>
</ul>
<h1>Packaging updates and notes for downstreams - 1.5.1</h1>
<ul>
<li>Drop the <code>platformdirs</code> runtime dependency; locating uv's
store was the only thing it did - by
:user:<code>gaborbernat</code>. (:issue:<code>109</code>)</li>
</ul>
<hr />
<p>v1.5.0 (2026-07-21)</p>
<hr />
<h1>Packaging updates and notes for downstreams - 1.5.0</h1>
<ul>
<li>Declare support for Python 3.15 and run the test suite against it,
currently in beta. (:issue:<code>104</code>)</li>
</ul>
<hr />
<p>v1.4.4 (2026-07-08)</p>
<hr />
<h1>Bug fixes - 1.4.4</h1>
<ul>
<li>Parse the debug build flag in interpreter specs -
<code>python3.13d</code> and Debian's <code>python3.13-dbg</code> /
<code>python3.13-debug</code> now select a <code>Py_DEBUG</code>
interpreter instead of being misread as an ISA named <code>dbg</code>.
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:<code>gaborbernat</code>.
(:issue:<code>96</code>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/a4518870621580adee51f1c9d72e695563e6a035"><code>a451887</code></a>
release 1.5.3</li>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/ba973b40b5bacf0db3f77fe93f7730305baa2104"><code>ba973b4</code></a>
🔧 chore: batch dependency updates weekly on Tuesday (<a
href="https://redirect.github.com/tox-dev/python-discovery/issues/125">#125</a>)</li>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/4d8574609315ce086f0ff6d13cfe62974a260023"><code>4d85746</code></a>
🐛 fix(py_info): prefer exact base Python</li>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/8ca46d5b4511cb6c1f11b2d03bee7a36240a7dc8"><code>8ca46d5</code></a>
build(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 (<a
href="https://redirect.github.com/tox-dev/python-discovery/issues/123">#123</a>)</li>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/67cbc06b6067f774856c0f59825766e28ad34975"><code>67cbc06</code></a>
build(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 (<a
href="https://redirect.github.com/tox-dev/python-discovery/issues/122">#122</a>)</li>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/d86823b69f91c947fb31ee4941dcbe11cd635051"><code>d86823b</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/tox-dev/python-discovery/issues/121">#121</a>)</li>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/b30753a59559a94c64f95d8dd2fa7c3db5a03567"><code>b30753a</code></a>
Avoid passing a non-Collection iterable to parametrize (<a
href="https://redirect.github.com/tox-dev/python-discovery/issues/120">#120</a>)</li>
<li><a
href="https://github.com/tox-dev/python-discovery/commit/e87c2c6c2168ee7a7c0ee1cd6a763c1715eccc8f"><code>e87c2c6</code></a>
📄 docs: publish llms.txt from the docs build (<a
href="https://redirect.github.com/tox-dev/python-discovery/issues/118">#118</a>)</li>
<li>See full diff in <a
href="https://github.com/tox-dev/python-discovery/compare/1.5.2...1.5.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=python-discovery&package-manager=pip&previous-version=1.5.2&new-version=1.5.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators Aug 28, 2026
@pull pull Bot added the ⤵️ pull label Aug 28, 2026
@pull
pull Bot merged commit 14a1b54 into tj-python:master Aug 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant