tag:github.com,2008:https://github.com/bazel-contrib/rules_python/releasesTags from rules_python2026-02-23T16:37:20Ztag:github.com,2008:Repository/101780532/1.9.02026-03-04T04:01:28Z1.9.0<p>feat(pypi): make whl_library reproducible under pipstar (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3589">#3589</a>) (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3632">#3632</a>)</p>
<p>This is testing the new API to make use of remote caching mechanisms.</p>
<p>Needs: <a class="issue-link js-issue-link" href="https://github.com/bazelbuild/bazel/pull/27634">bazelbuild/bazel#27634</a></p>
<p>---------</p>
<p>(cherry picked from commit <a class="commit-link" href="https://github.com/bazel-contrib/rules_python/commit/06aa36daba6377bdeaf90309c73da22ca1afa153"><tt>06aa36d</tt></a>)</p>
<p>Co-authored-by: Ignas Anikevicius <[email protected]></p>github-actionstag:github.com,2008:Repository/101780532/1.9.0-rc12026-02-23T16:40:34Z1.9.0-rc1<p>feat(pypi): make whl_library reproducible under pipstar (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3589">#3589</a>) (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3632">#3632</a>)</p>
<p>This is testing the new API to make use of remote caching mechanisms.</p>
<p>Needs: <a class="issue-link js-issue-link" href="https://github.com/bazelbuild/bazel/pull/27634">bazelbuild/bazel#27634</a></p>
<p>---------</p>
<p>(cherry picked from commit <a class="commit-link" href="https://github.com/bazel-contrib/rules_python/commit/06aa36daba6377bdeaf90309c73da22ca1afa153"><tt>06aa36d</tt></a>)</p>
<p>Co-authored-by: Ignas Anikevicius <[email protected]></p>github-actionstag:github.com,2008:Repository/101780532/1.9.0-rc02026-02-23T01:13:26Z1.9.0-rc0<p>chore: repleace version marker in features.bzl</p>
<p>(cherry picked from commit <a class="commit-link" href="https://github.com/bazel-contrib/rules_python/commit/3ddb6015b7cc575665c78c23d3d75c373aeb89a5"><tt>3ddb601</tt></a>)</p>github-actionstag:github.com,2008:Repository/101780532/1.8.52026-02-23T00:56:02Z1.8.5<p>fix(pypi): normalize extras in requirement strings per PEP 685 (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3588">#3588</a>)</p>
<p>## Summary</p>
<p>Extras parsed from requirement strings (e.g., from `requirements.txt`)
<br />were not being normalized, causing mismatches when evaluating PEP 508
<br />marker expressions. For example, `sqlalchemy[postgresql-psycopg2binary]`
<br />would fail to resolve `psycopg2-binary` as a transitive dependency
<br />because the wheel METADATA marker expression `extra ==
<br />"postgresql_psycopg2binary"` uses the underscore-normalized form (per
<br />PEP 685), while the extras set retained the original hyphenated form
<br />from the requirement string.</p>
<p>## Before</p>
<p>```
<br /># requirements.txt
<br />sqlalchemy[postgresql-psycopg2binary]==2.0.36</p>
<p># Parsed extras: ["postgresql-psycopg2binary"]
<br /># Marker evaluation: "postgresql-psycopg2binary" != "postgresql_psycopg2binary" -> MISS
<br /># Result: psycopg2-binary NOT included as a dependency
<br />```</p>
<p>## After</p>
<p>```
<br /># requirements.txt
<br />sqlalchemy[postgresql-psycopg2binary]==2.0.36</p>
<p># Parsed extras: ["postgresql_psycopg2binary"] (normalized)
<br /># Marker evaluation: "postgresql_psycopg2binary" == "postgresql_psycopg2binary" -> MATCH
<br /># Result: psycopg2-binary correctly included as a dependency
<br />```</p>
<p>## Changes</p>
<p>- **`python/private/pypi/pep508_requirement.bzl`**: Apply
<br />`normalize_name()` to each extra during requirement parsing, consistent
<br />with how the package name is already normalized.
<br />- **`tests/pypi/pep508/requirement_tests.bzl`**: Updated existing test
<br />expectation for case normalization and added test case for hyphenated
<br />extras
<br />(`sqlalchemy[asyncio,postgresql-psycopg2binary,postgresql-asyncpg]`).
<br />- **`tests/pypi/pep508/deps_tests.bzl`**: Added
<br />`test_extras_with_hyphens_are_normalized` integration test confirming
<br />that dependencies gated behind hyphenated extras are correctly resolved.
<br />- **`CHANGELOG.md`**: Added entry under Unreleased > Fixed.</p>
<p><span class="issue-keyword tooltipped tooltipped-se">Fixes</span> <a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/issues/3587">#3587</a></p>
<p>---------</p>
<p>Co-authored-by: Ignas Anikevicius <[email protected]>
<br />(cherry picked from commit <a class="commit-link" href="https://github.com/bazel-contrib/rules_python/commit/9fe42b1f0badfc258b159dbc0a05a8392c0234e5"><tt>9fe42b1</tt></a>)</p>github-actionstag:github.com,2008:Repository/101780532/1.8.42026-02-11T12:17:17Z1.8.4<p>fix(pipstar): handle a corner case for compatible version evaluation (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3583">#…</a></p>
<p><a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3583">…3583</a>)</p>
<p>It seems that there was one corner case that was left unhandled.
<br />In theory we should also handle `3 ~= 3.0.0`, but the fix for that may
<br />be a little more involved and I want to leave it for later. However,
<br />that case is unlikely to occur in reality because `LHS` for our cases
<br />will most likely have 2 components.</p>
<p>Whilst at it prepare for the patch release (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/issues/3584">#3584</a>).</p>
<p><span class="issue-keyword tooltipped tooltipped-se">Fixes</span> <a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/issues/3580">#3580</a></p>
<p>(cherry picked from commit <a class="commit-link" href="https://github.com/bazel-contrib/rules_python/commit/a32c74465d9cc328485bc440a933c0447572fa6e"><tt>a32c744</tt></a>)</p>github-actionstag:github.com,2008:Repository/101780532/1.8.32026-01-28T02:21:38Z1.8.3<p>fix(pip): simply extract whl contents to the current directory (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3549">#3549</a>)</p>
<p>Before we would try to get the whl path and extract to the sibling
<br />directory. Whilst this is not failing right now, technically this is not
<br />the best behaviour because the whl itself may come from elsewhere. This
<br />PR is simplifying code to see if it helps solve an issue on Windows.</p>
<p><span class="issue-keyword tooltipped tooltipped-se">Fixes</span> <a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/issues/3543">#3543</a></p>
<p>(cherry picked from commit <a class="commit-link" href="https://github.com/bazel-contrib/rules_python/commit/abe2699e3d4c8a523f82154afd101d5b26bc8f0b"><tt>abe2699</tt></a>)</p>github-actionstag:github.com,2008:Repository/101780532/1.8.22026-01-25T03:31:53Z1.8.2<p>fix: explicitly symlink all .so files, not just ones with lib prefix (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3538">#…</a></p>
<p><a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3538">…3538</a>)</p>
<p>Some packages, such as tensorflow, have regular C libraries that don't
<br />use
<br />a `lib*` suffix. The symlink optimization logic wouldn't link these
<br />directly,
<br />which made the dynamic linker unable to find their dependencies.</p>
<p>To fix, explicitly symlink all `.so` files, since we can't determine
<br />which
<br />are Python C modules and regular C libraries.</p>
<p><span class="issue-keyword tooltipped tooltipped-se">Fixes</span> <a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/issues/3529">#3529</a></p>
<p>(cherry picked from commit <a class="commit-link" href="https://github.com/bazel-contrib/rules_python/commit/b4ec825850fb27e5568165d0a388f5cc4b2b84a2"><tt>b4ec825</tt></a>)</p>github-actionstag:github.com,2008:Repository/101780532/1.8.12026-01-21T01:07:42Z1.8.1<p>fix(pipstar): correctly handle complex self deps (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3527">#3527</a>)</p>
<p>It seems that with the `pipstar` port there was a typo and the initial
<br />tests that we had for Python were insufficient to catch such a
<br />regression.</p>
<p>The second if statement where we loop through packages again had a `req`
<br />instead of `req_` in the `if` statement and the test coverage was not
<br />sufficient.</p>
<p>I have abstracted the if statement into a function to easier spot such
<br />issues and added an extra test to ensure that a regression would be
<br />actually caught. With this the Starlark test suite is now officially
<br />more robust than the Python version.</p>
<p><span class="issue-keyword tooltipped tooltipped-se">Fixes</span> <a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/issues/3524">#3524</a></p>
<p>---------</p>
<p>Co-authored-by: Richard Levasseur <[email protected]>
<br />(cherry picked from commit <a class="commit-link" href="https://github.com/bazel-contrib/rules_python/commit/c52aeaa6e0a5e07fc11a9d7a5ee94bd1d379d515"><tt>c52aeaa</tt></a>)</p>github-actionstag:github.com,2008:Repository/101780532/1.8.02026-01-17T04:32:54Z1.8.0<p>fix(pipstar): Handle dep appearing in extra both conditionally and un…</p>
<p>…conditionally (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3513">#3513</a>)</p>
<p><span class="issue-keyword tooltipped tooltipped-se">Fixes</span> <a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/issues/3511">#3511</a></p>
<p>(cherry picked from commit <a class="commit-link" href="https://github.com/bazel-contrib/rules_python/commit/5fe50fbf085bd404f6124eda85c0952c41b0c370"><tt>5fe50fb</tt></a>)</p>github-actionstag:github.com,2008:Repository/101780532/1.8.0-rc42026-01-15T06:20:15Z1.8.0-rc4<p>fix(pipstar): Handle dep appearing in extra both conditionally and un…</p>
<p>…conditionally (<a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/pull/3513">#3513</a>)</p>
<p><span class="issue-keyword tooltipped tooltipped-se">Fixes</span> <a class="issue-link js-issue-link" href="https://github.com/bazel-contrib/rules_python/issues/3511">#3511</a></p>
<p>(cherry picked from commit <a class="commit-link" href="https://github.com/bazel-contrib/rules_python/commit/5fe50fbf085bd404f6124eda85c0952c41b0c370"><tt>5fe50fb</tt></a>)</p>github-actions