From ebfdee268f5638c63ae27ba7ba7d227cfa99e1d7 Mon Sep 17 00:00:00 2001 From: JP-Ellis Date: Fri, 13 Oct 2023 11:06:23 +1100 Subject: [PATCH] feat: add python 3.12 support Update the build scripts to test and target Python 3.12 released on 2 October 2023. As the dependency on distutils has been removed already, there are no other changes required. Signed-off-by: JP-Ellis --- .cirrus.yml | 2 ++ .github/workflows/build.yml | 2 +- .github/workflows/test.yml | 6 +++--- pyproject.toml | 21 +++++++++++++++++---- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index f6ba0c61ef..7ad9e90825 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -17,6 +17,7 @@ linux_arm64_task: - IMAGE: "python:3.9-slim" - IMAGE: "python:3.10-slim" - IMAGE: "python:3.11-slim" + - IMAGE: "python:3.12-slim" arm_container: image: $IMAGE install_script: @@ -37,6 +38,7 @@ macosx_arm64_task: - PYTHON: "3.9" - PYTHON: "3.10" - PYTHON: "3.11" + - PYTHON: "3.12" install_script: - brew update - brew install pyenv diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f2d5cd65d5..40a20f5785 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ concurrency: cancel-in-progress: true env: - STABLE_PYTHON_VERSION: "3.11" + STABLE_PYTHON_VERSION: "3.12" CIBW_BUILD_FRONTEND: build jobs: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e63ff5e85d..8ed5e29b1f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ concurrency: cancel-in-progress: true env: - STABLE_PYTHON_VERSION: "3.11" + STABLE_PYTHON_VERSION: "3.12" PYTEST_ADDOPTS: --color=yes jobs: @@ -28,12 +28,12 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - python-version: ["3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] experimental: [false] include: - # Run tests against the next Python version, but no need for the full list of OSes. os: ubuntu-latest - python-version: "3.12-dev" + python-version: "3.13.0-alpha.0 - 3.13" experimental: true steps: diff --git a/pyproject.toml b/pyproject.toml index e026884fea..64eace8114 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,6 +22,7 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Testing", ] @@ -87,7 +88,13 @@ dev = [ ################################################################################ [build-system] -requires = ["hatchling", "packaging", "requests", "cffi"] +requires = [ + "hatchling", + "packaging", + "requests", + "cffi", + "setuptools ; python_version >= '3.12'", +] build-backend = "hatchling.build" [tool.hatch.version] @@ -110,8 +117,14 @@ artifacts = ["pact/bin/*", "pact/lib/*", "pact/v3/_ffi.*"] # Install dev dependencies in the default environment to simplify the developer # workflow. [tool.hatch.envs.default] -features = ["dev"] -extra-dependencies = ["hatchling", "packaging", "requests", "cffi"] +features = ["dev"] +extra-dependencies = [ + "hatchling", + "packaging", + "requests", + "cffi", + "setuptools ; python_version >= '3.12'", +] [tool.hatch.envs.default.scripts] lint = ["black --check --diff {args:.}", "ruff {args:.}", "mypy {args:.}"] @@ -125,7 +138,7 @@ all = ["lint", "test", "example"] features = ["test"] [[tool.hatch.envs.test.matrix]] -python = ["3.8", "3.9", "3.10", "3.11"] +python = ["3.8", "3.9", "3.10", "3.11", "3.12"] [tool.hatch.envs.test.scripts] test = "pytest {args:tests/}"