dependabot[bot] opened a new pull request, #67008:
URL: https://github.com/apache/airflow/pull/67008

   Updates the requirements on 
[filelock](https://github.com/tox-dev/py-filelock), 
[packaging](https://github.com/pypa/packaging), 
[pathspec](https://github.com/cpburnz/python-pathspec), 
[trove-classifiers](https://github.com/pypa/trove-classifiers), 
[virtualenv](https://github.com/pypa/virtualenv), 
[pytest](https://github.com/pytest-dev/pytest), 
[click](https://github.com/pallets/click), 
[jinja2](https://github.com/pallets/jinja), 
[requests](https://github.com/psf/requests) and 
[python-on-whales](https://github.com/gabrieldemarmiesse/python-on-whales) to 
permit the latest version.
   Updates `filelock` from 3.25.2 to 3.29.0
   <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.0</h2>
   <!-- raw HTML omitted -->
   <h2>What's Changed</h2>
   <ul>
   <li>🐛 fix(async): use single-thread executor for lock consistency by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/tox-dev/filelock/pull/533";>tox-dev/filelock#533</a></li>
   <li>✨ feat(soft): enable stale lock detection on Windows by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/tox-dev/filelock/pull/534";>tox-dev/filelock#534</a></li>
   </ul>
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/tox-dev/filelock/compare/3.28.0...3.29.0";>https://github.com/tox-dev/filelock/compare/3.28.0...3.29.0</a></p>
   <h2>3.28.0</h2>
   <!-- raw HTML omitted -->
   <h2>What's Changed</h2>
   <ul>
   <li>🐛 fix(ci): unbreak release workflow, publish to PyPI again by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/tox-dev/filelock/pull/529";>tox-dev/filelock#529</a></li>
   </ul>
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/tox-dev/filelock/compare/3.27.0...3.28.0";>https://github.com/tox-dev/filelock/compare/3.27.0...3.28.0</a></p>
   <h2>3.27.0</h2>
   <!-- raw HTML omitted -->
   <h2>What's Changed</h2>
   <ul>
   <li>✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/tox-dev/filelock/pull/528";>tox-dev/filelock#528</a></li>
   </ul>
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/tox-dev/filelock/compare/3.26.1...3.27.0";>https://github.com/tox-dev/filelock/compare/3.26.1...3.27.0</a></p>
   <h2>3.26.1</h2>
   <!-- raw HTML omitted -->
   <h2>What's Changed</h2>
   <ul>
   <li>🐛 fix(asyncio): add <strong>exit</strong> to BaseAsyncFileLock and fix 
<strong>del</strong> loop handling by <a 
href="https://github.com/naarob";><code>@​naarob</code></a> in <a 
href="https://redirect.github.com/tox-dev/filelock/pull/518";>tox-dev/filelock#518</a></li>
   </ul>
   <h2>New Contributors</h2>
   <ul>
   <li><a href="https://github.com/naarob";><code>@​naarob</code></a> made their 
first contribution in <a 
href="https://redirect.github.com/tox-dev/filelock/pull/518";>tox-dev/filelock#518</a></li>
   </ul>
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/tox-dev/filelock/compare/3.26.0...3.26.1";>https://github.com/tox-dev/filelock/compare/3.26.0...3.26.1</a></p>
   <h2>3.26.0</h2>
   <!-- raw HTML omitted -->
   <h2>What's Changed</h2>
   <ul>
   <li>🔒 ci(workflows): add zizmor security auditing by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/tox-dev/filelock/pull/517";>tox-dev/filelock#517</a></li>
   <li>🔧 fix(ci): restore git credentials for release job by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/tox-dev/filelock/pull/520";>tox-dev/filelock#520</a></li>
   <li>✨ feat(soft): add PID inspection and lock breaking by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/tox-dev/filelock/pull/524";>tox-dev/filelock#524</a></li>
   </ul>
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/tox-dev/filelock/compare/3.25.2...3.26.0";>https://github.com/tox-dev/filelock/compare/3.25.2...3.26.0</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.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>
   <li>build(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 
:pr:<code>522</code> - by :user:<code>dependabot[bot]</code></li>
   <li>Remove persist-credentials: false from release job 
:pr:<code>520</code></li>
   <li>[pre-commit.ci] pre-commit autoupdate :pr:<code>519</code> - by 
:user:<code>pre-commit-ci[bot]</code></li>
   <li>🔒 ci(workflows): add zizmor security auditing :pr:<code>517</code></li>
   <li>[pre-commit.ci] pre-commit autoupdate :pr:<code>516</code> - by 
:user:<code>pre-commit-ci[bot]</code></li>
   <li>[pre-commit.ci] pre-commit autoupdate :pr:<code>514</code> - by 
:user:<code>pre-commit-ci[bot]</code></li>
   </ul>
   <hr />
   <p>3.25.2 (2026-03-11)</p>
   <hr />
   <ul>
   <li>🐛 fix(unix): suppress EIO on close in Docker bind mounts 
:pr:<code>513</code></li>
   </ul>
   <hr />
   <p>3.25.1 (2026-03-09)</p>
   <hr />
   <ul>
   <li>[pre-commit.ci] pre-commit autoupdate :pr:<code>510</code> - by 
:user:<code>pre-commit-ci[bot]</code></li>
   <li>🐛 fix(win): restore best-effort lock file cleanup on release 
:pr:<code>511</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/469b47f192b0a9f8c8b795d9b9f57212c716959b";><code>469b47f</code></a>
 Release 3.29.0</li>
   <li><a 
href="https://github.com/tox-dev/filelock/commit/e85d07281987e0855ba67c03dfdef342ec1097d5";><code>e85d072</code></a>
 ✨ feat(soft): enable stale lock detection on Windows (<a 
href="https://redirect.github.com/tox-dev/py-filelock/issues/534";>#534</a>)</li>
   <li><a 
href="https://github.com/tox-dev/filelock/commit/f5ee1712ced6916b2768812ee378183319339944";><code>f5ee171</code></a>
 🐛 fix(async): use single-thread executor for lock consistency (<a 
href="https://redirect.github.com/tox-dev/py-filelock/issues/533";>#533</a>)</li>
   <li><a 
href="https://github.com/tox-dev/filelock/commit/2a954588cdf462a786835eeb102240ce79fecc8b";><code>2a95458</code></a>
 build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (<a 
href="https://redirect.github.com/tox-dev/py-filelock/issues/530";>#530</a>)</li>
   <li><a 
href="https://github.com/tox-dev/filelock/commit/55de20c0819652362881906fa289feff5a323c19";><code>55de20c</code></a>
 Release 3.28.0</li>
   <li><a 
href="https://github.com/tox-dev/filelock/commit/476b0e4a92776fe530b5d993247342f039004174";><code>476b0e4</code></a>
 🐛 fix(ci): unbreak release workflow, publish to PyPI again (<a 
href="https://redirect.github.com/tox-dev/py-filelock/issues/529";>#529</a>)</li>
   <li><a 
href="https://github.com/tox-dev/filelock/commit/824713edc32b54efd66566907f97c1238502810e";><code>824713e</code></a>
 ✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters (<a 
href="https://redirect.github.com/tox-dev/py-filelock/issues/528";>#528</a>)</li>
   <li><a 
href="https://github.com/tox-dev/filelock/commit/9879de9298db93ffba0a9f58d9de75e9e2a00fc1";><code>9879de9</code></a>
 [pre-commit.ci] pre-commit autoupdate (<a 
href="https://redirect.github.com/tox-dev/py-filelock/issues/527";>#527</a>)</li>
   <li><a 
href="https://github.com/tox-dev/filelock/commit/4cfab498b6916f89be46152efa4a72e9731be98f";><code>4cfab49</code></a>
 Release 3.26.1</li>
   <li><a 
href="https://github.com/tox-dev/filelock/commit/734c9f26e8107ad24886129fc68865f0b46cf71f";><code>734c9f2</code></a>
 🐛 fix(asyncio): add <strong>exit</strong> to BaseAsyncFileLock and fix 
<strong>del</strong> loop handli...</li>
   <li>Additional commits viewable in <a 
href="https://github.com/tox-dev/py-filelock/compare/3.25.2...3.29.0";>compare 
view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `packaging` from 26.0 to 26.2
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/pypa/packaging/releases";>packaging's 
releases</a>.</em></p>
   <blockquote>
   <h2>26.2</h2>
   <h2>What's Changed</h2>
   <p>Fixes:</p>
   <ul>
   <li>Fix incorrect sysconfig var name for pyemscripten by <a 
href="https://github.com/ryanking13";><code>@​ryanking13</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1160";>pypa/packaging#1160</a></li>
   <li>Make <code>Version</code>, <code>Specifier</code>, 
<code>SpecifierSet</code>, <code>Tag</code>, <code>Marker</code>, and 
<code>Requirement</code> pickle-safe
   and backward-compatible with pickles created in 25.0-26.1 (including 
references to the removed
   <code>packaging._structures</code> module) by <a 
href="https://github.com/eachimei";><code>@​eachimei</code></a> and <a 
href="https://github.com/henryiii";><code>@​henryiii</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1163";>pypa/packaging#1163</a>,
 <a 
href="https://redirect.github.com/pypa/packaging/pull/1168";>pypa/packaging#1168</a>,
 <a 
href="https://redirect.github.com/pypa/packaging/pull/1170";>pypa/packaging#1170</a>,
 and <a 
href="https://redirect.github.com/pypa/packaging/pull/1171";>pypa/packaging#1171</a></li>
   <li>fix: re-export ExceptionGroup for now by <a 
href="https://github.com/henryiii";><code>@​henryiii</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1164";>pypa/packaging#1164</a></li>
   </ul>
   <p>Documentation:</p>
   <ul>
   <li>docs: add errors section and fix missing details by <a 
href="https://github.com/henryiii";><code>@​henryiii</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1159";>pypa/packaging#1159</a></li>
   <li>docs(dev): document property-based test suite by <a 
href="https://github.com/r266-tech";><code>@​r266-tech</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1167";>pypa/packaging#1167</a></li>
   <li>Fix typo in DirectUrl documentation by <a 
href="https://github.com/sbidoul";><code>@​sbidoul</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1169";>pypa/packaging#1169</a></li>
   <li>docs(specifiers): add is_unsatisfiable() usage example by <a 
href="https://github.com/r266-tech";><code>@​r266-tech</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1166";>pypa/packaging#1166</a></li>
   </ul>
   <p>Internal:</p>
   <ul>
   <li>Enable the auditor persona on zizmor by <a 
href="https://github.com/henryiii";><code>@​henryiii</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1158";>pypa/packaging#1158</a></li>
   <li>Test new pickle guarantees by <a 
href="https://github.com/henryiii";><code>@​henryiii</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1174";>pypa/packaging#1174</a></li>
   <li>Use native uv integration in rtd by <a 
href="https://github.com/henryiii";><code>@​henryiii</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1175";>pypa/packaging#1175</a></li>
   </ul>
   <h2>New Contributors</h2>
   <ul>
   <li><a href="https://github.com/ryanking13";><code>@​ryanking13</code></a> 
made their first contribution in <a 
href="https://redirect.github.com/pypa/packaging/pull/1160";>pypa/packaging#1160</a></li>
   <li><a href="https://github.com/eachimei";><code>@​eachimei</code></a> made 
their first contribution in <a 
href="https://redirect.github.com/pypa/packaging/pull/1163";>pypa/packaging#1163</a></li>
   </ul>
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/pypa/packaging/compare/26.1...26.2";>https://github.com/pypa/packaging/compare/26.1...26.2</a></p>
   <h2>26.1</h2>
   <p>Features:</p>
   <ul>
   <li><del>PEP 783: add handling for Emscripten wheel tags by <a 
href="https://github.com/hoodmane";><code>@​hoodmane</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/804";>pypa/packaging#804</a></del>
 (old name used in implementation, will be fixed in next release)</li>
   <li>PEP 803: add handling for the <code>abi3.abi3t</code> free-threading tag 
by <a href="https://github.com/ngoldbaum";><code>@​ngoldbaum</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1099";>pypa/packaging#1099</a></li>
   <li>PEP 723: add <code>packaging.dependency_groups</code> module, based on 
the <code>dependency-groups</code> package by <a 
href="https://github.com/sirosen";><code>@​sirosen</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1065";>pypa/packaging#1065</a></li>
   <li>Add the <code>packaging.direct_url</code> module by <a 
href="https://github.com/sbidoul";><code>@​sbidoul</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/944";>pypa/packaging#944</a></li>
   <li>Add the <code>packaging.errors</code> module by <a 
href="https://github.com/henryiii";><code>@​henryiii</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1071";>pypa/packaging#1071</a></li>
   <li>Add <code>SpecifierSet.is_unsatisfiable</code> using ranges (new 
internals that will be expanded in future versions) by <a 
href="https://github.com/notatallshaw";><code>@​notatallshaw</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1119";>pypa/packaging#1119</a></li>
   <li>Add <code>create_compatible_tags_selector</code> to select compatible 
tags by <a href="https://github.com/sbidoul";><code>@​sbidoul</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1110";>pypa/packaging#1110</a></li>
   <li>Add a <code>key</code> argument to <code>SpecifierSet.filter()</code> by 
<a href="https://github.com/frostming";><code>@​frostming</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1068";>pypa/packaging#1068</a></li>
   <li>Support <code>&amp;</code> and <code>|</code> for <code>Marker</code>'s 
by <a href="https://github.com/henryiii";><code>@​henryiii</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1146";>pypa/packaging#1146</a></li>
   <li>Normalize <code>Version.__replace__</code> and add 
<code>Version.from_parts</code> by <a 
href="https://github.com/henryiii";><code>@​henryiii</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1078";>pypa/packaging#1078</a></li>
   <li>Add an option to validate compressed tag set sort order in 
<code>parse_wheel_filename</code> by <a 
href="https://github.com/r266-tech";><code>@​r266-tech</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1150";>pypa/packaging#1150</a></li>
   </ul>
   <p>Behavior adaptations:</p>
   <ul>
   <li>Narrow exclusion of pre-releases for <code>&lt;V.postN</code> to match 
spec by <a 
href="https://github.com/notatallshaw";><code>@​notatallshaw</code></a> in <a 
href="https://redirect.github.com/pypa/packaging/pull/1140";>pypa/packaging#1140</a></li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/pypa/packaging/blob/main/CHANGELOG.rst";>packaging's 
changelog</a>.</em></p>
   <blockquote>
   <p>26.2 - 2026-04-24</p>
   <pre><code>
   Fixes:
   <ul>
   <li>Fix incorrect sysconfig var name for pyemscripten in 
(:pull:<code>1160</code>)</li>
   <li>Make <code>Version</code>, <code>Specifier</code>, 
<code>SpecifierSet</code>, <code>Tag</code>, <code>Marker</code>, and 
<code>Requirement</code> pickle-safe<br />
   and backward-compatible with pickles created in 25.0-26.1 (including 
references to the removed<br />
   <code>packaging._structures</code> module) (:pull:<code>1163</code>, 
:pull:<code>1168</code>, :pull:<code>1170</code>, :pull:<code>1171</code>)</li>
   <li>Re-export <code>ExceptionGroup</code> in metadata for now in 
(:pull:<code>1164</code>)</li>
   </ul>
   <p>Documentation:</p>
   <ul>
   <li>Add errors section and fix missing details in 
(:pull:<code>1159</code>)</li>
   <li>Document our property-based test suite in (:pull:<code>1167</code>)</li>
   <li>Fix a <code>DirectUrl</code> typo in (:pull:<code>1169</code>)</li>
   <li>Add example of <code>is_unsatisfiable</code> in 
(:pull:<code>1166</code>)</li>
   </ul>
   <p>Internal:</p>
   <ul>
   <li>Enable the auditor persona on zizmor in (:pull:<code>1158</code>)</li>
   <li>Test new pickle guarantees in (:pull:<code>1174</code>)</li>
   <li>Use new native ReadTheDocs uv integration in 
(:pull:<code>1175</code>)</li>
   </ul>
   <p>26.1 - 2026-04-14<br />
   </code></pre></p>
   <p>Features:</p>
   <ul>
   <li>PEP 783: add handling for Emscripten wheel tags in 
(:pull:<code>804</code>) (old name used in implementation, fixed in next 
release)</li>
   <li>PEP 803: add handling for the <code>abi3.abi3t</code> free-threading tag 
in (:pull:<code>1099</code>)</li>
   <li>PEP 723: add <code>packaging.dependency_groups</code> module, based on 
the <code>dependency-groups</code> package in (:pull:<code>1065</code>)</li>
   <li>Add the <code>packaging.direct_url</code> module in 
(:pull:<code>944</code>)</li>
   <li>Add the <code>packaging.errors</code> module in 
(:pull:<code>1071</code>)</li>
   <li>Add <code>SpecifierSet.is_unsatisfiable</code> using ranges (new 
internals that will be expanded in future versions) in 
(:pull:<code>1119</code>)</li>
   <li>Add <code>create_compatible_tags_selector</code> to select compatible 
tags in (:pull:<code>1110</code>)</li>
   <li>Add a <code>key</code> argument to <code>SpecifierSet.filter()</code> in 
(:pull:<code>1068</code>)</li>
   <li>Support <code>&amp;</code> and <code>|</code> for <code>Marker</code>'s 
in (:pull:<code>1146</code>)</li>
   <li>Normalize <code>Version.__replace__</code> and add 
<code>Version.from_parts</code> in (:pull:<code>1078</code>)</li>
   <li>Add an option to validate compressed tag set sort order in 
<code>parse_wheel_filename</code> in (:pull:<code>1150</code>)</li>
   </ul>
   <p>Behavior adaptations:</p>
   <ul>
   <li>Narrow exclusion of pre-releases for <code>&lt;V.postN</code> to match 
spec in (:pull:<code>1140</code>)</li>
   <li>Narrow exclusion of post-releases for <code>&gt;V</code> to match spec 
in (:pull:<code>1141</code>)</li>
   <li>Rename <code>format_full_version</code> to 
<code>_format_full_version</code> to make it visibly private in 
(:pull:<code>1125</code>)</li>
   <li>Restrict local version to ASCII in (:pull:<code>1102</code>)</li>
   </ul>
   <p>Pylock (PEP 751) updates:</p>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/pypa/packaging/commit/84a87ee42483d7352f9502d78a9553da8859aa7a";><code>84a87ee</code></a>
 Bump for release</li>
   <li><a 
href="https://github.com/pypa/packaging/commit/4a616b65bed23c8c6d58e6b0fc1a4434d4ff1f14";><code>4a616b6</code></a>
 docs: a few more updates to prepare for 26.2 (<a 
href="https://redirect.github.com/pypa/packaging/issues/1176";>#1176</a>)</li>
   <li><a 
href="https://github.com/pypa/packaging/commit/9de6f44f1e82d4595edf3aad1c4f6f98c85935a0";><code>9de6f44</code></a>
 ci: use native uv integration in rtd (<a 
href="https://redirect.github.com/pypa/packaging/issues/1175";>#1175</a>)</li>
   <li><a 
href="https://github.com/pypa/packaging/commit/bc76e14debd1a2799d1ca8f9d9c9823f35bfa466";><code>bc76e14</code></a>
 chore: update changelog for 26.2 (<a 
href="https://redirect.github.com/pypa/packaging/issues/1161";>#1161</a>)</li>
   <li><a 
href="https://github.com/pypa/packaging/commit/3f00091c08f0aa830e33ed7db00f16f11c8ac97f";><code>3f00091</code></a>
 tests: add a pickle check (<a 
href="https://redirect.github.com/pypa/packaging/issues/1174";>#1174</a>)</li>
   <li><a 
href="https://github.com/pypa/packaging/commit/48a8a069805291186522de3eff73ea80a8ca96ad";><code>48a8a06</code></a>
 fix: make Requirements/Markers pickle-safe (<a 
href="https://redirect.github.com/pypa/packaging/issues/1171";>#1171</a>)</li>
   <li><a 
href="https://github.com/pypa/packaging/commit/823b44ed1f904084a77ae3adf0ef130af6365f84";><code>823b44e</code></a>
 fix: make Tags pickle-safe (<a 
href="https://redirect.github.com/pypa/packaging/issues/1170";>#1170</a>)</li>
   <li><a 
href="https://github.com/pypa/packaging/commit/4bed32d920ca7211dd65fdf0a1ee06376e9c4733";><code>4bed32d</code></a>
 fix: make Specifier / SpecifierSet pickle-safe (<a 
href="https://redirect.github.com/pypa/packaging/issues/1168";>#1168</a>)</li>
   <li><a 
href="https://github.com/pypa/packaging/commit/963118e37caae97bc8b72f72956c7fb4ca9857ec";><code>963118e</code></a>
 fix: re-export ExceptionGroup for now (<a 
href="https://redirect.github.com/pypa/packaging/issues/1164";>#1164</a>)</li>
   <li><a 
href="https://github.com/pypa/packaging/commit/66e34a80256c96dea11da143682950c84b8133bb";><code>66e34a8</code></a>
 docs(specifiers): add is_unsatisfiable() usage example (<a 
href="https://redirect.github.com/pypa/packaging/issues/1166";>#1166</a>)</li>
   <li>Additional commits viewable in <a 
href="https://github.com/pypa/packaging/compare/26.0...26.2";>compare 
view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `pathspec` from 1.0.4 to 1.1.1
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/cpburnz/python-pathspec/releases";>pathspec's 
releases</a>.</em></p>
   <blockquote>
   <h2>v1.1.1</h2>
   <p>Release v1.1.1. See <a 
href="https://github.com/cpburnz/python-pathspec/blob/v1.1.1/CHANGES.rst";>CHANGES.rst</a>.</p>
   <h2>v1.1.0</h2>
   <p>Release v1.1.0. See <a 
href="https://github.com/cpburnz/python-pathspec/blob/v1.1.0/CHANGES.rst";>CHANGES.rst</a>.</p>
   </blockquote>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/cpburnz/python-pathspec/blob/master/CHANGES.rst";>pathspec's
 changelog</a>.</em></p>
   <blockquote>
   <h2>1.1.1 (2026-04-26)</h2>
   <p>Improvements:</p>
   <ul>
   <li>Improved type checking with mypy and pyright.</li>
   </ul>
   <p>Bug fixes:</p>
   <ul>
   <li>Fixed typing on <code>PathSpec[TPattern]</code> to 
<code>PathSpec[TPattern_co]</code>.</li>
   <li>Added missing variant type-hint <code>type[Pattern]</code> to 
<code>PathSpec.from_lines()</code> parameter <code>pattern_factory</code>.</li>
   <li>Fixed possible type error when using <code>+</code> and <code>+=</code> 
operators on <code>PathSpec</code>.</li>
   </ul>
   <h2>1.1.0 (2026-04-22)</h2>
   <p>New features:</p>
   <ul>
   <li><code>Issue 
[#108](https://github.com/cpburnz/python-pathspec/issues/108)</code>_: 
Specialize pattern type for <code>PathSpec</code> as 
<code>PathSpec[TPattern]</code> for better debugging of 
<code>PathSpec().patterns</code>.</li>
   </ul>
   <p>Bug fixes:</p>
   <ul>
   <li><code>Issue 
[#93](https://github.com/cpburnz/python-pathspec/issues/93)</code>_: Git 
discards invalid range notation. <code>GitIgnoreSpecPattern</code> now discards 
patterns with invalid range notation like Git.</li>
   <li><code>Pull 
[#106](https://github.com/cpburnz/python-pathspec/issues/106)</code>_: Fix 
escape() not escaping backslash characters.</li>
   </ul>
   <p>Improvements:</p>
   <ul>
   <li><code>Pull 
[#110](https://github.com/cpburnz/python-pathspec/issues/110)</code>_: Nicer 
debug print outs (and str for regex pattern).</li>
   </ul>
   <p>.. _<code>Pull 
[#106](https://github.com/cpburnz/python-pathspec/issues/106)</code>: <a 
href="https://redirect.github.com/cpburnz/python-pathspec/pull/106";>cpburnz/python-pathspec#106</a>
   .. _<code>Issue 
[#108](https://github.com/cpburnz/python-pathspec/issues/108)</code>: <a 
href="https://redirect.github.com/cpburnz/python-pathspec/issues/108";>cpburnz/python-pathspec#108</a>
   .. _<code>Pull 
[#110](https://github.com/cpburnz/python-pathspec/issues/110)</code>: <a 
href="https://redirect.github.com/cpburnz/python-pathspec/pull/110";>cpburnz/python-pathspec#110</a></p>
   </blockquote>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/cpburnz/python-pathspec/commit/ecf71a99ca739479d450b9830f43416ea0c519c7";><code>ecf71a9</code></a>
 Release v1.1.1</li>
   <li><a 
href="https://github.com/cpburnz/python-pathspec/commit/6727491ff877e570e450b078c345d9346db7e531";><code>6727491</code></a>
 Improve type checking with mypy and pyright</li>
   <li><a 
href="https://github.com/cpburnz/python-pathspec/commit/c9249c8b4ca165ca8c5eea191cea4c0e6f3aa827";><code>c9249c8</code></a>
 Release v1.1.0</li>
   <li><a 
href="https://github.com/cpburnz/python-pathspec/commit/a1abeba97f1fdbc3bc0e64e6c4d7ee9b63c4cf77";><code>a1abeba</code></a>
 Test Iron Proxy for CI</li>
   <li><a 
href="https://github.com/cpburnz/python-pathspec/commit/0b04daeafaea8c82a6fa3e86090061dc47c61ea6";><code>0b04dae</code></a>
 Test Iron Proxy for CI</li>
   <li><a 
href="https://github.com/cpburnz/python-pathspec/commit/ccaedca31c5cd904c5bb55df0f0045c675f77b7f";><code>ccaedca</code></a>
 Test Iron Proxy for CI</li>
   <li><a 
href="https://github.com/cpburnz/python-pathspec/commit/06391d861d68ba4763e8c377c8bb1b9392bcc76a";><code>06391d8</code></a>
 Test Iron Proxy for CI</li>
   <li><a 
href="https://github.com/cpburnz/python-pathspec/commit/45907bf50a5cabe525306b99e85779639d9ca55e";><code>45907bf</code></a>
 Test Iron Proxy for CI</li>
   <li><a 
href="https://github.com/cpburnz/python-pathspec/commit/0d7c7deb138050c8586000682134d820a176bc10";><code>0d7c7de</code></a>
 Pin all Github actions</li>
   <li><a 
href="https://github.com/cpburnz/python-pathspec/commit/36faddae807a997d04ccfc8cf00931819464260c";><code>36fadda</code></a>
 Specialize patterns</li>
   <li>Additional commits viewable in <a 
href="https://github.com/cpburnz/python-pathspec/compare/v1.0.4...v1.1.1";>compare
 view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `trove-classifiers` from 2026.1.14.14 to 2026.5.7.17
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/pypa/trove-classifiers/commit/a1105aa00670c8fc241e0bc2149a236b8be43b7a";><code>a1105aa</code></a>
 Add Trove classifier for Python 3.16 (<a 
href="https://redirect.github.com/pypa/trove-classifiers/issues/243";>#243</a>)</li>
   <li><a 
href="https://github.com/pypa/trove-classifiers/commit/eca370658f6e81c8911567eab8209aaca2924493";><code>eca3706</code></a>
 feat: add <code>litestar</code> classifier (<a 
href="https://redirect.github.com/pypa/trove-classifiers/issues/148";>#148</a>)</li>
   <li>See full diff in <a 
href="https://github.com/pypa/trove-classifiers/compare/2026.1.14.14...2026.5.7.17";>compare
 view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `virtualenv` from 21.2.0 to 21.3.1
   <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.3.1</h2>
   <!-- raw HTML omitted -->
   <h2>What's Changed</h2>
   <ul>
   <li>👷 ci: retry transient apt failures on Linux by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3139";>pypa/virtualenv#3139</a></li>
   <li>🐛 fix(seed): bump embedded pip to 26.1.1 by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3138";>pypa/virtualenv#3138</a></li>
   </ul>
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/pypa/virtualenv/compare/21.3.0...21.3.1";>https://github.com/pypa/virtualenv/compare/21.3.0...21.3.1</a></p>
   <h2>21.3.0</h2>
   <!-- raw HTML omitted -->
   <h2>What's Changed</h2>
   <ul>
   <li>🐛 fix(type): stop ty flagging default_source on Action by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3124";>pypa/virtualenv#3124</a></li>
   <li>feat: Reintroduce xonsh shell support by <a 
href="https://github.com/anki-code";><code>@​anki-code</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3125";>pypa/virtualenv#3125</a></li>
   <li>🐛 fix(test): prevent PowerShell activation test from crashing xdist 
workers on Windows by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3128";>pypa/virtualenv#3128</a></li>
   <li>docs: Add usage instruction for Xonsh activation by <a 
href="https://github.com/anki-code";><code>@​anki-code</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3130";>pypa/virtualenv#3130</a></li>
   <li>Upgrade embedded pip/setuptools/wheel by <a 
href="https://github.com/github-actions";><code>@​github-actions</code></a>[bot] 
in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3132";>pypa/virtualenv#3132</a></li>
   </ul>
   <h2>New Contributors</h2>
   <ul>
   <li><a href="https://github.com/anki-code";><code>@​anki-code</code></a> made 
their first contribution in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3125";>pypa/virtualenv#3125</a></li>
   </ul>
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/pypa/virtualenv/compare/21.2.4...21.3.0";>https://github.com/pypa/virtualenv/compare/21.2.4...21.3.0</a></p>
   <h2>21.2.4</h2>
   <!-- raw HTML omitted -->
   <h2>What's Changed</h2>
   <ul>
   <li>🐛 fix(periodic-update): refuse unverified HTTPS to PyPI by default by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3122";>pypa/virtualenv#3122</a></li>
   <li>🐛 fix(zipapp): enforce ROOT containment with Path.relative_to by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3121";>pypa/virtualenv#3121</a></li>
   <li>🐛 fix(seed): validate distribution and version before pip download by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3120";>pypa/virtualenv#3120</a></li>
   <li>🐛 fix(seed): verify sha256 of bundled wheels on load by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3119";>pypa/virtualenv#3119</a></li>
   <li>🐛 fix(seed): validate wheel zip entries before extraction by <a 
href="https://github.com/gaborbernat";><code>@​gaborbernat</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3118";>pypa/virtualenv#3118</a></li>
   </ul>
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/pypa/virtualenv/compare/21.2.3...21.2.4";>https://github.com/pypa/virtualenv/compare/21.2.3...21.2.4</a></p>
   <h2>21.2.3</h2>
   <!-- raw HTML omitted -->
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/pypa/virtualenv/compare/21.2.2...21.2.3";>https://github.com/pypa/virtualenv/compare/21.2.2...21.2.3</a></p>
   <h2>21.2.2</h2>
   <!-- raw HTML omitted -->
   <h2>What's Changed</h2>
   <ul>
   <li>bump python-discovery minimum to 1.2.2 by <a 
href="https://github.com/rahuldevikar";><code>@​rahuldevikar</code></a> in <a 
href="https://redirect.github.com/pypa/virtualenv/pull/3117";>pypa/virtualenv#3117</a></li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </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.3.1</h1>
   <ul>
   <li>
   <p>Upgrade embedded wheels:</p>
   <ul>
   <li>pip to <code>26.1.1</code> from <code>26.1</code> 
(:issue:<code>3138</code>)</li>
   </ul>
   </li>
   </ul>
   <hr />
   <p>v21.3.0 (2026-04-27)</p>
   <hr />
   <h1>Features - 21.3.0</h1>
   <ul>
   <li>Re-introduce <code>xonsh</code> shell activator 
(<code>activate.xsh</code>) previously removed in 20.7.0, and make the plugin 
loader
   prefer virtualenv's built-in entry points so a third-party package cannot 
override them by registering a duplicate
   name. (:issue:<code>3003</code>)</li>
   </ul>
   <h1>Bugfixes - 21.3.0</h1>
   <ul>
   <li>
   <p>Upgrade embedded wheels:</p>
   <ul>
   <li>pip to <code>26.1</code> (:issue:<code>3132</code>)</li>
   </ul>
   </li>
   </ul>
   <hr />
   <p>v21.2.4 (2026-04-14)</p>
   <hr />
   <h1>Bugfixes - 21.2.4</h1>
   <ul>
   <li>Security hardening: validate each entry of a seed wheel archive before 
extracting it so a tampered wheel cannot escape
   the app-data image directory via an absolute path or <code>..</code> 
traversal. (:issue:<code>3118</code>)</li>
   <li>Security hardening: verify the SHA-256 of every bundled seed wheel when 
it is loaded so a corrupted or tampered file
   on disk fails loud instead of being handed to pip. The hash table is 
generated alongside <code>BUNDLE_SUPPORT</code> by
   <code>tasks/upgrade_wheels.py</code>. (:issue:<code>3119</code>)</li>
   <li>Security hardening: validate the distribution name and version specifier 
passed to <code>pip download</code> when acquiring a
   seed wheel so extras, pip flags, or shell metacharacters cannot be smuggled 
into the subprocess command line.
   (:issue:<code>3120</code>)</li>
   <li>Security hardening: replace the string-prefix containment check in 
<code>virtualenv.util.zipapp</code> with
   <code>Path.relative_to</code> so the zipapp extraction helpers refuse any 
path that does not resolve under the archive root.
   (:issue:<code>3121</code>)</li>
   <li>Security hardening: do not silently fall back to an unverified HTTPS 
context when the periodic update request to PyPI
   fails TLS verification. The returned metadata drives which wheel version 
virtualenv considers &quot;up to date&quot;, so
   accepting an unverified response lets a network-level attacker suppress 
security updates. Set
   <code>VIRTUALENV_PERIODIC_UPDATE_INSECURE=1</code> to restore the previous 
behavior on hosts with broken trust stores.
   (:issue:<code>3122</code>)</li>
   </ul>
   <hr />
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/pypa/virtualenv/commit/12ab4957289c1963849bf04a5f35982c928c0a35";><code>12ab495</code></a>
 release 21.3.1</li>
   <li><a 
href="https://github.com/pypa/virtualenv/commit/22eadc4d2738af7e96d744369a7f40df34935c94";><code>22eadc4</code></a>
 [pre-commit.ci] pre-commit autoupdate (<a 
href="https://redirect.github.com/pypa/virtualenv/issues/3137";>#3137</a>)</li>
   <li><a 
href="https://github.com/pypa/virtualenv/commit/6651dafd919c745adca1e29e31e1d96a1c9e9e52";><code>6651daf</code></a>
 🐛 fix(seed): bump embedded pip to 26.1.1 (<a 
href="https://redirect.github.com/pypa/virtualenv/issues/3138";>#3138</a>)</li>
   <li><a 
href="https://github.com/pypa/virtualenv/commit/936a36ae63eb8c68123cf9e23824f68aa9ac51b1";><code>936a36a</code></a>
 👷 ci: retry transient apt failures on Linux (<a 
href="https://redirect.github.com/pypa/virtualenv/issues/3139";>#3139</a>)</li>
   <li><a 
href="https://github.com/pypa/virtualenv/commit/cb5a7d1820871cf26e370c6a954e48326ddd6c57";><code>cb5a7d1</code></a>
 [pre-commit.ci] pre-commit autoupdate (<a 
href="https://redirect.github.com/pypa/virtualenv/issues/3133";>#3133</a>)</li>
   <li><a 
href="https://github.com/pypa/virtualenv/commit/e917cc244e659160607c890de2cbad3a7bc2a28c";><code>e917cc2</code></a>
 release 21.3.0</li>
   <li><a 
href="https://github.com/pypa/virtualenv/commit/21152f1b88c49cdefda2743cddc2cf36d50e2e57";><code>21152f1</code></a>
 Upgrade embedded pip/setuptools/wheel (<a 
href="https://redirect.github.com/pypa/virtualenv/issues/3132";>#3132</a>)</li>
   <li><a 
href="https://github.com/pypa/virtualenv/commit/096bdcd72d7a6c92dcb9dee97fd429fe3e0231a5";><code>096bdcd</code></a>
 chore(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 (<a 
href="https://redirect.github.com/pypa/virtualenv/issues/3131";>#3131</a>)</li>
   <li><a 
href="https://github.com/pypa/virtualenv/commit/01610dc7a8ef08158c815f43dc22ceadb98b85c0";><code>01610dc</code></a>
 docs: Add usage instruction for Xonsh activation (<a 
href="https://redirect.github.com/pypa/virtualenv/issues/3130";>#3130</a>)</li>
   <li><a 
href="https://github.com/pypa/virtualenv/commit/fb6ec7c461db2b0ccfabe7ec6255368e86cfaed3";><code>fb6ec7c</code></a>
 🐛 fix(test): prevent PowerShell activation test from crashing xdist workers 
o...</li>
   <li>Additional commits viewable in <a 
href="https://github.com/pypa/virtualenv/compare/21.2.0...21.3.1";>compare 
view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `pytest` to 9.0.3
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/pytest-dev/pytest/releases";>pytest's 
releases</a>.</em></p>
   <blockquote>
   <h2>9.0.3</h2>
   <h1>pytest 9.0.3 (2026-04-07)</h1>
   <h2>Bug fixes</h2>
   <ul>
   <li>
   <p><a 
href="https://redirect.github.com/pytest-dev/pytest/issues/12444";>#12444</a>: 
Fixed <code>pytest.approx</code> which now correctly takes into account 
<code>~collections.abc.Mapping</code> keys order to compare them.</p>
   </li>
   <li>
   <p><a 
href="https://redirect.github.com/pytest-dev/pytest/issues/13634";>#13634</a>: 
Blocking a <code>conftest.py</code> file using the <code>-p no:</code> option 
is now explicitly disallowed.</p>
   <p>Previously this resulted in an internal assertion failure during plugin 
loading.</p>
   <p>Pytest now raises a clear <code>UsageError</code> explaining that 
conftest files are not plugins and cannot be disabled via <code>-p</code>.</p>
   </li>
   <li>
   <p><a 
href="https://redirect.github.com/pytest-dev/pytest/issues/13734";>#13734</a>: 
Fixed crash when a test raises an exceptiongroup with <code>__tracebackhide__ = 
True</code>.</p>
   </li>
   <li>
   <p><a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14195";>#14195</a>: 
Fixed an issue where non-string messages passed to <!-- raw HTML omitted 
-->unittest.TestCase.subTest()<!-- raw HTML omitted --> were not printed.</p>
   </li>
   <li>
   <p><a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14343";>#14343</a>: 
Fixed use of insecure temporary directory (CVE-2025-71176).</p>
   </li>
   </ul>
   <h2>Improved documentation</h2>
   <ul>
   <li><a 
href="https://redirect.github.com/pytest-dev/pytest/issues/13388";>#13388</a>: 
Clarified documentation for <code>-p</code> vs <code>PYTEST_PLUGINS</code> 
plugin loading and fixed an incorrect <code>-p</code> example.</li>
   <li><a 
href="https://redirect.github.com/pytest-dev/pytest/issues/13731";>#13731</a>: 
Clarified that capture fixtures (e.g. <code>capsys</code> and 
<code>capfd</code>) take precedence over the <code>-s</code> / 
<code>--capture=no</code> command-line options in <code>Accessing captured 
output from a test function &lt;accessing-captured-output&gt;</code>.</li>
   <li><a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14088";>#14088</a>: 
Clarified that the default <code>pytest_collection</code> hook sets 
<code>session.items</code> before it calls 
<code>pytest_collection_finish</code>, not after.</li>
   <li><a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14255";>#14255</a>: 
TOML integer log levels must be quoted: Updating reference documentation.</li>
   </ul>
   <h2>Contributor-facing changes</h2>
   <ul>
   <li>
   <p><a 
href="https://redirect.github.com/pytest-dev/pytest/issues/12689";>#12689</a>: 
The test reports are now published to Codecov from GitHub Actions.
   The test statistics is visible <a 
href="https://app.codecov.io/gh/pytest-dev/pytest/tests";>on the web 
interface</a>.</p>
   <p>-- by <code>aleguy02</code></p>
   </li>
   </ul>
   </blockquote>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e";><code>a7d58d7</code></a>
 Prepare release version 9.0.3</li>
   <li><a 
href="https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22";><code>089d981</code></a>
 Merge pull request <a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14366";>#14366</a> 
from bluetech/revert-14193-backport</li>
   <li><a 
href="https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac";><code>8127eaf</code></a>
 Revert &quot;Fix: assertrepr_compare respects dict insertion order (<a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14050";>#14050</a>) 
(<a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14193";>#14193</a>)&quot;</li>
   <li><a 
href="https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241";><code>99a7e60</code></a>
 Merge pull request <a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14363";>#14363</a> 
from pytest-dev/patchback/backports/9.0.x/95d8423bd...</li>
   <li><a 
href="https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95";><code>ddee02a</code></a>
 Merge pull request <a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14343";>#14343</a> 
from bluetech/cve-2025-71176-simple</li>
   <li><a 
href="https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619";><code>74eac69</code></a>
 doc: Update training info (<a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14298";>#14298</a>) 
(<a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14301";>#14301</a>)</li>
   <li><a 
href="https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869";><code>f92dee7</code></a>
 Merge pull request <a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14267";>#14267</a> 
from pytest-dev/patchback/backports/9.0.x/d6fa26c62...</li>
   <li><a 
href="https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439";><code>7ee58ac</code></a>
 Merge pull request <a 
href="https://redirect.github.com/pytest-dev/pytest/issues/12378";>#12378</a> 
from Pierre-Sassoulas/fix-implicit-str-concat-and-d...</li>
   <li><a 
href="https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8";><code>37da870</code></a>
 Merge pull request <a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14259";>#14259</a> 
from mitre88/patch-4 (<a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14268";>#14268</a>)</li>
   <li><a 
href="https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed";><code>c34bfa3</code></a>
 Add explanation for string context diffs (<a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14257";>#14257</a>) 
(<a 
href="https://redirect.github.com/pytest-dev/pytest/issues/14266";>#14266</a>)</li>
   <li>Additional commits viewable in <a 
href="https://github.com/pytest-dev/pytest/compare/8.2.0...9.0.3";>compare 
view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `click` to 8.3.3
   <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.3.3</h2>
   <p>This is the Click 8.3.3 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.3.3/";>https://pypi.org/project/click/8.3.3/</a>
   Changes: <a 
href="https://click.palletsprojects.com/page/changes/#version-8-3-3";>https://click.palletsprojects.com/page/changes/#version-8-3-3</a>
   Milestone: <a 
href="https://github.com/pallets/click/milestone/30";>https://github.com/pallets/click/milestone/30</a></p>
   <ul>
   <li>Use :func:<code>shlex.split</code> to split pager and editor commands 
into <code>argv</code>
   lists for :class:<code>subprocess.Popen</code>, removing 
<code>shell=True</code>.
   <a href="https://redirect.github.com/pallets/click/issues/1026";>#1026</a> <a 
href="https://redirect.github.com/pallets/click/issues/1477";>#1477</a> <a 
href="https://redirect.github.com/pallets/click/issues/2775";>#2775</a></li>
   <li>Fix <code>TypeError</code> when rendering help for an option whose 
default value is
   an object that doesn't support equality comparison with strings, such as
   <code>semver.Version</code>. <a 
href="https://redirect.github.com/pallets/click/issues/3298";>#3298</a> <a 
href="https://redirect.github.com/pallets/click/issues/3299";>#3299</a></li>
   <li>Fix pager test pollution under parallel execution by using pytest's
   <code>tmp_path</code> fixture instead of a shared temporary file path. <a 
href="https://redirect.github.com/pallets/click/issues/3238";>#3238</a></li>
   <li>Treat <code>Sentinel.UNSET</code> values in a <code>default_map</code> 
as absent, so they fall
   through to the next default source instead of being used as the value.
   <a href="https://redirect.github.com/pallets/click/issues/3224";>#3224</a> <a 
href="https://redirect.github.com/pallets/click/issues/3240";>#3240</a></li>
   <li>Patch <code>pdb.Pdb</code> in <code>CliRunner</code> isolation so 
<code>pdb.set_trace()</code>,
   <code>breakpoint()</code>, and debuggers subclassing <code>pdb.Pdb</code> 
(ipdb, pdbpp) can
   interact with the real terminal instead of the captured I/O streams.
   <a href="https://redirect.github.com/pallets/click/issues/654";>#654</a> <a 
href="https://redirect.github.com/pallets/click/issues/824";>#824</a> <a 
href="https://redirect.github.com/pallets/click/issues/843";>#843</a> <a 
href="https://redirect.github.com/pallets/click/issues/951";>#951</a> <a 
href="https://redirect.github.com/pallets/click/issues/3235";>#3235</a></li>
   <li>Add optional randomized parallel test execution using 
<code>pytest-randomly</code> and
   <code>pytest-xdist</code> to detect test pollution and race conditions. <a 
href="https://redirect.github.com/pallets/click/issues/3151";>#3151</a></li>
   <li>Add contributor documentation for running stress tests, randomized
   parallel tests, and Flask smoke tests. <a 
href="https://redirect.github.com/pallets/click/issues/3151";>#3151</a> <a 
href="https://redirect.github.com/pallets/click/issues/3177";>#3177</a></li>
   <li>Show custom <code>show_default</code> string in prompts, matching the 
existing
   help text behavior. <a 
href="https://redirect.github.com/pallets/click/issues/2836";>#2836</a> <a 
href="https://redirect.github.com/pallets/click/issues/2837";>#2837</a> <a 
href="https://redirect.github.com/pallets/click/issues/3165";>#3165</a> <a 
href="https://redirect.github.com/pallets/click/issues/3262";>#3262</a> <a 
href="https://redirect.github.com/pallets/click/issues/3280";>#3280</a>
   <a 
href="https://redirect.github.com/pallets/click/issues/3328";>#3328</a></li>
   <li>Fix <code>default=True</code> with boolean <code>flag_value</code> 
always returning the
   <code>flag_value</code> instead of <code>True</code>. The 
<code>default=True</code> to <code>flag_value</code>
   substitution now only applies to non-boolean flags, where <code>True</code> 
acts as a
   sentinel meaning &quot;activate this flag by default&quot;. For boolean 
flags,
   <code>default=True</code> is returned as a literal value. <a 
href="https://redirect.github.com/pallets/click/issues/3111";>#3111</a> <a 
href="https://redirect.github.com/pallets/click/issues/3239";>#3239</a></li>
   <li>Mark <code>make_default_short_help</code> as private API. <a 
href="https://redirect.github.com/pallets/click/issues/3189";>#3189</a> <a 
href="https://redirect.github.com/pallets/click/issues/3250";>#3250</a></li>
   <li><code>CliRunner</code>'s redirected streams now expose the original file 
descriptor
   via <code>fileno()</code>, so that <code>faulthandler</code>, 
<code>subprocess</code>, and other
   C-level consumers no longer crash with <code>io.UnsupportedOperation</code>.
   <a 
href="https://redirect.github.com/pallets/click/issues/2865";>#2865</a></li>
   <li>Change :class:<code>ParameterSource</code> to an 
:class:<code>~enum.IntEnum</code> and reorder
   its members from most to least explicit, so values can be compared to
   check whether a parameter was explicitly provided. <a 
href="https://redirect.github.com/pallets/click/issues/2879";>#2879</a> <a 
href="https://redirect.github.com/pallets/click/issues/3248";>#3248</a></li>
   </ul>
   </blockquote>
   </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.3.3</h2>
   <p>Released 2026-04-20</p>
   <ul>
   <li>Use :func:<code>shlex.split</code> to split pager and editor commands 
into <code>argv</code>
   lists for :class:<code>subprocess.Popen</code>, removing 
<code>shell=True</code>.
   :issue:<code>1026</code> :pr:<code>1477</code> :pr:<code>2775</code></li>
   <li>Fix <code>TypeError</code> when rendering help for an option whose 
default value is
   an object that doesn't support equality comparison with strings, such as
   <code>semver.Version</code>. :issue:<code>3298</code> 
:pr:<code>3299</code></li>
   <li>Fix pager test pollution under parallel execution by using pytest's
   <code>tmp_path</code> fixture instead of a shared temporary file path. 
:pr:<code>3238</code></li>
   <li>Treat <code>Sentinel.UNSET</code> values in a <code>default_map</code> 
as absent, so they fall
   through to the next default source instead of being used as the value.
   :issue:<code>3224</code> :pr:<code>3240</code></li>
   <li>Patch <code>pdb.Pdb</code> in <code>CliRunner</code> isolation so 
<code>pdb.set_trace()</code>,
   <code>breakpoint()</code>, and debuggers subclassing <code>pdb.Pdb</code> 
(ipdb, pdbpp) can
   interact with the real terminal instead of the captured I/O streams.
   :issue:<code>654</code> :issue:<code>824</code> :issue:<code>843</code> 
:pr:<code>951</code> :pr:<code>3235</code></li>
   <li>Add optional randomized parallel test execution using 
<code>pytest-randomly</code> and
   <code>pytest-xdist</code> to detect test pollution and race conditions. 
:pr:<code>3151</code></li>
   <li>Add contributor documentation for running stress tests, randomized
   parallel tests, and Flask smoke tests. :pr:<code>3151</code> 
:pr:<code>3177</code></li>
   <li>Show custom <code>show_default</code> string in prompts, matching the 
existing
   help text behavior. :issue:<code>2836</code> :pr:<code>2837</code> 
:pr:<code>3165</code> :pr:<code>3262</code> :pr:<code>3280</code>
   :pr:<code>3328</code></li>
   <li>Fix <code>default=True</code> with boolean <code>flag_value</code> 
always returning the
   <code>flag_value</code> instead of <code>True</code>. The 
<code>default=True</code> to <code>flag_value</code>
   substitution now only applies to non-boolean flags, where <code>True</code> 
acts as a
   sentinel meaning &quot;activate this flag by default&quot;. For boolean 
flags,
   <code>default=True</code> is returned as a literal value. 
:issue:<code>3111</code> :pr:<code>3239</code></li>
   <li>Mark <code>make_default_short_help</code> as private API. 
:issue:<code>3189</code> :pr:<code>3250</code></li>
   <li><code>CliRunner</code>'s redirected streams now expose the original file 
descriptor
   via <code>fileno()</code>, so that <code>faulthandler</code>, 
<code>subprocess</code>, and other
   C-level consumers no longer crash with <code>io.UnsupportedOperation</code>.
   :issue:<code>2865</code></li>
   <li>Change :class:<code>ParameterSource</code> to an 
:class:<code>~enum.IntEnum</code> and reorder
   its members from most to least explicit, so values can be compared to
   check whether a parameter was explicitly provided. :issue:<code>2879</code> 
:pr:<code>3248</code></li>
   </ul>
   <h2>Version 8.3.2</h2>
   <p>Released 2026-04-02</p>
   <ul>
   <li>Fix handling of <code>flag_value</code> when <code>is_flag=False</code> 
to allow such options to be
   used without an explicit value. :issue:<code>3084</code> 
:pr:<code>3152</code></li>
   <li>Hide <code>Sentinel.UNSET</code> values as <code>None</code> when using 
<code>lookup_default()</code>.
   :issue:<code>3136</code> :pr:<code>3199</code> :pr:<code>3202</code> 
:pr:<code>3209</code> :pr:<code>3212</code> :pr:<code>3224</code></li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0";><code>c06d2d0</code></a>
 Release 8.3.3</li>
   <li><a 
href="https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c";><code>f1f191e</code></a>
 Apply format guidelines to commits since latest 8.3.2 release (<a 
href="https://redirect.github.com/pallets/click/issues/3343";>#3343</a>)</li>
   <li><a 
href="https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081";><code>bb59ba0</code></a>
 Apply format guidelines to commits since latest 8.3.2 release</li>
   <li><a 
href="https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4";><code>4a35225</code></a>
 Reduce blast-radius of <code>UNSET</code> in <code>default_map</code> (<a 
href="https://redirect.github.com/pallets/click/issues/3240";>#3240</a>)</li>
   <li><a 
href="https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8";><code>c07bb93</code></a>
 Merge branch 'stable' into unset-in-default-map</li>
   <li><a 
href="https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995";><code>c7e1ba8</code></a>
 Reorder <code>ParameterSource</code> (<a 
href="https://redirect.github.com/pallets/click/issues/3248";>#3248</a>)</li>
   <li><a 
href="https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda";><code>76552ff</code></a>
 Show default string in prompt (<a 
href="https://redirect.github.com/pallets/click/issues/3328";>#3328</a>)</li>
   <li><a 
href="https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c";><code>ac5cec5</code></a>
 Reorder ParameterSource from most to least explicit</li>
   <li><a 
href="https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280";><code>8c452e0</code></a>
 Merge branch 'stable' into show-default-string-in-prompt</li>
   <li><a 
href="https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32";><code>8c95c73</code></a>
 Reconcile default value passing and default activation (<a 
href="https://redirect.github.com/pallets/click/issues/3239";>#3239</a>)</li>
   <li>Additional commits viewable in <a 
href="https://github.com/pallets/click/compare/8.0.0...8.3.3";>compare 
view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `jinja2` to 3.1.6
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/pallets/jinja/releases";>jinja2's releases</a>.</em></p>
   <blockquote>
   <h2>3.1.6</h2>
   <p>This is the Jinja 3.1.6 security release, which fixes security issues 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/Jinja2/3.1.6/";>https://pypi.org/project/Jinja2/3.1.6/</a>
   Changes: <a 
href="https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6";>https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6</a></p>
   <ul>
   <li>The <code>|attr</code> filter does not bypass the environment's 
attribute lookup, allowing the sandbox to apply its checks. <a 
href="https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7";>https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7</a></li>
   </ul>
   </blockquote>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/pallets/jinja/blob/main/CHANGES.rst";>jinja2's 
changelog</a>.</em></p>
   <blockquote>
   <h2>Version 3.1.6</h2>
   <p>Released 2025-03-05</p>
   <ul>
   <li>The <code>|attr</code> filter does not bypass the environment's 
attribute lookup,
   allowing the sandbox to apply its checks. 
:ghsa:<code>cpwx-vrp4-4pq7</code></li>
   </ul>
   <h2>Version 3.1.5</h2>
   <p>Released 2024-12-21</p>
   <ul>
   <li>The sandboxed environment handles indirect calls to 
<code>str.format</code>, such as
   by passing a stored reference to a filter that calls its argument.
   :ghsa:<code>q2x7-8rv6-6q7h</code></li>
   <li>Escape template name before formatting it into error messages, to avoid
   issues with names that contain f-string syntax.
   :issue:<code>1792</code>, :ghsa:<code>gmj6-6f8f-6699</code></li>
   <li>Sandbox does not allow <code>clear</code> and <code>pop</code> on known 
mutable sequence
   types. :issue:<code>2032</code></li>
   <li>Calling sync <code>render</code> for an async template uses 
<code>asyncio.run</code>.
   :pr:<code>1952</code></li>
   <li>Avoid unclosed <code>auto_aiter</code> warnings. 
:pr:<code>1960</code></li>
   <li>Return an <code>aclose</code>-able <code>AsyncGenerator</code> from
   <code>Template.generate_async</code>. :pr:<code>1960</code></li>
   <li>Avoid leaving <code>root_render_func()</code> unclosed in
   <code>Template.generate_async</code>. :pr:<code>1960</code></li>
   <li>Avoid leaving async generators unclosed in blocks, includes and extends.
   :pr:<code>1960</code></li>
   <li>The runtime uses the correct <code>concat</code> function for the 
current environment
   when calling block references. :issue:<code>1701</code></li>
   <li>Make <code>|unique</code> async-aware, allowing it to be used after 
another
   async-aware filter. :issue:<code>1781</code></li>
   <li><code>|int</code> filter handles <code>OverflowError</code> from 
scientific notation.
   :issue:<code>1921</code></li>
   <li>Make compiling deterministic for tuple unpacking in a <code>{% set ... 
%}</code>
   call. :issue:<code>2021</code></li>
   <li>Fix dunder protocol (<code>copy</code>/<code>pickle</code>/etc) 
interaction with <code>Undefined</code>
   objects. :issue:<code>2025</code></li>
   <li>Fix <code>copy</code>/<code>pickle</code> support for the internal 
<code>missing</code> object.
   :issue:<code>2027</code></li>
   <li><code>Environment.overlay(enable_async)</code> is applied correctly. 
:pr:<code>2061</code></li>
   <li>The error message from <code>FileSystemLoader</code> includes the paths 
that were
   searched. :issue:<code>1661</code></li>
   <li><code>PackageLoader</code> shows a clearer error message when the 
package does not
   contain the templates directory. :issue:<code>1705</code></li>
   <li>Improve annotations for methods returning copies. 
:pr:<code>1880</code></li>
   <li><code>urlize</code> does not add <code>mailto:</code> to values like 
<code>@a@b</code>. :pr:<code>1870</code></li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/pallets/jinja/commit/15206881c006c79667fe5154fe80c01c65410679";><code>1520688</code></a>
 release version 3.1.6</li>
   <li><a 
href="https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403";><code>90457bb</code></a>
 Merge commit from fork</li>
   <li><a 
href="https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7";><code>065334d</code></a>
 attr filter uses env.getattr</li>
   <li><a 
href="https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145";><code>033c200</code></a>
 start version 3.1.6</li>
   <li><a 
href="https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35";><code>bc68d4e</code></a>
 use global contributing guide (<a 
href="https://redirect.github.com/pallets/jinja/issues/2070";>#2070</a>)</li>
   <li><a 
href="https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486";><code>247de5e</code></a>
 use global contributing guide</li>
   <li><a 
href="https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f";><code>ab8218c</code></a>
 use project advisory link instead of global</li>
   <li><a 
href="https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2";><code>b4ffc8f</code></a>
 release version 3.1.5 (<a 
href="https://redirect.github.com/pallets/jinja/issues/2066";>#2066</a>)</li>
   <li><a 
href="https://github.com/pallets/jinja/commit/877f6e51be8e1765b06d911cfaa9033775f051d1";><code>877f6e5</code></a>
 release version 3.1.5</li>
   <li><a 
href="https://github.com/pallets/jinja/commit/8d588592653b052f957b720e1fc93196e06f207f";><code>8d58859</code></a>
 remove test pypi</li>
   <li>Additional commits viewable in <a 
href="https://github.com/pallets/jinja/compare/2.11.3...3.1.6";>compare 
view</a></li>
   </ul>
   </details>
   <br />
   
   Updates `requests` to 2.33.1
   <details>
   <summary>Release notes</summary>
   <p><em>Sourced from <a 
href="https://github.com/psf/requests/releases";>requests's 
releases</a>.</em></p>
   <blockquote>
   <h2>v2.33.1</h2>
   <h2>2.33.1 (2026-03-30)</h2>
   <p><strong>Bugfixes</strong></p>
   <ul>
   <li>Fixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary
   files in the tmp directory. (<a 
href="https://redirect.github.com/psf/requests/issues/7305";>#7305</a>)</li>
   <li>Fixed Content-Type header parsing for malformed values. (<a 
href="https://redirect.github.com/psf/requests/issues/7309";>#7309</a>)</li>
   <li>Improved error consistency for malformed header values. (<a 
href="https://redirect.github.com/psf/requests/issues/7308";>#7308</a>)</li>
   </ul>
   <h2>New Contributors</h2>
   <ul>
   <li><a href="https://github.com/ferdnyc";><code>@​ferdnyc</code></a> made 
their first contribution in <a 
href="https://redirect.github.com/psf/requests/pull/7277";>psf/requests#7277</a></li>
   </ul>
   <p><strong>Full Changelog</strong>: <a 
href="https://github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30";>https://github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30</a></p>
   </blockquote>
   </details>
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/psf/requests/blob/main/HISTORY.md";>requests's 
changelog</a>.</em></p>
   <blockquote>
   <h2>2.33.1 (2026-03-30)</h2>
   <p><strong>Bugfixes</strong></p>
   <ul>
   <li>Fixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary
   files in the tmp directory. (<a 
href="https://redirect.github.com/psf/requests/issues/7305";>#7305</a>)</li>
   <li>Fixed Content-Type header parsing for malformed values. (<a 
href="https://redirect.github.com/psf/requests/issues/7309";>#7309</a>)</li>
   <li>Improved error consistency for malformed header values. (<a 
href="https://redirect.github.com/psf/requests/issues/7308";>#7308</a>)</li>
   </ul>
   <h2>2.33.0 (2026-03-25)</h2>
   <p><strong>Announcements</strong></p>
   <ul>
   <li>📣 Requests is adding inline types. If you have a typed code base that
   uses Requests, please take a look at <a 
href="https://redirect.github.com/psf/requests/issues/7271";>#7271</a>. Give it 
a try, and report
   any gaps or feedback you may have in the issue. 📣</li>
   </ul>
   <p><strong>Security</strong></p>
   <ul>
   <li>CVE-2026-25645 <code>requests.utils.extract_zipped_paths</code> now 
extracts
   contents to a non-deterministic location to prevent malicious file
   replacement. This does not affect default usage of Requests, only
   applications calling the utility function directly.</li>
   </ul>
   <p><strong>Improvements</strong></p>
   <ul>
   <li>Migrated to a PEP 517 build system using setuptools. (<a 
href="https://redirect.github.com/psf/requests/issues/7012";>#7012</a>)</li>
   </ul>
   <p><strong>Bugfixes</strong></p>
   <ul>
   <li>Fixed an issue where an empty netrc entry could cause
   malformed authentication to be applied to Requests on
   Python 3.11+. (<a 
href="https://redirect.github.com/psf/requests/issues/7205";>#7205</a>)</li>
   </ul>
   <p><strong>Deprecations</strong></p>
   <ul>
   <li>Dropped support for Python 3.9 following its end of support. (<a 
href="https://redirect.github.com/psf/requests/issues/7196";>#7196</a>)</li>
   </ul>
   <p><strong>Documentation</strong></p>
   <ul>
   <li>Various typo fixes and doc improvements.</li>
   </ul>
   <h2>2.32.5 (2025-08-18)</h2>
   <p><strong>Bugfixes</strong></p>
   <ul>
   <li>The SSLContext caching feature originally introduced in 2.32.0 has 
created
   a new class of issues in Requests that have had negative impact across a 
number
   of use cases. The Requests team has decided to revert this feature as long 
term
   maintenance of it is proving to be unsustainable in its current 
iteration.</li>
   </ul>
   <p><strong>Deprecations</strong></p>
   <ul>
   <li>Added support for Python 3.14.</li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/psf/requests/commit/111d2b77790bf49943c0dfa09b365371c24aec7e";><code>111d2b7</code></a>
 v2.33.1</li>
   <li><a 
href="https://github.com/psf/requests/commit/f0198e6dfc431a2293dc16e1b1e8fcddc910a7f3";><code>f0198e6</code></a>
 Fix malformed value parsing for Content-Type (<a 
href="https://redirect.github.com/psf/requests/issues/7309";>#7309</a>)</li>
   <li><a 
href="https://github.com/psf/requests/commit/bc7dd0fc4d56e808bcdd85ac2d797b3107c89259";><code>bc7dd0f</code></a>
 Fix cosmetic header validity parsing regex (<a 
href="https://redirect.github.com/psf/requests/issues/7308";>#7308</a>)</li>
   <li><a 
href="https://github.com/psf/requests/commit/4443b1a847b190010c2972a658924b98b5db6360";><code>4443b1a</code></a>
 Fix unintended test extra (<a 
href="https://redirect.github.com/psf/requests/issues/7306";>#7306</a>)</li>
   <li><a 
href="https://github.com/psf/requests/commit/389eea58dfb2f2ee096421a812e3af29c0298951";><code>389eea5</code></a>
 Cleanup extracted file after extract_zipped_path test (<a 
href="https://redirect.github.com/psf/requests/issues/7305";>#7305</a>)</li>
   <li><a 
href="https://github.com/psf/requests/commit/7407309c8a8a73aa2f4337184025d440bbedab7a";><code>7407309</code></a>
 Packaging: DRY out extras definition (<a 
href="https://redirect.github.com/psf/requests/issues/7277";>#7277</a>)</li>
   <li><a 
href="https://github.com/psf/requests/commit/bc04dfd6dad4cb02cd92f5daa81eb562d280a761";><code>bc04dfd</code></a>
 v2.33.0</li>
   <li><a 
href="https://github.com/psf/requests/commit/66d21cb07bd6255b1280291c4fafb71803cdb3b7";><code>66d21cb</code></a>
 Merge commit from fork</li>
   <li><a 
href="https://github.com/psf/requests/commit/8b9bc8fc0f63be84602387913c4b689f19efd028";><code>8b9bc8f</code></a>
 Move badges to top of README (<a 
href="https://redirect.github.com/psf/requests/issues/7...
   
   _Description has been truncated_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to