Skip to content

fix(ci): build free-threaded 3.14 wheels with cp314t ABI to stop upload collision#2340

Open
antonwolfy wants to merge 1 commit into
masterfrom
proper-enabling-free-threading-python-in-ci
Open

fix(ci): build free-threaded 3.14 wheels with cp314t ABI to stop upload collision#2340
antonwolfy wants to merge 1 commit into
masterfrom
proper-enabling-free-threading-python-in-ci

Conversation

@antonwolfy

@antonwolfy antonwolfy commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

The Python 3.14 conda/wheel build matrix intended to produce two variants — GIL-enabled (cp314) and free-threaded (cp314t) — but both entries actually built the same GIL interpreter. This caused the free-threading upload job to fail with a conflict, and meant no free-threaded package was ever produced.

The matrix used an empty python_spec for the entry it labeled 3.14t (free-threading), relying on a bare conda build -- python 3.14 to select the free-threaded interpreter:

python: ['3.10', '3.11', '3.12', '3.13', '3.14']
python_spec: ['']
include:
  - python: '3.14'
    python_spec: '3.14.* *_cp314'   # GIL

But in conda-forge, free-threading is opt-in only — it is not the default build for a bare python=3.14:

  • Per PEP 779, 3.14 free-threading is "officially supported but still optional" (Phase II); making it the default is deferred to a future PEP (Phase III).
  • The conda-forge global pinning matrix lists only the GIL ABI (*_cp314) as the default python variant; the free-threaded ABI (*_cp314t) must be requested explicitly.

So --python 3.14 resolved to the standard cp314 interpreter — identical to the explicit *_cp314 entry. Both jobs emitted a cp314-cp314 wheel with the same filename, colliding on upload.

  • Have you provided a meaningful PR description?
  • Have you added a test, reproducer or referred to an issue with a reproducer?
  • Have you tested your changes locally for CPU and GPU devices?
  • Have you made sure that new changes do not introduce compiler warnings?
  • Have you checked performance impact of proposed changes?
  • Have you added documentation for your changes, if necessary?
  • Have you added your changes to the changelog?
  • If this PR is a work in progress, are you opening the PR as a draft?

@antonwolfy antonwolfy self-assigned this Jul 20, 2026
@github-actions

Copy link
Copy Markdown

@coveralls

Copy link
Copy Markdown
Collaborator

Coverage Status

coverage: 74.579%. remained the same — proper-enabling-free-threading-python-in-ci into master

@antonwolfy
antonwolfy marked this pull request as ready for review July 20, 2026 15:23
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