diff --git a/.cirrus.yml b/.cirrus.yml index f6ba0c61e..cbd26fdc3 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -12,11 +12,13 @@ linux_arm64_task: env: PATH: ${HOME}/.local/bin:${PATH} CIRRUS_CLONE_SUBMODULES: "true" + HATCH_VERBOSE: 1 matrix: - IMAGE: "python:3.8-slim" - 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 +39,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 f2d5cd65d..284125bab 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,8 @@ concurrency: cancel-in-progress: true env: - STABLE_PYTHON_VERSION: "3.11" + STABLE_PYTHON_VERSION: "3.12" + HATCH_VERBOSE: 1 CIBW_BUILD_FRONTEND: build jobs: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e63ff5e85..838cde4a7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,8 +13,9 @@ concurrency: cancel-in-progress: true env: - STABLE_PYTHON_VERSION: "3.11" + STABLE_PYTHON_VERSION: "3.12" PYTEST_ADDOPTS: --color=yes + HATCH_VERBOSE: 1 jobs: test: @@ -28,12 +29,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: @@ -59,6 +60,16 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} + test-conlusion: + name: Test matrix complete + + runs-on: ubuntu-latest + needs: + - test + + steps: + - run: echo "Test matrix completed successfully." + example: name: Example diff --git a/pyproject.toml b/pyproject.toml index e026884fe..44bc2ed97 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,11 +22,12 @@ 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", ] -requires-python = ">=3.8, <3.12" +requires-python = ">=3.8" # Dependencies of Pact Python should be specified using the broadest range # compatible version unless: @@ -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/}"