Skip to content

check_versions.py: deprecate as soon as upstream ships any riscv64 wheel - #3514

Merged
justeph merged 1 commit into
mainfrom
deprecate-when-upstream-ships-at-least-a-riscv64-wheel
Oct 20, 2026
Merged

justeph merged 1 commit into
mainfrom
deprecate-when-upstream-ships-at-least-a-riscv64-wheel

Conversation

@justeph

@justeph justeph commented Oct 19, 2026

Copy link
Copy Markdown
Collaborator

Previously we only deprecated once upstream published riscv64 wheels for every target Python (3.12, 3.13, 3.14, 3.14t). If even one was missing we kept building the package ourselves for all target versions, including the ones upstream already covers.

xmhuffman is an example: upstream ships riscv64 wheels for 3.12, 3.13 and 3.14, but not 3.14t. We don't want to keep building those covered versions ourselves, but we also shouldn't start building 3.14t (or any other upstream-unsupported version) on upstream's behalf just to fill the gap — a free-threaded build succeeding doesn't mean the resulting wheel is actually free-threading-safe, and the same applies to any other Python version upstream chose not to support. That's a correctness guarantee only upstream can make, so we defer to whatever matrix upstream decides to publish instead of completing it for them.

has_riscv64_wheel (require every target version) becomes has_any_riscv64_wheel (require at least one), used both to stop declaring new versions for us to build once upstream has any riscv64 coverage, and to trigger deprecation on partial upstream coverage.

@justeph
justeph requested review from luhenry and threexc October 19, 2026 13:04
@justeph
justeph force-pushed the deprecate-when-upstream-ships-at-least-a-riscv64-wheel branch from fbba14b to b4ca613 Compare October 19, 2026 14:58
Previously we only deprecated once upstream published riscv64 wheels for
every target Python (3.12, 3.13, 3.14, 3.14t). If even one was missing we
kept building the package ourselves for all target versions, including the
ones upstream already covers.

xmhuffman is an example: upstream ships riscv64 wheels for 3.12, 3.13 and
3.14, but not 3.14t. We don't want to keep building those covered versions
ourselves, but we also shouldn't start building 3.14t (or any other
upstream-unsupported version) on upstream's behalf just to fill the gap —
a free-threaded build succeeding doesn't mean the resulting wheel is
actually free-threading-safe, and the same applies to any other Python
version upstream chose not to support. That's a correctness guarantee only
upstream can make, so we defer to whatever matrix upstream decides to
publish instead of completing it for them.

has_riscv64_wheel (require every target version) becomes
has_any_riscv64_wheel (require at least one), used both to stop declaring
new versions for us to build once upstream has any riscv64 coverage, and
to trigger deprecation on partial upstream coverage.

Signed-off-by: Julien Stephan <jstephan@baylibre.com>
@threexc

threexc commented Oct 19, 2026

Copy link
Copy Markdown
Collaborator

I think this is OK to merge - pip_audit actually fails despite the status because PyAV isn't shipping wheels. Looking into why that didn't happen (I've previously submitted a PR).

@justeph
justeph merged commit b195814 into main Oct 20, 2026
6 of 7 checks passed
@justeph
justeph deleted the deprecate-when-upstream-ships-at-least-a-riscv64-wheel branch October 20, 2026 07:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants