diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 127ea1b..4eba0bf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,6 +30,12 @@ jobs: include: - archs: auto platform: auto + - os: android-intel + runs-on: ubuntu-latest + platform: android + - os: android-arm + runs-on: macos-latest + platform: android - os: ios runs-on: macos-latest platform: ios @@ -58,12 +64,25 @@ jobs: submodules: true persist-credentials: false + # GitHub Actions can't currently run the Android emulator on macOS. + - name: Skip Android tests on macOS + if: matrix.os == 'android-arm' + run: echo "CIBW_TEST_COMMAND=" >> "$GITHUB_ENV" + + # https://github.blog/changelog/2024-04-02-github-actions-hardware-accelerated-android-virtualization-now-available/ + - name: Enable KVM for Android emulator + if: matrix.os == 'android-intel' + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + - name: Build wheels uses: pypa/cibuildwheel@ffd835cef18fa11522f608fc0fa973b89f5ddc87 # 3.1.0 env: CIBW_ENABLE: pypy pypy-eol CIBW_PLATFORM: ${{ matrix.platform }} - CIBW_ARCHS: ${{ matrix.archs }} + CIBW_ARCHS: ${{ matrix.archs || 'auto' }} MAXMINDDB_REQUIRE_EXTENSION: 1 - uses: actions/upload-artifact@v4 diff --git a/.github/workflows/test-libmaxminddb.yml b/.github/workflows/test-libmaxminddb.yml index a2210bb..8d44203 100644 --- a/.github/workflows/test-libmaxminddb.yml +++ b/.github/workflows/test-libmaxminddb.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: - env: [3.9, "3.10", 3.11, 3.12, 3.13] + env: [3.9, "3.10", 3.11, 3.12, 3.13, 3.14] # We don't test on Windows currently due to issues # build libmaxminddb there. os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest] @@ -35,10 +35,10 @@ jobs: uses: astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc # 6.4.3 - name: Install tox - run: uv tool install --python-preference only-managed --python 3.13 tox --with tox-uv --with tox-gh + run: uv tool install --python-preference only-managed --python 3.14 tox --with tox-uv --with tox-gh - name: Install Python - if: matrix.env != '3.13' + if: matrix.env != '3.14' run: uv python install --python-preference only-managed ${{ matrix.env }} - name: Install libmaxminddb diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1b6f070..70953ee 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - env: [3.9, "3.10", 3.11, 3.12, 3.13] + env: [3.9, "3.10", 3.11, 3.12, 3.13, 3.14] os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest] steps: - uses: actions/checkout@v4 @@ -25,9 +25,9 @@ jobs: - name: Install the latest version of uv uses: astral-sh/setup-uv@e92bafb6253dcd438e0484186d7669ea7a8ca1cc # 6.4.3 - name: Install tox - run: uv tool install --python-preference only-managed --python 3.13 tox --with tox-uv --with tox-gh + run: uv tool install --python-preference only-managed --python 3.14 tox --with tox-uv --with tox-gh - name: Install Python - if: matrix.env != '3.13' + if: matrix.env != '3.14' run: uv python install --python-preference only-managed ${{ matrix.env }} - name: Setup test suite run: tox run -vv --notest --skip-missing-interpreters false diff --git a/HISTORY.rst b/HISTORY.rst index cff1e0e..6a7ec64 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -6,9 +6,10 @@ History 2.8.0 ++++++++++++++++++ +* Python 3.14 is now officially supported, including binary wheels. * We have updated the platforms that we build binary wheels for. In particular, - we now build wheels for iOS, Windows Arm, and Pyodide, and we have dropped - 686 (32 bit), ppc64le, and s390x builds on Linux. + we now build wheels for Android, iOS, Windows Arm, and Pyodide, and we have + dropped 686 (32 bit), ppc64le, and s390x builds on Linux. 2.7.0 (2025-05-05) ++++++++++++++++++ diff --git a/pyproject.toml b/pyproject.toml index 365c0f2..4e5a21e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Internet", "Topic :: Internet :: Proxy Servers", ] @@ -98,6 +99,7 @@ env_list = [ "3.11", "3.12", "3.13", + "3.14", "lint", ] skip_missing_interpreters = false @@ -112,7 +114,7 @@ commands = [ [tool.tox.env.lint] description = "Code linting" -python = "3.13" +python = "3.14" dependency_groups = [ "dev", "lint", @@ -124,7 +126,8 @@ commands = [ ] [tool.tox.gh.python] -"3.13" = ["3.13", "lint"] +"3.14" = ["3.14", "lint"] +"3.13" = ["3.13"] "3.12" = ["3.12"] "3.11" = ["3.11"] "3.10" = ["3.10"]