Skip to content

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

Merged
pull[bot] merged 51 commits into
tj-python:masterfrom
aio-libs:master
Jun 7, 2026
Merged

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

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Jun 7, 2026

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 : )

Dreamsorcerer and others added 30 commits June 2, 2026 14:39
…12776)

**This is a backport of PR #12774 as merged into master
(c66e5cb).**

Co-authored-by: Sam Bull <git@sambull.org>
Bumps [click](https://github.com/pallets/click) from 8.3.1 to 8.4.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/click/releases">click's
releases</a>.</em></p>
<blockquote>
<h2>8.4.1</h2>
<p>This is the Click 8.4.1 fix release, which fixes bugs but does not
otherwise change behavior and should not result in breaking changes
compared to the latest feature release.</p>
<p>PyPI: <a
href="https://pypi.org/project/click/8.4.1/">https://pypi.org/project/click/8.4.1/</a>
Changes: <a
href="https://click.palletsprojects.com/page/changes/#version-8-4-1">https://click.palletsprojects.com/page/changes/#version-8-4-1</a>
Milestone: <a
href="https://github.com/pallets/click/milestone/32?closed=1">https://github.com/pallets/click/milestone/32?closed=1</a></p>
<ul>
<li><code>get_parameter_source()</code> is available during eager
callbacks and type conversion again. <a
href="https://redirect.github.com/pallets/click/issues/3458">#3458</a>
<a
href="https://redirect.github.com/pallets/click/issues/3484">#3484</a></li>
<li>Zsh completion scripts parse correctly on Windows. <a
href="https://redirect.github.com/pallets/click/issues/3277">#3277</a> #
3466</li>
<li>Shell completion of <code>Choice</code> <code>Enum</code> values
produces a valid completion result. <a
href="https://redirect.github.com/pallets/click/issues/3015">#3015</a></li>
<li>Fix empty byte-string handling in echo. <a
href="https://redirect.github.com/pallets/click/issues/3487">#3487</a></li>
<li>Fix closed file error with <code>echo_via_pager</code>. <a
href="https://redirect.github.com/pallets/click/issues/3449">#3449</a></li>
</ul>
<h2>8.4.0</h2>
<p>This is the Click 8.4.0 feature release. A feature release may
include new features, remove previously deprecated code, add new
deprecation, or introduce potentially breaking changes.</p>
<p>We encourage everyone to upgrade. You can read more about our <a
href="https://palletsprojects.com/versions">Version Support Policy</a>
on our website.</p>
<p>PyPI: <a
href="https://pypi.org/project/click/8.4.0/">https://pypi.org/project/click/8.4.0/</a>
Changes: <a
href="https://click.palletsprojects.com/page/changes/#version-8-4-0">https://click.palletsprojects.com/page/changes/#version-8-4-0</a>
Milestone <a
href="https://github.com/pallets/click/milestone/30">https://github.com/pallets/click/milestone/30</a></p>
<ul>
<li>
<p><code>ParamType</code> typing improvements. <a
href="https://redirect.github.com/pallets/click/issues/3371">#3371</a></p>
<ul>
<li>:class:<code>ParamType</code> is now a generic abstract base class,
parameterized by its converted value type.</li>
<li>:meth:<code>~ParamType.convert</code> return types are narrowed on
all
concrete types (<code>str</code> for :class:<code>STRING</code>,
<code>int</code> for
:class:<code>INT</code>, etc.).</li>
<li>:meth:<code>~ParamType.to_info_dict</code> returns specific
:class:<code>~typing.TypedDict</code> subclasses instead of
<code>dict[str, Any]</code>.</li>
<li>:class:<code>CompositeParamType</code> and the number-range base are
now
generic with abstract methods.</li>
</ul>
</li>
<li>
<p>Refactor <code>convert_type</code> to extract type inference into a
private
<code>_guess_type</code> helper, and add
:func:<code>typing.overload</code> signatures.
<a
href="https://redirect.github.com/pallets/click/issues/3372">#3372</a></p>
</li>
<li>
<p><code>Parameter</code> typing improvements. <a
href="https://redirect.github.com/pallets/click/issues/2805">#2805</a></p>
<ul>
<li>:class:<code>Parameter</code> is now an abstract base class, making
explicit
that it cannot be instantiated directly.</li>
<li>:attr:<code>Parameter.name</code> is now <code>str</code> instead of
<code>str | None</code>.
When <code>expose_value=False</code>, the name is set to
<code>&quot;&quot;</code> instead
of <code>None</code>.</li>
<li>The <code>ctx</code> parameter of
:meth:<code>Parameter.get_error_hint</code> is now
typed as <code>Context | None</code>, matching the runtime
behavior.</li>
</ul>
</li>
<li>
<p>Split string values from <code>default_map</code> for parameters with
<code>nargs &gt; 1</code>
or :class:<code>Tuple</code> type, matching environment variable
behavior.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/click/blob/main/CHANGES.rst">click's
changelog</a>.</em></p>
<blockquote>
<h2>Version 8.4.1</h2>
<p>Released 2026-05-21</p>
<ul>
<li><code>get_parameter_source()</code> is available during eager
callbacks and type
conversion again. :issue:<code>3458</code> :issue:<code>3484</code></li>
<li>Zsh completion scripts parse correctly on Windows.
:issue:<code>3277</code> :pr:<code>3466</code></li>
<li>Shell completion of <code>Choice</code> <code>Enum</code> values
produces a valid completion
result. :issue:<code>3015</code></li>
<li>Fix empty byte-string handling in echo.
:issue:<code>3487</code></li>
<li>Fix closed file error with <code>echo_via_pager</code>.
:issue:<code>3449</code></li>
</ul>
<h2>Version 8.4.0</h2>
<p>Released 2026-05-17</p>
<ul>
<li>
<p>:class:<code>ParamType</code> typing improvements.
:pr:<code>3371</code></p>
<ul>
<li>:class:<code>ParamType</code> is now a generic abstract base class,
parameterized by its converted value type.</li>
<li>:meth:<code>~ParamType.convert</code> return types are narrowed on
all
concrete types (<code>str</code> for :class:<code>STRING</code>,
<code>int</code> for
:class:<code>INT</code>, etc.).</li>
<li>:meth:<code>~ParamType.to_info_dict</code> returns specific
:class:<code>~typing.TypedDict</code> subclasses instead of
<code>dict[str, Any]</code>.</li>
<li>:class:<code>CompositeParamType</code> and the number-range base are
now
generic with abstract methods.</li>
</ul>
</li>
<li>
<p>Refactor <code>convert_type</code> to extract type inference into a
private
<code>_guess_type</code> helper, and add
:func:<code>typing.overload</code> signatures.
:pr:<code>3372</code></p>
</li>
<li>
<p>:class:<code>Parameter</code> typing improvements.
:pr:<code>2805</code></p>
<ul>
<li>:class:<code>Parameter</code> is now an abstract base class, making
explicit
that it cannot be instantiated directly.</li>
<li>:attr:<code>Parameter.name</code> is now <code>str</code> instead of
<code>str | None</code>.
When <code>expose_value=False</code>, the name is set to
<code>&quot;&quot;</code> instead
of <code>None</code>.</li>
<li>The <code>ctx</code> parameter of
:meth:<code>Parameter.get_error_hint</code> is now
typed as <code>Context | None</code>, matching the runtime
behavior.</li>
</ul>
</li>
<li>
<p>Split string values from <code>default_map</code> for parameters with
<code>nargs &gt; 1</code>
or :class:<code>Tuple</code> type, matching environment variable
behavior.
:issue:<code>2745</code> :pr:<code>3364</code></p>
</li>
<li>
<p>Auto-detect <code>type=UNPROCESSED</code> for <code>flag_value</code>
of non-basic types
(not <code>str</code>, <code>int</code>, <code>float</code>, or
<code>bool</code>), so programmer-provided
Python objects like classes and enum members are passed through
unchanged
instead of being stringified. Previously
<code>type=click.UNPROCESSED</code> had
to be set explicitly. :issue:<code>2012</code> :pr:<code>3363</code></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pallets/click/commit/6eeb50e948ea136db145280f6f5dd52eca3fa7e5"><code>6eeb50e</code></a>
release version 8.4.1</li>
<li><a
href="https://github.com/pallets/click/commit/67921d5b71584112eebcbf89596b5f0e6d14c49f"><code>67921d5</code></a>
change log and doc fixes (<a
href="https://redirect.github.com/pallets/click/issues/3495">#3495</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/9c41f46a4015700489ad009266edf1f3893d01d1"><code>9c41f46</code></a>
Fix changelog and version admonitions</li>
<li><a
href="https://github.com/pallets/click/commit/6cb34774f20598aa288332f8da02c5aee85448a6"><code>6cb3477</code></a>
fix skip condition</li>
<li><a
href="https://github.com/pallets/click/commit/5ee8e3123d8ddece6c47eff9a7a7d4ca478c4f37"><code>5ee8e31</code></a>
fix I/O operation on closed file error with CliRunner and echo_via_pager
(<a
href="https://redirect.github.com/pallets/click/issues/3482">#3482</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/becbde5cf416441627f779e8dd34e57738ee1c1f"><code>becbde5</code></a>
pager doesn't close std streams</li>
<li><a
href="https://github.com/pallets/click/commit/a5f5aa6d4012d256ccca24638f2642fc371e9f77"><code>a5f5aa6</code></a>
Handle empty bytes in echo (<a
href="https://redirect.github.com/pallets/click/issues/3493">#3493</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/4d3db84b251518e97299a38a5ca4bab3d01873a2"><code>4d3db84</code></a>
handle empty bytes in echo</li>
<li><a
href="https://github.com/pallets/click/commit/d42f15b71757de791a5781fb179fd972da9169f5"><code>d42f15b</code></a>
Fix <code>get_parameter_source()</code> during type conversion and eager
callbacks (<a
href="https://redirect.github.com/pallets/click/issues/3484">#3484</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/0baa8db07736fc7ad3d3eed97d4c73b0059c63e1"><code>0baa8db</code></a>
Document ctx.params bypass with test and doc</li>
<li>Additional commits viewable in <a
href="https://github.com/pallets/click/compare/8.3.1...8.4.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=click&package-manager=pip&previous-version=8.3.1&new-version=8.4.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 [virtualenv](https://github.com/pypa/virtualenv) from 21.4.1 to
21.4.2.
<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.4.2</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>🐛 fix(activation): silence deactivate hash -r under set -e by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3152">pypa/virtualenv#3152</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pypa/virtualenv/compare/21.4.1...21.4.2">https://github.com/pypa/virtualenv/compare/21.4.1...21.4.2</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.4.2</h1>
<ul>
<li>Stop <code>deactivate</code> in the bash/zsh activation script from
aborting under <code>set -e</code> when <code>hash -r</code> fails (for
example with shell hashing disabled) by appending <code>|| true</code>,
matching CPython <code>venv</code> (<a
href="https://redirect.github.com/pypa/virtualenv/issues/149701">gh-149701</a>)
and the existing
non-deactivate call - by :user:<code>gaborbernat</code>.
(:issue:<code>3152</code>)</li>
</ul>
<hr />
<p>v21.4.1 (2026-05-28)</p>
<hr />
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/virtualenv/commit/3cf1a29a24ad7f93ecd2db8c7fbbf454a3607694"><code>3cf1a29</code></a>
release 21.4.2</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/b724203e38ca810dc682126435c3ba756a8bd943"><code>b724203</code></a>
🐛 fix(activation): silence deactivate hash -r under set -e (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3152">#3152</a>)</li>
<li>See full diff in <a
href="https://github.com/pypa/virtualenv/compare/21.4.1...21.4.2">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.4.1&new-version=21.4.2)](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 [distlib](https://github.com/pypa/distlib) from 0.4.0 to 0.4.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/distlib/blob/master/CHANGES.rst">distlib's
changelog</a>.</em></p>
<blockquote>
<p>0.4.1</p>
<pre><code>
Released: 2026-06-02
<ul>
<li>
<p>scripts</p>
<ul>
<li>Fix path traversal bug in handling entry points which allowed
escaping the scripts directory.
Thanks to tonghuaroot for the comprehensive report.</li>
</ul>
</li>
<li>
<p>tests</p>
<ul>
<li>Fix <a
href="https://redirect.github.com/pypa/distlib/issues/251">#251</a>:
Change test function following a reorganization which happened in the
Python stdlib.
</code></pre></li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/distlib/commit/d562ad5aabe23dc03b22fccdf84dc01fddf0d336"><code>d562ad5</code></a>
Changes for 0.4.1.</li>
<li><a
href="https://github.com/pypa/distlib/commit/6286442857de9f734686d08f0e59ca8048ee357a"><code>6286442</code></a>
Fix <a
href="https://redirect.github.com/pypa/distlib/issues/251">#251</a>: Use
more appropriate function in test.</li>
<li><a
href="https://github.com/pypa/distlib/commit/e3b1cd6ec121058ae71a2aab08aa2a120360c872"><code>e3b1cd6</code></a>
Bump version.</li>
<li><a
href="https://github.com/pypa/distlib/commit/da3e90aef9c2ea545ac653039dd970174b48ebd4"><code>da3e90a</code></a>
Added tag 0.4.0 for changeset d31f0b340fde</li>
<li>See full diff in <a
href="https://github.com/pypa/distlib/compare/0.4.0...0.4.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=distlib&package-manager=pip&previous-version=0.4.0&new-version=0.4.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 [idna](https://github.com/kjd/idna) from 3.17 to 3.18.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/kjd/idna/blob/master/HISTORY.md">idna's
changelog</a>.</em></p>
<blockquote>
<h2>3.18 (2026-06-02)</h2>
<ul>
<li>When decoding a domain, add a <code>display</code> argument that
will pass
through invalid labels rather than raising an exception.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/kjd/idna/commit/f39ea903ba49eb5a0b2c6723c9a929b41ed4a0f1"><code>f39ea90</code></a>
Release 3.18</li>
<li><a
href="https://github.com/kjd/idna/commit/40f4e407bc7452da37c24b0c112dcda9a5b299ba"><code>40f4e40</code></a>
Pre-release 3.18rc0</li>
<li><a
href="https://github.com/kjd/idna/commit/1a5bf80f2fa40454589e6144efe5f72015ef9d24"><code>1a5bf80</code></a>
Merge pull request <a
href="https://redirect.github.com/kjd/idna/issues/253">#253</a> from
kjd/lenient-decode</li>
<li><a
href="https://github.com/kjd/idna/commit/5bbb26fc86e28c4ee1434ae8ae8db76de4c2a5ac"><code>5bbb26f</code></a>
Merge branch 'master' into lenient-decode</li>
<li><a
href="https://github.com/kjd/idna/commit/c532bae5270489cef8faf9f6b1eb70cbcb454c6d"><code>c532bae</code></a>
Rename decode() lenient= option to display= (issue <a
href="https://redirect.github.com/kjd/idna/issues/248">#248</a>)</li>
<li><a
href="https://github.com/kjd/idna/commit/0b1758ba11952a2e88fd6141ffa620409bff0580"><code>0b1758b</code></a>
Merge pull request <a
href="https://redirect.github.com/kjd/idna/issues/252">#252</a> from
kjd/release-3.17</li>
<li><a
href="https://github.com/kjd/idna/commit/47b5cde6fffd1a33c4a600228152c919c6de0eb4"><code>47b5cde</code></a>
Add lenient option to decode() for best-effort label recovery (issue <a
href="https://redirect.github.com/kjd/idna/issues/248">#248</a>)</li>
<li>See full diff in <a
href="https://github.com/kjd/idna/compare/v3.17...v3.18">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=idna&package-manager=pip&previous-version=3.17&new-version=3.18)](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 [virtualenv](https://github.com/pypa/virtualenv) from 21.4.1 to
21.4.2.
<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.4.2</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>🐛 fix(activation): silence deactivate hash -r under set -e by <a
href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in
<a
href="https://redirect.github.com/pypa/virtualenv/pull/3152">pypa/virtualenv#3152</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pypa/virtualenv/compare/21.4.1...21.4.2">https://github.com/pypa/virtualenv/compare/21.4.1...21.4.2</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.4.2</h1>
<ul>
<li>Stop <code>deactivate</code> in the bash/zsh activation script from
aborting under <code>set -e</code> when <code>hash -r</code> fails (for
example with shell hashing disabled) by appending <code>|| true</code>,
matching CPython <code>venv</code> (<a
href="https://redirect.github.com/pypa/virtualenv/issues/149701">gh-149701</a>)
and the existing
non-deactivate call - by :user:<code>gaborbernat</code>.
(:issue:<code>3152</code>)</li>
</ul>
<hr />
<p>v21.4.1 (2026-05-28)</p>
<hr />
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/virtualenv/commit/3cf1a29a24ad7f93ecd2db8c7fbbf454a3607694"><code>3cf1a29</code></a>
release 21.4.2</li>
<li><a
href="https://github.com/pypa/virtualenv/commit/b724203e38ca810dc682126435c3ba756a8bd943"><code>b724203</code></a>
🐛 fix(activation): silence deactivate hash -r under set -e (<a
href="https://redirect.github.com/pypa/virtualenv/issues/3152">#3152</a>)</li>
<li>See full diff in <a
href="https://github.com/pypa/virtualenv/compare/21.4.1...21.4.2">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [click](https://github.com/pallets/click) from 8.3.1 to 8.4.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/click/releases">click's
releases</a>.</em></p>
<blockquote>
<h2>8.4.1</h2>
<p>This is the Click 8.4.1 fix release, which fixes bugs but does not
otherwise change behavior and should not result in breaking changes
compared to the latest feature release.</p>
<p>PyPI: <a
href="https://pypi.org/project/click/8.4.1/">https://pypi.org/project/click/8.4.1/</a>
Changes: <a
href="https://click.palletsprojects.com/page/changes/#version-8-4-1">https://click.palletsprojects.com/page/changes/#version-8-4-1</a>
Milestone: <a
href="https://github.com/pallets/click/milestone/32?closed=1">https://github.com/pallets/click/milestone/32?closed=1</a></p>
<ul>
<li><code>get_parameter_source()</code> is available during eager
callbacks and type conversion again. <a
href="https://redirect.github.com/pallets/click/issues/3458">#3458</a>
<a
href="https://redirect.github.com/pallets/click/issues/3484">#3484</a></li>
<li>Zsh completion scripts parse correctly on Windows. <a
href="https://redirect.github.com/pallets/click/issues/3277">#3277</a> #
3466</li>
<li>Shell completion of <code>Choice</code> <code>Enum</code> values
produces a valid completion result. <a
href="https://redirect.github.com/pallets/click/issues/3015">#3015</a></li>
<li>Fix empty byte-string handling in echo. <a
href="https://redirect.github.com/pallets/click/issues/3487">#3487</a></li>
<li>Fix closed file error with <code>echo_via_pager</code>. <a
href="https://redirect.github.com/pallets/click/issues/3449">#3449</a></li>
</ul>
<h2>8.4.0</h2>
<p>This is the Click 8.4.0 feature release. A feature release may
include new features, remove previously deprecated code, add new
deprecation, or introduce potentially breaking changes.</p>
<p>We encourage everyone to upgrade. You can read more about our <a
href="https://palletsprojects.com/versions">Version Support Policy</a>
on our website.</p>
<p>PyPI: <a
href="https://pypi.org/project/click/8.4.0/">https://pypi.org/project/click/8.4.0/</a>
Changes: <a
href="https://click.palletsprojects.com/page/changes/#version-8-4-0">https://click.palletsprojects.com/page/changes/#version-8-4-0</a>
Milestone <a
href="https://github.com/pallets/click/milestone/30">https://github.com/pallets/click/milestone/30</a></p>
<ul>
<li>
<p><code>ParamType</code> typing improvements. <a
href="https://redirect.github.com/pallets/click/issues/3371">#3371</a></p>
<ul>
<li>:class:<code>ParamType</code> is now a generic abstract base class,
parameterized by its converted value type.</li>
<li>:meth:<code>~ParamType.convert</code> return types are narrowed on
all
concrete types (<code>str</code> for :class:<code>STRING</code>,
<code>int</code> for
:class:<code>INT</code>, etc.).</li>
<li>:meth:<code>~ParamType.to_info_dict</code> returns specific
:class:<code>~typing.TypedDict</code> subclasses instead of
<code>dict[str, Any]</code>.</li>
<li>:class:<code>CompositeParamType</code> and the number-range base are
now
generic with abstract methods.</li>
</ul>
</li>
<li>
<p>Refactor <code>convert_type</code> to extract type inference into a
private
<code>_guess_type</code> helper, and add
:func:<code>typing.overload</code> signatures.
<a
href="https://redirect.github.com/pallets/click/issues/3372">#3372</a></p>
</li>
<li>
<p><code>Parameter</code> typing improvements. <a
href="https://redirect.github.com/pallets/click/issues/2805">#2805</a></p>
<ul>
<li>:class:<code>Parameter</code> is now an abstract base class, making
explicit
that it cannot be instantiated directly.</li>
<li>:attr:<code>Parameter.name</code> is now <code>str</code> instead of
<code>str | None</code>.
When <code>expose_value=False</code>, the name is set to
<code>&quot;&quot;</code> instead
of <code>None</code>.</li>
<li>The <code>ctx</code> parameter of
:meth:<code>Parameter.get_error_hint</code> is now
typed as <code>Context | None</code>, matching the runtime
behavior.</li>
</ul>
</li>
<li>
<p>Split string values from <code>default_map</code> for parameters with
<code>nargs &gt; 1</code>
or :class:<code>Tuple</code> type, matching environment variable
behavior.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pallets/click/blob/main/CHANGES.rst">click's
changelog</a>.</em></p>
<blockquote>
<h2>Version 8.4.1</h2>
<p>Released 2026-05-21</p>
<ul>
<li><code>get_parameter_source()</code> is available during eager
callbacks and type
conversion again. :issue:<code>3458</code> :issue:<code>3484</code></li>
<li>Zsh completion scripts parse correctly on Windows.
:issue:<code>3277</code> :pr:<code>3466</code></li>
<li>Shell completion of <code>Choice</code> <code>Enum</code> values
produces a valid completion
result. :issue:<code>3015</code></li>
<li>Fix empty byte-string handling in echo.
:issue:<code>3487</code></li>
<li>Fix closed file error with <code>echo_via_pager</code>.
:issue:<code>3449</code></li>
</ul>
<h2>Version 8.4.0</h2>
<p>Released 2026-05-17</p>
<ul>
<li>
<p>:class:<code>ParamType</code> typing improvements.
:pr:<code>3371</code></p>
<ul>
<li>:class:<code>ParamType</code> is now a generic abstract base class,
parameterized by its converted value type.</li>
<li>:meth:<code>~ParamType.convert</code> return types are narrowed on
all
concrete types (<code>str</code> for :class:<code>STRING</code>,
<code>int</code> for
:class:<code>INT</code>, etc.).</li>
<li>:meth:<code>~ParamType.to_info_dict</code> returns specific
:class:<code>~typing.TypedDict</code> subclasses instead of
<code>dict[str, Any]</code>.</li>
<li>:class:<code>CompositeParamType</code> and the number-range base are
now
generic with abstract methods.</li>
</ul>
</li>
<li>
<p>Refactor <code>convert_type</code> to extract type inference into a
private
<code>_guess_type</code> helper, and add
:func:<code>typing.overload</code> signatures.
:pr:<code>3372</code></p>
</li>
<li>
<p>:class:<code>Parameter</code> typing improvements.
:pr:<code>2805</code></p>
<ul>
<li>:class:<code>Parameter</code> is now an abstract base class, making
explicit
that it cannot be instantiated directly.</li>
<li>:attr:<code>Parameter.name</code> is now <code>str</code> instead of
<code>str | None</code>.
When <code>expose_value=False</code>, the name is set to
<code>&quot;&quot;</code> instead
of <code>None</code>.</li>
<li>The <code>ctx</code> parameter of
:meth:<code>Parameter.get_error_hint</code> is now
typed as <code>Context | None</code>, matching the runtime
behavior.</li>
</ul>
</li>
<li>
<p>Split string values from <code>default_map</code> for parameters with
<code>nargs &gt; 1</code>
or :class:<code>Tuple</code> type, matching environment variable
behavior.
:issue:<code>2745</code> :pr:<code>3364</code></p>
</li>
<li>
<p>Auto-detect <code>type=UNPROCESSED</code> for <code>flag_value</code>
of non-basic types
(not <code>str</code>, <code>int</code>, <code>float</code>, or
<code>bool</code>), so programmer-provided
Python objects like classes and enum members are passed through
unchanged
instead of being stringified. Previously
<code>type=click.UNPROCESSED</code> had
to be set explicitly. :issue:<code>2012</code> :pr:<code>3363</code></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pallets/click/commit/6eeb50e948ea136db145280f6f5dd52eca3fa7e5"><code>6eeb50e</code></a>
release version 8.4.1</li>
<li><a
href="https://github.com/pallets/click/commit/67921d5b71584112eebcbf89596b5f0e6d14c49f"><code>67921d5</code></a>
change log and doc fixes (<a
href="https://redirect.github.com/pallets/click/issues/3495">#3495</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/9c41f46a4015700489ad009266edf1f3893d01d1"><code>9c41f46</code></a>
Fix changelog and version admonitions</li>
<li><a
href="https://github.com/pallets/click/commit/6cb34774f20598aa288332f8da02c5aee85448a6"><code>6cb3477</code></a>
fix skip condition</li>
<li><a
href="https://github.com/pallets/click/commit/5ee8e3123d8ddece6c47eff9a7a7d4ca478c4f37"><code>5ee8e31</code></a>
fix I/O operation on closed file error with CliRunner and echo_via_pager
(<a
href="https://redirect.github.com/pallets/click/issues/3482">#3482</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/becbde5cf416441627f779e8dd34e57738ee1c1f"><code>becbde5</code></a>
pager doesn't close std streams</li>
<li><a
href="https://github.com/pallets/click/commit/a5f5aa6d4012d256ccca24638f2642fc371e9f77"><code>a5f5aa6</code></a>
Handle empty bytes in echo (<a
href="https://redirect.github.com/pallets/click/issues/3493">#3493</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/4d3db84b251518e97299a38a5ca4bab3d01873a2"><code>4d3db84</code></a>
handle empty bytes in echo</li>
<li><a
href="https://github.com/pallets/click/commit/d42f15b71757de791a5781fb179fd972da9169f5"><code>d42f15b</code></a>
Fix <code>get_parameter_source()</code> during type conversion and eager
callbacks (<a
href="https://redirect.github.com/pallets/click/issues/3484">#3484</a>)</li>
<li><a
href="https://github.com/pallets/click/commit/0baa8db07736fc7ad3d3eed97d4c73b0059c63e1"><code>0baa8db</code></a>
Document ctx.params bypass with test and doc</li>
<li>Additional commits viewable in <a
href="https://github.com/pallets/click/compare/8.3.1...8.4.1">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
#12791)

**This is a backport of PR #12790 as merged into master
(4ef04d6).**

Co-authored-by: Sam Bull <git@sambull.org>
…ition in TCPConnector.close() (#12793)

**This is a backport of PR #12787 as merged into master
(4eb3588).**

---------

Co-authored-by: goingforstudying-ctrl <goingforstudying@gmail.com>
Co-authored-by: Sam Bull <git@sambull.org>
…ition in TCPConnector.close() (#12792)

**This is a backport of PR #12787 as merged into master
(4eb3588).**

---------

Co-authored-by: goingforstudying-ctrl <goingforstudying@gmail.com>
Co-authored-by: Sam Bull <git@sambull.org>
…cket rejection failing (#12800)

**This is a backport of PR #12796 as merged into master
(a927da1).**

---------

Co-authored-by: Sam Bull <git@sambull.org>
…cket rejection failing (#12799)

**This is a backport of PR #12796 as merged into master
(a927da1).**

---------

Co-authored-by: Sam Bull <git@sambull.org>
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from
8.1.0 to 8.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/setup-uv/releases">astral-sh/setup-uv's
releases</a>.</em></p>
<blockquote>
<h2>v8.2.0 🌈 New inputs <code>quiet</code> and
<code>download-from-astral-mirror</code></h2>
<h2>Changes</h2>
<p>This release brings two new inputs and a few bug fixes.</p>
<h3>New inputs</h3>
<p>Lets talk about the new inputs first.</p>
<h4>quiet</h4>
<p>Pretty simple. It turns of all <code>info</code> loggings. Useful if
you use this in a composite action and are not interested in all the
details.
In the upcoming releases we will add log groups to fully implement
support for &quot;less noise&quot;</p>
<blockquote>
<p>[!NOTE]<br />
Warnings and errors are always logged.</p>
</blockquote>
<h4>download-from-astral-mirror</h4>
<p>In some cases you may want to directly use the fallback of checking
for available versions and downloading releases from GitHub instead of
using the astral.sh mirror. Setting <code>download-from-astral-mirror:
false</code> allows you to do that.</p>
<h3>Bugfixes</h3>
<p>When using the astral.sh mirror to query available versions and
download releases (done by default) we now stop sending the GitHub token
in the header. The mirror never looked at it but we shouldn't be handing
out that data even if it is just a short lived token.
All other bugfixes try to limit the impact of failed GitHub queries due
to retries and other faults.</p>
<p>We couldn't pinpoint all rootcauses yet but added more logging for
error cases to track them down.</p>
<h2>🐛 Bug fixes</h2>
<ul>
<li>fix: report unexpected cache save failures <a
href="https://github.com/eifinger"><code>@​eifinger</code></a> (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/896">#896</a>)</li>
<li>fix: report unexpected setup failures <a
href="https://github.com/eifinger"><code>@​eifinger</code></a> (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/895">#895</a>)</li>
<li>fix: add timeout to fetch to prevent silent hangs <a
href="https://github.com/eifinger-bot"><code>@​eifinger-bot</code></a>
(<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/883">#883</a>)</li>
<li>Limit GitHub tokens to github.com download URLs <a
href="https://github.com/zsol"><code>@​zsol</code></a> (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/878">#878</a>)</li>
<li>increase libuv-workaround timeout to 100ms <a
href="https://github.com/eifinger"><code>@​eifinger</code></a> (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/880">#880</a>)</li>
</ul>
<h2>🚀 Enhancements</h2>
<ul>
<li>Add quiet input to suppress info-level log output <a
href="https://github.com/eifinger"><code>@​eifinger</code></a> (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/898">#898</a>)</li>
<li>feat: add <code>download-from-astral-mirror</code> input <a
href="https://github.com/eifinger"><code>@​eifinger</code></a> (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/897">#897</a>)</li>
</ul>
<h2>🧰 Maintenance</h2>
<ul>
<li>docs: update dependabot rollup biome guidance <a
href="https://github.com/eifinger"><code>@​eifinger</code></a> (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/902">#902</a>)</li>
<li>chore: update known checksums for 0.11.18 @<a
href="https://github.com/apps/github-actions">github-actions[bot]</a>
(<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/899">#899</a>)</li>
<li>chore: update known checksums for 0.11.17 @<a
href="https://github.com/apps/github-actions">github-actions[bot]</a>
(<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/892">#892</a>)</li>
<li>chore: update known checksums for 0.11.16 @<a
href="https://github.com/apps/github-actions">github-actions[bot]</a>
(<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/889">#889</a>)</li>
<li>chore: update known checksums for 0.11.15 @<a
href="https://github.com/apps/github-actions">github-actions[bot]</a>
(<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/885">#885</a>)</li>
<li>chore: update known checksums for 0.11.14 @<a
href="https://github.com/apps/github-actions">github-actions[bot]</a>
(<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/879">#879</a>)</li>
<li>chore: update known checksums for 0.11.13 @<a
href="https://github.com/apps/github-actions">github-actions[bot]</a>
(<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/877">#877</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/setup-uv/commit/fac544c07dec837d0ccb6301d7b5580bf5edae39"><code>fac544c</code></a>
chore(deps): roll up dependabot updates (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/903">#903</a>)</li>
<li><a
href="https://github.com/astral-sh/setup-uv/commit/7390f777b051d6c47c9cb905ff80e7d5d85a7068"><code>7390f77</code></a>
docs: update dependabot rollup biome guidance (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/902">#902</a>)</li>
<li><a
href="https://github.com/astral-sh/setup-uv/commit/363c64a728451954156ddb9e3f368b879eeee5da"><code>363c64a</code></a>
chore(deps): roll up dependabot updates (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/901">#901</a>)</li>
<li><a
href="https://github.com/astral-sh/setup-uv/commit/c4fcbafce4f941a09e04c45c42db7a2e3ba5cd91"><code>c4fcbaf</code></a>
chore(deps): bump release-drafter/release-drafter from 7.3.0 to 7.3.1
(<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/900">#900</a>)</li>
<li><a
href="https://github.com/astral-sh/setup-uv/commit/8e642c5e623b521f8b6b15bbc2ba54bae583fe45"><code>8e642c5</code></a>
chore: update known checksums for 0.11.18 (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/899">#899</a>)</li>
<li><a
href="https://github.com/astral-sh/setup-uv/commit/a92cb430984b4b2b34c9c47e020cf035089958fa"><code>a92cb43</code></a>
Add quiet input to suppress info-level log output (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/898">#898</a>)</li>
<li><a
href="https://github.com/astral-sh/setup-uv/commit/e07f2ac4b796a5fa8dc51ebf0a5187d0463eb4d6"><code>e07f2ac</code></a>
chore(deps): bump eifinger/actionlint-action from 1.10.1 to 1.10.2 (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/842">#842</a>)</li>
<li><a
href="https://github.com/astral-sh/setup-uv/commit/bc4034eedf3a6f77238660a28089c6b201eae39f"><code>bc4034e</code></a>
chore(deps): bump github/codeql-action from 4.35.4 to 4.36.0 (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/893">#893</a>)</li>
<li><a
href="https://github.com/astral-sh/setup-uv/commit/df42d4f6ba41cdcf6eda832c32439db37cc28b39"><code>df42d4f</code></a>
chore(deps): bump zizmorcore/zizmor-action from 0.5.5 to 0.5.6 (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/891">#891</a>)</li>
<li><a
href="https://github.com/astral-sh/setup-uv/commit/b9c8c4c7baf912cbda30843477d08b3f63b0f660"><code>b9c8c4c</code></a>
feat: add <code>download-from-astral-mirror</code> input (<a
href="https://redirect.github.com/astral-sh/setup-uv/issues/897">#897</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/setup-uv/compare/v8.1.0...v8.2.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=astral-sh/setup-uv&package-manager=github_actions&previous-version=8.1.0&new-version=8.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 [snowballstemmer](https://github.com/snowballstem/snowball) from
3.1.0 to 3.1.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/snowballstem/snowball/blob/main/NEWS">snowballstemmer's
changelog</a>.</em></p>
<blockquote>
<h1>Snowball 3.1.1 (2026-06-03)</h1>
<h2>Compiler changes</h2>
<ul>
<li>
<p>Bug fixes:</p>
<ul>
<li>Fix a segmentation fault after reporting an error for a string
command
not followed by a string variable name or string literal. Bug introduced
in 3.1.0. Patch from Jerry James (<a
href="https://redirect.github.com/snowballstem/snowball/issues/287">#287</a>).</li>
</ul>
</li>
<li>
<p>Compiler command-line options:</p>
<ul>
<li>Emit an error for <code>-o -</code>/<code>-output -</code>. Output
to stdout is not supported
because we need to generate multiple files for some target languages.
We were interpreting <code>-</code> as a base filename to append
extensions to, so
we'd create <code>-.c</code> and <code>-.h</code> for C, but creating
filenames that start with
<code>-</code> seems unhelpful.</li>
</ul>
</li>
</ul>
<h2>Generic code generation changes</h2>
<ul>
<li>
<p>Bug fixes:</p>
<ul>
<li>Variable localisation was failing to check the expression on the RHS
of an
integer test for uses of a variable, so could incorrectly localise an
integer variable whose value should have persisted between calls to a
function.  This bug won't realistically manifest in real world Snowball
code.</li>
</ul>
</li>
<li>
<p>Optimisations:</p>
<ul>
<li>
<p>Inline some routines which are only used once. This is done for
routines
consisting of a single non-compound command (or cases such as <code>not
&lt;boolean&gt;</code> and <code>goto &lt;grouping&gt;</code> which we
internally synthesise a
non-compound command for).  Localisation of variables happens after
inlining, so variables can now be localised in more cases.</p>
</li>
<li>
<p><code>test next</code> and <code>not next</code> are both now
simplified to a comparison between
<code>cursor</code> and <code>limit</code> (like <code>not
atlimit</code> and <code>atlimit</code>). We already
normalise <code>hop 1</code> to <code>next</code>, so <code>test hop
1</code> and <code>not hop 1</code> are also
simplified in this way.</p>
</li>
<li>
<p>Simplify <code>not</code> applied to an integer test by removing the
<code>not</code> and
flipping the sense of the test (e.g. <code>not $(x &gt; y)</code>
becomes <code>$(x &lt;= y)</code>)
which results in simpler generated code. More usefully in real world
code,
this also results in simpler generated code for <code>not atlimit</code>
(since
<code>atlimit</code> is converted <code>$(cursor &gt;= limit)</code> or
<code>$(cursor &lt;= limit)</code>
(depending on the current direction).</p>
</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/snowballstem/snowball/commit/cd195b51e948a902a4312f023f4a14392516a543"><code>cd195b5</code></a>
Update for 3.1.1</li>
<li><a
href="https://github.com/snowballstem/snowball/commit/80d885c983019967339bbea003e0a8f724ba0f58"><code>80d885c</code></a>
NEWS: Update draft entry</li>
<li><a
href="https://github.com/snowballstem/snowball/commit/5346c74eaedfdd9495ccc8afd5d6957da9e95258"><code>5346c74</code></a>
C++: Compile runtime as C++</li>
<li><a
href="https://github.com/snowballstem/snowball/commit/537f9702e635f8dad03441775aebe53565492ed7"><code>537f970</code></a>
python: Add classifier for 3.14</li>
<li><a
href="https://github.com/snowballstem/snowball/commit/3aeb013c9ffd2f2df15c6ef9cc956a7f825e4fd2"><code>3aeb013</code></a>
python: Skip Natural Language :: Sesotho classifier</li>
<li><a
href="https://github.com/snowballstem/snowball/commit/91fa20b842db0f422ea02d26d59f518dbae72c63"><code>91fa20b</code></a>
NEWS: Update draft entry</li>
<li><a
href="https://github.com/snowballstem/snowball/commit/a04abeb4f95eed8757b5107694fa0424c7026a79"><code>a04abeb</code></a>
Don't use extern &quot;C&quot; for functions which can throw</li>
<li><a
href="https://github.com/snowballstem/snowball/commit/49bb623cb9b0ca05267d939c2e2f56c10b63dc6c"><code>49bb623</code></a>
C++: Hook up properly</li>
<li><a
href="https://github.com/snowballstem/snowball/commit/7ab50ed5f4ed99f08d897100633345e488e07a05"><code>7ab50ed</code></a>
CI: Fix coverage job</li>
<li><a
href="https://github.com/snowballstem/snowball/commit/5f0a33cc278f0973f5c987fdcf8aa1d1afa6ba95"><code>5f0a33c</code></a>
NEWS: Add draft entry</li>
<li>Additional commits viewable in <a
href="https://github.com/snowballstem/snowball/compare/v3.1.0...v3.1.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=snowballstemmer&package-manager=pip&previous-version=3.1.0&new-version=3.1.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>
…ject.toml" (#12811)

Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <sviat@redhat.com>
…ject.toml" (#12810)

Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <sviat@redhat.com>
**This is a backport of PR #12817 as merged into master
(69344c6).**

Co-authored-by: Sam Bull <git@sambull.org>
**This is a backport of PR #12817 as merged into master
(69344c6).**

Co-authored-by: Sam Bull <git@sambull.org>
… chunk-size lines in pure-Python parser (#12852)

Co-authored-by: J. Nick Koston <nick@koston.org>
… chunk-size lines in pure-Python parser (#12851)

Co-authored-by: J. Nick Koston <nick@koston.org>
…tials to the request origin (#12840)

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
…tials to the request origin (#12839)

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
bdraco and others added 21 commits June 7, 2026 00:31
Co-authored-by: J. Nick Koston <nick@koston.org>
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.29.0 to
3.29.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tox-dev/py-filelock/releases">filelock's
releases</a>.</em></p>
<blockquote>
<h2>3.29.1</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<ul>
<li>docs: fix API docs of <code>release()</code> by <a
href="https://github.com/MrAnno"><code>@​MrAnno</code></a> in <a
href="https://redirect.github.com/tox-dev/filelock/pull/540">tox-dev/filelock#540</a></li>
<li>docs: clarify per-thread scope of FileLock configuration by <a
href="https://github.com/Gares95"><code>@​Gares95</code></a> in <a
href="https://redirect.github.com/tox-dev/filelock/pull/543">tox-dev/filelock#543</a></li>
<li>chore: improve filelock maintenance path by <a
href="https://github.com/lphuc2250gma"><code>@​lphuc2250gma</code></a>
in <a
href="https://redirect.github.com/tox-dev/filelock/pull/542">tox-dev/filelock#542</a></li>
<li>chore: improve filelock maintenance path by <a
href="https://github.com/lphuc2250gma"><code>@​lphuc2250gma</code></a>
in <a
href="https://redirect.github.com/tox-dev/filelock/pull/544">tox-dev/filelock#544</a></li>
<li>chore: improve filelock maintenance path by <a
href="https://github.com/lphuc2250gma"><code>@​lphuc2250gma</code></a>
in <a
href="https://redirect.github.com/tox-dev/filelock/pull/545">tox-dev/filelock#545</a></li>
<li>🐛 fix(soft): refuse to follow symlinks when reading the lock file by
<a href="https://github.com/dxbjavid"><code>@​dxbjavid</code></a> in <a
href="https://redirect.github.com/tox-dev/filelock/pull/548">tox-dev/filelock#548</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/MrAnno"><code>@​MrAnno</code></a> made
their first contribution in <a
href="https://redirect.github.com/tox-dev/filelock/pull/540">tox-dev/filelock#540</a></li>
<li><a href="https://github.com/Gares95"><code>@​Gares95</code></a> made
their first contribution in <a
href="https://redirect.github.com/tox-dev/filelock/pull/543">tox-dev/filelock#543</a></li>
<li><a
href="https://github.com/lphuc2250gma"><code>@​lphuc2250gma</code></a>
made their first contribution in <a
href="https://redirect.github.com/tox-dev/filelock/pull/542">tox-dev/filelock#542</a></li>
<li><a href="https://github.com/dxbjavid"><code>@​dxbjavid</code></a>
made their first contribution in <a
href="https://redirect.github.com/tox-dev/filelock/pull/548">tox-dev/filelock#548</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/tox-dev/filelock/compare/3.29.0...3.29.1">https://github.com/tox-dev/filelock/compare/3.29.0...3.29.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst">filelock's
changelog</a>.</em></p>
<blockquote>
<p>###########
Changelog
###########</p>
<hr />
<p>3.29.1 (2026-06-03)</p>
<hr />
<ul>
<li>🐛 fix(soft): refuse to follow symlinks when reading the lock file
:pr:<code>548</code> - by :user:<code>dxbjavid</code></li>
<li>[pre-commit.ci] pre-commit autoupdate :pr:<code>547</code> - by
:user:<code>pre-commit-ci[bot]</code></li>
<li>[pre-commit.ci] pre-commit autoupdate :pr:<code>546</code> - by
:user:<code>pre-commit-ci[bot]</code></li>
<li>chore: improve filelock maintenance path :pr:<code>545</code> - by
:user:<code>lphuc2250gma</code></li>
<li>chore: improve filelock maintenance path :pr:<code>544</code> - by
:user:<code>lphuc2250gma</code></li>
<li>chore: improve filelock maintenance path :pr:<code>542</code> - by
:user:<code>lphuc2250gma</code></li>
<li>docs: clarify per-thread scope of FileLock configuration
:pr:<code>543</code> - by :user:<code>Gares95</code></li>
<li>[pre-commit.ci] pre-commit autoupdate :pr:<code>541</code> - by
:user:<code>pre-commit-ci[bot]</code></li>
<li>docs: fix API docs of <code>release()</code> :pr:<code>540</code> -
by :user:<code>MrAnno</code></li>
<li>[pre-commit.ci] pre-commit autoupdate :pr:<code>539</code> - by
:user:<code>pre-commit-ci[bot]</code></li>
<li>[pre-commit.ci] pre-commit autoupdate :pr:<code>538</code> - by
:user:<code>pre-commit-ci[bot]</code></li>
<li>[pre-commit.ci] pre-commit autoupdate :pr:<code>537</code> - by
:user:<code>pre-commit-ci[bot]</code></li>
<li>build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0
:pr:<code>536</code> - by :user:<code>dependabot[bot]</code></li>
<li>[pre-commit.ci] pre-commit autoupdate :pr:<code>535</code> - by
:user:<code>pre-commit-ci[bot]</code></li>
</ul>
<hr />
<p>3.29.0 (2026-04-19)</p>
<hr />
<ul>
<li>✨ feat(soft): enable stale lock detection on Windows
:pr:<code>534</code></li>
<li>🐛 fix(async): use single-thread executor for lock consistency
:pr:<code>533</code></li>
<li>build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1
:pr:<code>530</code> - by :user:<code>dependabot[bot]</code></li>
</ul>
<hr />
<p>3.28.0 (2026-04-14)</p>
<hr />
<ul>
<li>🐛 fix(ci): unbreak release workflow, publish to PyPI again
:pr:<code>529</code></li>
</ul>
<hr />
<p>3.26.1 (2026-04-09)</p>
<hr />
<ul>
<li>🐛 fix(asyncio): add <strong>exit</strong> to BaseAsyncFileLock and
fix <strong>del</strong> loop handling :pr:<code>518</code> - by
:user:<code>naarob</code></li>
<li>build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0
:pr:<code>525</code> - by :user:<code>dependabot[bot]</code></li>
</ul>
<hr />
<p>3.26.0 (2026-04-06)</p>
<hr />
<ul>
<li>✨ feat(soft): add PID inspection and lock breaking
:pr:<code>524</code></li>
<li>[pre-commit.ci] pre-commit autoupdate :pr:<code>523</code> - by
:user:<code>pre-commit-ci[bot]</code></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tox-dev/filelock/commit/438b6fe991411a104a01baa543a9466c73f1fc79"><code>438b6fe</code></a>
Release 3.29.1</li>
<li><a
href="https://github.com/tox-dev/filelock/commit/bfbfa76c1b5069a7af1cbcddafe22fbf3f1a1aae"><code>bfbfa76</code></a>
🐛 fix(soft): refuse to follow symlinks when reading the lock file (<a
href="https://redirect.github.com/tox-dev/py-filelock/issues/548">#548</a>)</li>
<li><a
href="https://github.com/tox-dev/filelock/commit/c51a72cb4913a1e451f892d238b81e39f4f64340"><code>c51a72c</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/tox-dev/py-filelock/issues/547">#547</a>)</li>
<li><a
href="https://github.com/tox-dev/filelock/commit/cc05fd7f91030bc7f93c1467e3d7fbd3d401d624"><code>cc05fd7</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/tox-dev/py-filelock/issues/546">#546</a>)</li>
<li><a
href="https://github.com/tox-dev/filelock/commit/cb947e58c22d8f352abe8ae02078596eeb33fd2f"><code>cb947e5</code></a>
chore: improve filelock maintenance path (<a
href="https://redirect.github.com/tox-dev/py-filelock/issues/545">#545</a>)</li>
<li><a
href="https://github.com/tox-dev/filelock/commit/e087ca9d94091336c4256f3a6794b5dfed9595e4"><code>e087ca9</code></a>
chore: improve filelock maintenance path (<a
href="https://redirect.github.com/tox-dev/py-filelock/issues/544">#544</a>)</li>
<li><a
href="https://github.com/tox-dev/filelock/commit/f9dd949b1976c9d124e9cd6b15102bfb8340ba4d"><code>f9dd949</code></a>
chore: improve filelock maintenance path (<a
href="https://redirect.github.com/tox-dev/py-filelock/issues/542">#542</a>)</li>
<li><a
href="https://github.com/tox-dev/filelock/commit/9200f1f53d924d6425cc663af03f9835bf53382a"><code>9200f1f</code></a>
docs: clarify per-thread scope of FileLock configuration (<a
href="https://redirect.github.com/tox-dev/py-filelock/issues/543">#543</a>)</li>
<li><a
href="https://github.com/tox-dev/filelock/commit/9d8985fc953d1301a56a74bc58d8a6b580bce5fa"><code>9d8985f</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/tox-dev/py-filelock/issues/541">#541</a>)</li>
<li><a
href="https://github.com/tox-dev/filelock/commit/7d1f48ccef189397896e55e4121d0fa74edb3be2"><code>7d1f48c</code></a>
docs: fix API docs of <code>release()</code> (<a
href="https://redirect.github.com/tox-dev/py-filelock/issues/540">#540</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/tox-dev/py-filelock/compare/3.29.0...3.29.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=filelock&package-manager=pip&previous-version=3.29.0&new-version=3.29.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>
**This is a backport of PR #12857 as merged into master
(69dff14).**

Co-authored-by: Sam Bull <git@sambull.org>
**This is a backport of PR #12857 as merged into master
(69dff14).**

Co-authored-by: Sam Bull <git@sambull.org>
…2857)" (#12863)

**This is a backport of PR #12861 as merged into master
(59684b5).**

Co-authored-by: Sam Bull <git@sambull.org>
…2857)" (#12862)

**This is a backport of PR #12861 as merged into master
(59684b5).**

Co-authored-by: Sam Bull <git@sambull.org>
@pull pull Bot locked and limited conversation to collaborators Jun 7, 2026
@pull pull Bot added the ⤵️ pull label Jun 7, 2026
@pull pull Bot merged commit d559f11 into tj-python:master Jun 7, 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.

2 participants