From 1c17c59b96bdd5d714014a8f7cf45186f2f55d5d Mon Sep 17 00:00:00 2001 From: Nathan Goldbaum Date: Wed, 16 Jul 2025 13:19:21 -0600 Subject: [PATCH 1/3] build free-threaded wheels --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 94e5d58e1..cb38c2bfc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -65,6 +65,7 @@ jobs: CIBW_SKIP: "pp*" CIBW_TEST_COMMAND: mv {project}/av {project}/av.disabled && python -m pytest {package}/tests && mv {project}/av.disabled {project}/av CIBW_TEST_REQUIRES: pytest numpy + CIBW_ENABLE: cpython-freethreading run: | pip install cibuildwheel delvewheel cibuildwheel --output-dir dist From 940bae46f4d1b31287bfae8338ab6361ffe4bd46 Mon Sep 17 00:00:00 2001 From: Nathan Goldbaum Date: Wed, 16 Jul 2025 13:38:44 -0600 Subject: [PATCH 2/3] Build extension modules as freethreading_compatible --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index ebc2146fe..ce6bcc388 100644 --- a/setup.py +++ b/setup.py @@ -150,6 +150,7 @@ def parse_cflags(raw_flags): "embedsignature": True, "binding": False, "language_level": 3, + "freethreading_compatible": True, } # Add the cythonized loudnorm extension to ext_modules From 910adcc16231328c6a11e6c886616bfa8c5d9785 Mon Sep 17 00:00:00 2001 From: Nathan Goldbaum Date: Wed, 3 Sep 2025 09:27:42 -0600 Subject: [PATCH 3/3] add a free-threaded build to the smoke tests --- .github/workflows/smoke.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/smoke.yml b/.github/workflows/smoke.yml index b6189e26b..da2c4dee0 100644 --- a/.github/workflows/smoke.yml +++ b/.github/workflows/smoke.yml @@ -34,6 +34,7 @@ jobs: fail-fast: false matrix: config: + - {os: ubuntu-24.04, python: "3.14t", ffmpeg: "8.0", extras: true} - {os: ubuntu-24.04, python: "3.12", ffmpeg: "8.0", extras: true} - {os: ubuntu-24.04, python: "pypy3.10", ffmpeg: "8.0"} - {os: macos-14, python: "3.9", ffmpeg: "8.0"} @@ -50,6 +51,7 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.config.python }} + allow-prereleases: true - name: OS Packages run: |