build(deps-dev): Bump the "dev-only" group with 1 update across multiple ecosystems (#4479) Bumps the dev-only group with 1 update in the /examples/wheel directory: [pypiserver](https://github.com/pypiserver/pypiserver). Bumps the dev-only group with 1 update in the /tests/integration/unified_pypi directory: [colorama](https://github.com/tartley/colorama). Bumps the dev-only group with 1 update in the /tests/multi_pypi/alpha directory: [more-itertools](https://github.com/more-itertools/more-itertools). Bumps the dev-only group with 1 update in the /tests/multi_pypi/beta directory: [more-itertools](https://github.com/more-itertools/more-itertools). Updates `pypiserver` from 2.4.2 to 2.4.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pypiserver/pypiserver/releases">pypiserver's releases</a>.</em></p> <blockquote> <h2>v2.4.3</h2> <blockquote> <p>[!NOTE] A few maintenance updates and fixes. Thanks to all who helped improving the repo these times!</p> </blockquote> <h2>Summary:</h2> <p>Core focus:</p> <ol> <li>important version updates</li> <li>bug fixes in version lookup</li> <li>update in documentation</li> </ol> <h2>What's Changed</h2> <ul> <li>chore: Bump urllib3 from 2.7.0 to 2.8.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/pypiserver/pypiserver/pull/737">pypiserver/pypiserver#737</a></li> <li>chore: Bump setuptools from 80.10.2 to 84.1.0 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/pypiserver/pypiserver/pull/739">pypiserver/pypiserver#739</a></li> <li>chore: Bump certifi from 2026.2.25 to 2026.10.19 by <a href="https://github.com/dependabot"><code>@dependabot</code></a>[bot] in <a href="https://redirect.github.com/pypiserver/pypiserver/pull/738">pypiserver/pypiserver#738</a></li> <li>Docs: update ad-hoc authentication example to use roots by <a href="https://github.com/rohansharmacode"><code>@rohansharmacode</code></a> in <a href="https://redirect.github.com/pypiserver/pypiserver/pull/734">pypiserver/pypiserver#734</a></li> <li>fix: normalize project names in find_version for remove_pkg by <a href="https://github.com/r3wretrhy"><code>@r3wretrhy</code></a> in <a href="https://redirect.github.com/pypiserver/pypiserver/pull/735">pypiserver/pypiserver#735</a></li> <li>chore(auto-release-candidate-2026-11-08) by <a href="https://github.com/github-actions"><code>@github-actions</code></a>[bot] in <a href="https://redirect.github.com/pypiserver/pypiserver/pull/742">pypiserver/pypiserver#742</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/rohansharmacode"><code>@rohansharmacode</code></a> made their first contribution in <a href="https://redirect.github.com/pypiserver/pypiserver/pull/734">pypiserver/pypiserver#734</a></li> <li><a href="https://github.com/r3wretrhy"><code>@r3wretrhy</code></a> made their first contribution in <a href="https://redirect.github.com/pypiserver/pypiserver/pull/735">pypiserver/pypiserver#735</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pypiserver/pypiserver/compare/v2.4.2...v2.4.3">https://github.com/pypiserver/pypiserver/compare/v2.4.2...v2.4.3</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pypiserver/pypiserver/blob/main/CHANGES.rst">pypiserver's changelog</a>.</em></p> <blockquote> <h2>2.4.3 (2026-11-08)</h2> <ul> <li>deedae4 FIX: fix: passing formatting flags in CI</li> <li>4885eea FIX: fix: normalize project names in find_version for remove_pkg (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/735">#735</a>)</li> <li>af839b9 MAINT: Docs: update ad-hoc authentication example to use roots (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/734">#734</a>)</li> <li>57eb6a6 MAINT: chore: Bump certifi from 2026.2.25 to 2026.10.19 (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/738">#738</a>)</li> <li>37dc266 MAINT: chore: Bump setuptools from 80.10.2 to 84.1.0 (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/739">#739</a>)</li> <li>69f750c MAINT: chore: Bump urllib3 from 2.7.0 to 2.8.0 (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/737">#737</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pypiserver/pypiserver/commit/14d1e994dc4160ffb1cd36191a72dc5005cb9aef"><code>14d1e99</code></a> chore(ver): bump 2.4.2-->2.4.3</li> <li><a href="https://github.com/pypiserver/pypiserver/commit/7ebc668a04bcfa6869482e75aa2d838b40a462cd"><code>7ebc668</code></a> chore(auto-release-candidate-2026-11-08) (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/742">#742</a>)</li> <li><a href="https://github.com/pypiserver/pypiserver/commit/deedae4f2a9c6a0a4f582d98bc58622febc1fcbb"><code>deedae4</code></a> fix: passing formatting flags in CI</li> <li><a href="https://github.com/pypiserver/pypiserver/commit/4885eea587675d26bd60c81a543b9fed3cd062c9"><code>4885eea</code></a> fix: normalize project names in find_version for remove_pkg (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/735">#735</a>)</li> <li><a href="https://github.com/pypiserver/pypiserver/commit/af839b9d80b4103b83cbbc32c6de80358aaaddaf"><code>af839b9</code></a> Docs: update ad-hoc authentication example to use roots (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/734">#734</a>)</li> <li><a href="https://github.com/pypiserver/pypiserver/commit/57eb6a6d4d802e63f280403e34ee53c4d0fb6fa1"><code>57eb6a6</code></a> chore: Bump certifi from 2026.2.25 to 2026.10.19 (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/738">#738</a>)</li> <li><a href="https://github.com/pypiserver/pypiserver/commit/37dc26619d0ad94e313a3879ec74525b0d64f5e5"><code>37dc266</code></a> chore: Bump setuptools from 80.10.2 to 84.1.0 (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/739">#739</a>)</li> <li><a href="https://github.com/pypiserver/pypiserver/commit/69f750cd8fe5d8ad827fb4a19ee7b37ad0147622"><code>69f750c</code></a> chore: Bump urllib3 from 2.7.0 to 2.8.0 (<a href="https://redirect.github.com/pypiserver/pypiserver/issues/737">#737</a>)</li> <li>See full diff in <a href="https://github.com/pypiserver/pypiserver/compare/v2.4.2...v2.4.3">compare view</a></li> </ul> </details> <br /> Updates `colorama` from 0.4.5 to 0.4.6 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/tartley/colorama/blob/master/CHANGELOG.rst">colorama's changelog</a>.</em></p> <blockquote> <p>0.4.6 Current release</p> <ul> <li><a href="https://redirect.github.com/tartley/colorama/pull/139">tartley/colorama#139</a> Add alternative to 'init()', called 'just_fix_windows_console'. This fixes many longstanding problems with 'init', such as working incorrectly on modern Windows terminals, and wonkiness when init gets called multiple times. The intention is that it just makes all Windows terminals treat ANSI the same way as other terminals do. Many thanks the njsmith for fixing our messes.</li> <li><a href="https://redirect.github.com/tartley/colorama/pull/352">tartley/colorama#352</a> Support Windows 10's ANSI/VT console. This didn't exist when Colorama was created, and avoiding us causing havok there is long overdue. Thanks to segeviner for the initial approach, and to njsmith for getting it merged.</li> <li><a href="https://redirect.github.com/tartley/colorama/pull/338">tartley/colorama#338</a> Internal overhaul of package metadata declaration, which abolishes our use of the now heavily discouraged setuptools (and hence setup.py, setup.cfg and MANIFEST.in), in favor of hatchling (and hence pyproject.toml), generously contributed by ofek (author of hatchling). This includes dropping support Python3.5 and 3.6, which are EOL, and were already dropped from setuptools, so this should not affect our users.</li> <li><a href="https://redirect.github.com/tartley/colorama/pull/353">tartley/colorama#353</a> Attention to detail award to LqdBcnAtWork for a spelling fix in demo06</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/tartley/colorama/commit/3de9f013df4b470069d03d250224062e8cf15c49"><code>3de9f01</code></a> bump version 0.4.6</li> <li><a href="https://github.com/tartley/colorama/commit/a45949b3252633060261c9666b6aada4b2f2f020"><code>a45949b</code></a> Format the CHANGELOG bullet list, no content change</li> <li><a href="https://github.com/tartley/colorama/commit/f55f72e9d3950276679da91ba6dc713cefc603db"><code>f55f72e</code></a> comment need for a fix after recent MP broke it</li> <li><a href="https://github.com/tartley/colorama/commit/cb83041b25a6962d8124647e8741cfa0ab139994"><code>cb83041</code></a> fix test-release after recent MPs broke it</li> <li><a href="https://github.com/tartley/colorama/commit/832f14ce9a4d00c2dfb88e8cb02e2defadb76ba9"><code>832f14c</code></a> README tweaks</li> <li><a href="https://github.com/tartley/colorama/commit/54b89c33b2448a1a0fab67ab020a902622b9a932"><code>54b89c3</code></a> Bump version to 0.4.6rc1</li> <li><a href="https://github.com/tartley/colorama/commit/7991d34773c72db791eb09d9ec349212d080fbc0"><code>7991d34</code></a> 'make bootstrap' uses system python3, not pinned v3.8</li> <li><a href="https://github.com/tartley/colorama/commit/0ae5ef2f9ab89335fb5b50933b75323178cb38bc"><code>0ae5ef2</code></a> CHANGELOG updates for upcoming 0.4.6 release</li> <li><a href="https://github.com/tartley/colorama/commit/52f4cfd7af3a779b0ba8a7ee320d99c0bfec9ce8"><code>52f4cfd</code></a> Tweak ordering of release checklist</li> <li><a href="https://github.com/tartley/colorama/commit/ab64cfac23fd70b9bf2944acd985e3673a1f09e1"><code>ab64cfa</code></a> Merge pull request <a href="https://redirect.github.com/tartley/colorama/issues/353">#353</a> from LqdBcnAtWork/patch-1</li> <li>Additional commits viewable in <a href="https://github.com/tartley/colorama/compare/0.4.5...0.4.6">compare view</a></li> </ul> </details> <br /> Updates `more-itertools` from 9.1.0 to 11.2.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/more-itertools/more-itertools/releases">more-itertools's releases</a>.</em></p> <blockquote> <h2>Version 11.2.1</h2> <p>This release includes <a href="https://redirect.github.com/more-itertools/more-itertools/issues/1331">#1331</a>, a packaging-related change. No module code changed.</p> <h2>Version 11.2.0</h2> <p>Highlights:</p> <ul> <li>New <code>random_ordered_range</code> function</li> <li>New <code>subfactorial</code> function</li> <li>Python 3.10 is no longer officially supported</li> <li>Python 3.15 is now officially supported</li> </ul> <p>See the <a href="https://raw.githubusercontent.com/more-itertools/more-itertools/737c261c21271e1a6eb949f7d188297bebe8b125/docs/versions.rst">release notes</a> for details.</p> <h2>Version 11.1.0</h2> <p>Changes:</p> <ul> <li><code>numeric_range</code> was updated to fix its handling of empty ranges (thanks to rhettinger)</li> <li><code>peekable</code> was updated to fix typing issues (thanks to DORI2001, powellnorma, Pandede, m9810223, and rhettinger)</li> <li><code>islice_extended</code> was optimized for memory usage and speed (thanks to ben42code, rhettinger, and pochmann)</li> <li><code>serialize</code> now supports the generator methods <code>throw</code>, <code>send</code>, and <code>close</code> (thanks to rhettinger)</li> <li><code>seekable</code> now supports implements <code>__getitem__</code> for cached elements (thanks to SAY-5, jenstroeger, and JamesParrott)</li> </ul> <h2>Version 11.0.2</h2> <ul> <li>The changes to the type hints for <code>always_iterable</code> in 11.0.0 have been reverted due to reported problems (thanks to ngoldbaum and rhettinger)</li> <li><code>zip_equal</code> was removed in 11.0.0. It had been deprecated and raising <code>DeprecationWarning</code> since 2021, but it's removal shoul have been documented in 11.0.0's release notes. We regret the error.</li> <li><code>running_statistics</code> has been moved from <code>more_itertools.more</code> to <code>more_itertools.recipes</code>. Its docstring was also improved (thanks to mastash3ff and rhettinger)</li> </ul> <h2>Version 11.0.1</h2> <p>This release restores <code>pairwise</code>, which was mistakenly removed in 11.0.0 instead of being deprecated. It is now marked as deprecated and will be removed in a future major release. Use <code>itertools.pairwise</code> as a replacement.</p> <h2>Version 11.0.0</h2> <h3>Potentially breaking changes</h3> <ul> <li>Python 3.9 support was dropped, since it went EOL on 2025-10-31</li> <li><code>callback_iter</code> is deprecated. It will be removed in a future major release.</li> <li><code>iequals</code> no longer returns <code>True</code> when called with <code>([], [ANY])</code> (thanks to rhettinger and pochmann3)</li> <li>The <code>pred</code> argument for <code>locate</code> and <code>replace</code> must now be able to handle a variable number of arguments. See their docstrings for details. (thanks to veeceey, james-wasson, and pochmann3)</li> <li><code>unique_everseen</code> now raises <code>TypeError</code> when input elements are not hashable. The silent fallback mechanism for unhashable inputs has been removed. (thanks to rhettinger and karlicoss)</li> <li><code>windowed</code> now raises <code>ValueError</code> when given a window size of <code>0</code> (thanks to rhettinger and brevzin)</li> <li>Parameter names for <code>flatten</code>, <code>iter_except</code>, <code>repeatfunc</code>, <code>prepend</code>, <code>transpose</code>, and <code>sum_of_squares</code> have been changed. Code that uses these functions will need to be updated if it uses keywords for positional arguments. (thanks to rhettinger)</li> </ul> <h3>New functions</h3> <ul> <li><code>concurrent_tee</code>: similar to <code>tee</code>, but with guaranteed threading semantics (thanks to rhettinger)</li> <li><code>random_derangement</code>: returns a random derangement of elements from an iterable (thanks to rhettinger)</li> <li><code>running_mean</code>: yields the mean of values in an iterable, or in a sliding</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/more-itertools/more-itertools/commit/4aeb4338ae1407d8da9723e86da99efeb446f719"><code>4aeb433</code></a> Merge pull request <a href="https://redirect.github.com/more-itertools/more-itertools/issues/1331">#1331</a> from more-itertools/flit-4-sdist</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/da864da6d8beaa49d693b719cbc21a5d88dfb475"><code>da864da</code></a> Version 11.2.1: Include additional files in sdist</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/737c261c21271e1a6eb949f7d188297bebe8b125"><code>737c261</code></a> Merge pull request <a href="https://redirect.github.com/more-itertools/more-itertools/issues/1314">#1314</a> from more-itertools/version-11.2.0</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/909b70336ce229088bbc253d300190c99fb8411a"><code>909b703</code></a> Bump version to 11.2.0</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/6ad55cbedd2cd722a9c029e5823177622910771a"><code>6ad55cb</code></a> Swap 310 for 315 in tox</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/787bcb5c9faf800da3fdc72c1023c1aab24572dc"><code>787bcb5</code></a> Drop typing_extensions for more.pyi</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/68a52e07369f3515bd9a0d5f31555429e16fcc54"><code>68a52e0</code></a> Update versions.rst</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/be6ecc015e03f48c0a50f07ce6079f636c9753a4"><code>be6ecc0</code></a> Changelog tweaks</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/45c65a3dc532dadf014d53bcaa0c2f38cbeacfe1"><code>45c65a3</code></a> Even more WIP release notes for 11.2.0</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/56a469cd7f3522d2f391060957b02be81809afb5"><code>56a469c</code></a> More WIP release ntoes 11.2.0</li> <li>Additional commits viewable in <a href="https://github.com/more-itertools/more-itertools/compare/v9.1.0...v11.2.1">compare view</a></li> </ul> </details> <br /> Updates `more-itertools` from 9.0.0 to 11.2.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/more-itertools/more-itertools/releases">more-itertools's releases</a>.</em></p> <blockquote> <h2>Version 11.2.1</h2> <p>This release includes <a href="https://redirect.github.com/more-itertools/more-itertools/issues/1331">#1331</a>, a packaging-related change. No module code changed.</p> <h2>Version 11.2.0</h2> <p>Highlights:</p> <ul> <li>New <code>random_ordered_range</code> function</li> <li>New <code>subfactorial</code> function</li> <li>Python 3.10 is no longer officially supported</li> <li>Python 3.15 is now officially supported</li> </ul> <p>See the <a href="https://raw.githubusercontent.com/more-itertools/more-itertools/737c261c21271e1a6eb949f7d188297bebe8b125/docs/versions.rst">release notes</a> for details.</p> <h2>Version 11.1.0</h2> <p>Changes:</p> <ul> <li><code>numeric_range</code> was updated to fix its handling of empty ranges (thanks to rhettinger)</li> <li><code>peekable</code> was updated to fix typing issues (thanks to DORI2001, powellnorma, Pandede, m9810223, and rhettinger)</li> <li><code>islice_extended</code> was optimized for memory usage and speed (thanks to ben42code, rhettinger, and pochmann)</li> <li><code>serialize</code> now supports the generator methods <code>throw</code>, <code>send</code>, and <code>close</code> (thanks to rhettinger)</li> <li><code>seekable</code> now supports implements <code>__getitem__</code> for cached elements (thanks to SAY-5, jenstroeger, and JamesParrott)</li> </ul> <h2>Version 11.0.2</h2> <ul> <li>The changes to the type hints for <code>always_iterable</code> in 11.0.0 have been reverted due to reported problems (thanks to ngoldbaum and rhettinger)</li> <li><code>zip_equal</code> was removed in 11.0.0. It had been deprecated and raising <code>DeprecationWarning</code> since 2021, but it's removal shoul have been documented in 11.0.0's release notes. We regret the error.</li> <li><code>running_statistics</code> has been moved from <code>more_itertools.more</code> to <code>more_itertools.recipes</code>. Its docstring was also improved (thanks to mastash3ff and rhettinger)</li> </ul> <h2>Version 11.0.1</h2> <p>This release restores <code>pairwise</code>, which was mistakenly removed in 11.0.0 instead of being deprecated. It is now marked as deprecated and will be removed in a future major release. Use <code>itertools.pairwise</code> as a replacement.</p> <h2>Version 11.0.0</h2> <h3>Potentially breaking changes</h3> <ul> <li>Python 3.9 support was dropped, since it went EOL on 2025-10-31</li> <li><code>callback_iter</code> is deprecated. It will be removed in a future major release.</li> <li><code>iequals</code> no longer returns <code>True</code> when called with <code>([], [ANY])</code> (thanks to rhettinger and pochmann3)</li> <li>The <code>pred</code> argument for <code>locate</code> and <code>replace</code> must now be able to handle a variable number of arguments. See their docstrings for details. (thanks to veeceey, james-wasson, and pochmann3)</li> <li><code>unique_everseen</code> now raises <code>TypeError</code> when input elements are not hashable. The silent fallback mechanism for unhashable inputs has been removed. (thanks to rhettinger and karlicoss)</li> <li><code>windowed</code> now raises <code>ValueError</code> when given a window size of <code>0</code> (thanks to rhettinger and brevzin)</li> <li>Parameter names for <code>flatten</code>, <code>iter_except</code>, <code>repeatfunc</code>, <code>prepend</code>, <code>transpose</code>, and <code>sum_of_squares</code> have been changed. Code that uses these functions will need to be updated if it uses keywords for positional arguments. (thanks to rhettinger)</li> </ul> <h3>New functions</h3> <ul> <li><code>concurrent_tee</code>: similar to <code>tee</code>, but with guaranteed threading semantics (thanks to rhettinger)</li> <li><code>random_derangement</code>: returns a random derangement of elements from an iterable (thanks to rhettinger)</li> <li><code>running_mean</code>: yields the mean of values in an iterable, or in a sliding</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/more-itertools/more-itertools/commit/4aeb4338ae1407d8da9723e86da99efeb446f719"><code>4aeb433</code></a> Merge pull request <a href="https://redirect.github.com/more-itertools/more-itertools/issues/1331">#1331</a> from more-itertools/flit-4-sdist</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/da864da6d8beaa49d693b719cbc21a5d88dfb475"><code>da864da</code></a> Version 11.2.1: Include additional files in sdist</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/737c261c21271e1a6eb949f7d188297bebe8b125"><code>737c261</code></a> Merge pull request <a href="https://redirect.github.com/more-itertools/more-itertools/issues/1314">#1314</a> from more-itertools/version-11.2.0</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/909b70336ce229088bbc253d300190c99fb8411a"><code>909b703</code></a> Bump version to 11.2.0</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/6ad55cbedd2cd722a9c029e5823177622910771a"><code>6ad55cb</code></a> Swap 310 for 315 in tox</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/787bcb5c9faf800da3fdc72c1023c1aab24572dc"><code>787bcb5</code></a> Drop typing_extensions for more.pyi</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/68a52e07369f3515bd9a0d5f31555429e16fcc54"><code>68a52e0</code></a> Update versions.rst</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/be6ecc015e03f48c0a50f07ce6079f636c9753a4"><code>be6ecc0</code></a> Changelog tweaks</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/45c65a3dc532dadf014d53bcaa0c2f38cbeacfe1"><code>45c65a3</code></a> Even more WIP release notes for 11.2.0</li> <li><a href="https://github.com/more-itertools/more-itertools/commit/56a469cd7f3522d2f391060957b02be81809afb5"><code>56a469c</code></a> More WIP release ntoes 11.2.0</li> <li>Additional commits viewable in <a href="https://github.com/more-itertools/more-itertools/compare/v9.1.0...v11.2.1">compare view</a></li> </ul> </details> <br /> 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 <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Richard Levasseur <richardlev@gmail.com>
This repository is the home of the core Python rules -- py_library, py_binary, py_test, and related symbols that provide the basis for Python support in Bazel. It also contains package installation rules for integrating with PyPI and other indices.
Documentation for rules_python is at https://rules-python.readthedocs.io and in the Bazel Build Encyclopedia.
Examples live in the examples directory.
The core rules are stable. Their implementation is subject to Bazel's backward compatibility policy. This repository aims to follow semantic versioning.
The Bazel community maintains this repository. Neither Google nor the Bazel team provides support for the code. However, this repository is part of the test suite used to vet new Bazel releases. See How to contribute page for information on our development workflow.
requirements.txt is how users have been defining dependencies for a long time. We support this to support legacy usecases or package managers that we don't support directly. Any additional information that we need will be retrieved from the SimpleAPI during the bzlmod extension evaluation phase. Then it will be written to the MODULE.bazel.lock file for future reuse. We also support uv.lock files directly under bzlmod, which already contain cross-platform distribution URLs and hashes and do not require SimpleAPI queries or storing distribution hashes in MODULE.bazel.lock. uv is recommended for generating uv.lock or a fully locked requirements.txt file, and we provide a rule for it.py_binary, py_test rules should scale to large monorepos and we work hard to minimize the work done during analysis and build phase. What is more, the space requirements for should be minimal, so we strive to use symlinks rather than extracting wheels at build time. This means that for different configurations of the same build, we are not extracting the wheel multiple times thus scaling better over the time. From 2.0 onwards we are creating a virtual env for each target by creating an actual minimal virtual environment using symlinks. We plan on creating the traditional site-packages layout in the future by default.rules_python and this has resulted in a few PEPs supported within pure starlark - PEP440, PEP509.Common misconceptions:
rules_python has to keep backwards compatibility with google3. Whilst this might have been true in the past, rules_python is an open source project and any compatibility needs should come from the community - we have no requirement to keep this compatibility and are allowed to make our decisions. However, we do want to keep backwards compatibility as long as possible to not upset users with never ending migrations.rules_python is not caching pip downloads. With 2.0, we use Bazel's downloader by default and rely on bazel to provide the repository caching mechanisms. This means that for simpler setups this should result in transparent and scalable caching with the most recent bazel versions unless there are issues in the bazel itself.For detailed documentation, see https://rules-python.readthedocs.io
See Bzlmod support for more details.