diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 3d8748de..140c4549 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -16,7 +16,6 @@ jobs: strategy: matrix: py: - - "3.8" - "3.9" - "3.10" - "3.11" @@ -24,24 +23,58 @@ jobs: - "3.13" - "pypy-3.9" - "pypy-3.10" + # Pre-release os: - - "ubuntu-latest" + - "ubuntu-22.04" - "windows-latest" - - "macos-latest" + - "macos-14" # arm64 + - "macos-13" # x64 + architecture: + - x64 + - x86 + - arm64 include: - - py: "pypy-3.9" - toxenv: "pypy39" - - py: "pypy-3.10" - toxenv: "pypy310" + - py: "pypy-3.9" + toxenv: "pypy39" + - py: "pypy-3.10" + toxenv: "pypy310" exclude: + # Ubuntu does not have x86/arm64 Python + - os: "ubuntu-22.04" + architecture: x86 + - os: "ubuntu-22.04" + architecture: arm64 + # MacOS we need to make sure to remove x86 on all + # We need to run no arm64 on macos-13 (Intel), but some + # Python versions: 3.9/3.10 + # + # From 3.11 onward, there is support for running x64 and + # arm64 on Apple Silicon based systems (macos-14) + - os: "macos-13" + architecture: x86 + - os: "macos-13" + architecture: arm64 + - os: "macos-14" + architecture: x86 + - os: "macos-14" + architecture: x64 + py: "3.9" + - os: "macos-14" + architecture: x64 + py: "3.10" + # Windows does not have arm64 releases + - os: "windows-latest" + architecture: arm64 # Don't run all PyPy versions except latest on # Windows/macOS. They are expensive to run. - os: "windows-latest" py: "pypy-3.9" - - os: "macos-latest" + - os: "macos-13" + py: "pypy-3.9" + - os: "macos-14" py: "pypy-3.9" - name: "Python: ${{ matrix.py }} on ${{ matrix.os }}" + name: "Python: ${{ matrix.py }}-${{ matrix.architecture }} on ${{ matrix.os }}" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -49,6 +82,7 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.py }} + architecture: ${{ matrix.architecture }} - run: pip install tox - name: Running tox with specific toxenv if: ${{ matrix.toxenv != '' }} @@ -58,40 +92,41 @@ jobs: - name: Running tox for current python version if: ${{ matrix.toxenv == '' }} run: tox -e py + coverage: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: Validate coverage steps: - uses: actions/checkout@v4 - - name: Setup python 3.8 + - name: Setup python uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: "3.13" architecture: x64 - run: pip install tox - - run: tox -e py38,coverage + - run: tox -e py313,coverage docs: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: Build the documentation steps: - uses: actions/checkout@v4 - name: Setup python uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: "3.13" architecture: x64 - run: pip install tox - run: tox -e docs lint: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 name: Lint the package steps: - uses: actions/checkout@v4 - name: Setup python uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: "3.13" architecture: x64 - run: pip install tox - run: tox -e lint diff --git a/pyproject.toml b/pyproject.toml index 7d8bb6cb..c1ca2d06 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ requires = ["setuptools >= 41"] build-backend = "setuptools.build_meta" [tool.black] -target-version = ['py38', 'py39', 'py310', 'py311', 'py312'] +target-version = ['py39', 'py310', 'py311', 'py312', 'py313'] exclude = ''' /( \.git diff --git a/setup.py b/setup.py index c302cdca..a83f673a 100644 --- a/setup.py +++ b/setup.py @@ -36,11 +36,11 @@ "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", "Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ], @@ -52,7 +52,7 @@ license="MIT", packages=find_packages("src", exclude=["tests"]), package_dir={"": "src"}, - python_requires=">=3.8", + python_requires=">=3.9.0", install_requires=[ "legacy-cgi>=2.6; python_version>='3.13'", ], diff --git a/tox.ini b/tox.ini index fcfc2c43..c04f38f4 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,7 @@ [tox] envlist = lint, - py38,py39,py310,py311,py312,py313,pypy39,pypy310, + py39,py310,py311,py312,py313,pypy39,pypy310, coverage, docs, isolated_build = True