diff --git a/.github/config/macos-pkg-choices-freethreaded-3.15t.xml b/.github/config/macos-pkg-choices-freethreaded-3.15t.xml new file mode 100644 index 00000000..271377a8 --- /dev/null +++ b/.github/config/macos-pkg-choices-freethreaded-3.15t.xml @@ -0,0 +1,14 @@ + + + + + + attributeSetting + 1 + choiceAttribute + selected + choiceIdentifier + org.python.Python.PythonTFramework-3.15 + + + diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e40d10de..9bf402c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,6 +19,8 @@ jobs: - {VERSION: "3.9", NOXSESSION: "tests"} - {VERSION: "3.14", NOXSESSION: "tests"} - {VERSION: "3.14t", NOXSESSION: "tests"} + - {VERSION: "3.15", NOXSESSION: "tests"} + - {VERSION: "3.15t", NOXSESSION: "tests"} MACOS: - macos-15-intel - macos-latest @@ -32,6 +34,7 @@ jobs: uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.PYTHON.VERSION }} + allow-prereleases: true - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 timeout-minutes: 5 with: @@ -57,6 +60,8 @@ jobs: - {VERSION: "3.9", NOXSESSION: "tests"} - {VERSION: "3.14", NOXSESSION: "tests"} - {VERSION: "3.14t", NOXSESSION: "tests"} + - {VERSION: "3.15", NOXSESSION: "tests"} + - {VERSION: "3.15t", NOXSESSION: "tests"} name: "Python ${{ matrix.PYTHON.VERSION }} on ${{ matrix.WINDOWS.WINDOWS }}" steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -67,6 +72,7 @@ jobs: uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.PYTHON.VERSION }} + allow-prereleases: true architecture: ${{ matrix.WINDOWS.ARCH }} - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 timeout-minutes: 5 @@ -96,6 +102,8 @@ jobs: - {VERSION: "3.13", NOXSESSION: "tests"} - {VERSION: "3.14", NOXSESSION: "tests"} - {VERSION: "3.14t", NOXSESSION: "tests"} + - {VERSION: "3.15", NOXSESSION: "tests"} + - {VERSION: "3.15t", NOXSESSION: "tests"} - {VERSION: "pypy-3.11", NOXSESSION: "tests"} # MSRV @@ -112,6 +120,7 @@ jobs: uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.PYTHON.VERSION }} + allow-prereleases: true - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 timeout-minutes: 5 with: diff --git a/.github/workflows/wheel-builder.yml b/.github/workflows/wheel-builder.yml index 4bdbdc91..e4ce0f5c 100644 --- a/.github/workflows/wheel-builder.yml +++ b/.github/workflows/wheel-builder.yml @@ -50,6 +50,7 @@ jobs: - { VERSION: "cp39-cp39", ABI_VERSION: 'cp39' } - { VERSION: "pp311-pypy311_pp73" } - { VERSION: "cp314-cp314t" } + - { VERSION: "cp315-cp315t" } MANYLINUX: - { NAME: "manylinux2014_x86_64", CONTAINER: "cryptography-manylinux2014:x86_64", RUNNER: "ubuntu-latest" } - { NAME: "manylinux_2_28_x86_64", CONTAINER: "cryptography-manylinux_2_28:x86_64", RUNNER: "ubuntu-latest"} @@ -138,6 +139,9 @@ jobs: - VERSION: '3.14t' DOWNLOAD_URL: 'https://www.python.org/ftp/python/3.14.0/python-3.14.0-macos11.pkg' BIN_PATH: '/Library/Frameworks/PythonT.framework/Versions/3.14/bin/python3.14t' + - VERSION: '3.15t' + DOWNLOAD_URL: 'https://www.python.org/ftp/python/3.15.0/python-3.15.0-macos11.pkg' + BIN_PATH: '/Library/Frameworks/PythonT.framework/Versions/3.15/bin/python3.15t' name: "Python ${{ matrix.PYTHON.VERSION }} ${{ matrix.PYTHON.ABI_VERSION }} on macOS" steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -146,6 +150,7 @@ jobs: ref: ${{ github.event.inputs.version || github.ref }} sparse-checkout: | .github/config/macos-pkg-choices-freethreaded-3.14t.xml + .github/config/macos-pkg-choices-freethreaded-3.15t.xml persist-credentials: false - name: Install Python if: ${{ !endsWith(matrix.PYTHON.VERSION, 't') }} @@ -203,6 +208,7 @@ jobs: PYTHON: - {VERSION: "3.11", ABI_VERSION: "cp39"} - {VERSION: "3.14t"} + - {VERSION: "3.15t"} name: "${{ matrix.PYTHON.VERSION }} ${{ matrix.PYTHON.ABI_VERSION }} ${{ matrix.WINDOWS.ARCH }}" steps: - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 @@ -212,6 +218,7 @@ jobs: uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.PYTHON.VERSION }} + allow-prereleases: true architecture: ${{ matrix.WINDOWS.ARCH }} - uses: dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f with: diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 3a790dbb..524eeb74 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -8,6 +8,8 @@ Unreleased * Dropped support for Python 3.8. * Dropped support for free-threaded Python 3.13 (free-threaded Python 3.14 is still supported). +* Added support for Python 3.15 and free-threaded Python 3.15. +* We now publish wheels for free-threaded Python 3.15. 5.0.0 ----- diff --git a/pyproject.toml b/pyproject.toml index ebfc29fc..9747a635 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,6 +28,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Programming Language :: Python :: Free Threading :: 3 - Stable", ] requires-python = ">= 3.9"