diff --git a/.github/workflows/build-virtualenv-caches.yml b/.github/workflows/build-virtualenv-caches.yml index c84660d83..343a6f0d7 100644 --- a/.github/workflows/build-virtualenv-caches.yml +++ b/.github/workflows/build-virtualenv-caches.yml @@ -45,6 +45,8 @@ jobs: - '3.10' - '3.11' - '3.12' + - '3.13' + - '3.14' steps: - uses: actions/checkout@v6 - uses: actions/setup-python@v6 @@ -74,6 +76,8 @@ jobs: - '3.10' - '3.11' - '3.12' + - '3.13' + - '3.14' steps: - uses: actions/checkout@v6 - uses: actions/setup-python@v6 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 71bd9ee14..8135c8b63 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -47,6 +47,8 @@ jobs: - '3.10' - '3.11' - '3.12' + - '3.13' + - '3.14' steps: - uses: actions/checkout@v6 - uses: actions/setup-python@v6 @@ -82,6 +84,8 @@ jobs: - '3.10' - '3.11' - '3.12' + - '3.13' + - '3.14' steps: - uses: actions/checkout@v6 - uses: actions/setup-python@v6 diff --git a/README.md b/README.md index 7f166df0b..6d904a1da 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Commodore also supports additional processing on the output of Kapitan, such as ## System Requirements -* Python 3.10 - 3.12 with `python3-dev` and `python3-venv` updated +* Python 3.10 - 3.14 with `python3-dev` and `python3-venv` updated * [jsonnet-bundler](https://github.com/jsonnet-bundler/jsonnet-bundler) * Our fork [projectsyn/jsonnet-bundler](https://github.com/projectsyn/jsonnet-bundler) is currently recommended. It parallelizes fetching of dependencies, which speeds up Commodore significantly, and has fixes to make the dependency fetching more deterministic. diff --git a/docs/modules/ROOT/pages/explanation/running-commodore.adoc b/docs/modules/ROOT/pages/explanation/running-commodore.adoc index aa67a432d..e464f7f72 100644 --- a/docs/modules/ROOT/pages/explanation/running-commodore.adoc +++ b/docs/modules/ROOT/pages/explanation/running-commodore.adoc @@ -20,7 +20,7 @@ We recommend that you use the Commodore Python package provided on PyPI to make === Prerequisites * `git` -* A Python version between 3.10 and 3.12 as `python3` and the Python `venv` module. +* A Python version between 3.10 and 3.14 as `python3` and the Python `venv` module. We recommend that you install Python and the `venv` module with your preferred package manager. * Installation may require a working C compiler, the Python 3 development package, and the FFI development package on some operating systems. For Commodore v1.29.1 and newer, all dependencies should be available as prebuilt wheels for Linux and macOS. diff --git a/docs/modules/ROOT/pages/how-to/installing-commodore.adoc b/docs/modules/ROOT/pages/how-to/installing-commodore.adoc index 7242c9fd8..18f88f8ff 100644 --- a/docs/modules/ROOT/pages/how-to/installing-commodore.adoc +++ b/docs/modules/ROOT/pages/how-to/installing-commodore.adoc @@ -33,17 +33,17 @@ Please check your operating system's documentation for instructions to setup a w + [source,bash] ---- -uv tool install --python=python3.12 --python-preference=system syn-commodore +uv tool install --python=python3.14 --python-preference=system syn-commodore ---- + [TIP] ==== -Commodore currently only supports Python 3.10 - Python 3.12. +Commodore currently supports Python 3.10 - Python 3.14. -This command will prefer using your system's version of Python 3.12. -However, `uv` will download a copy of Python 3.12 if `python3.12` isn't available on your system. +This command will prefer using your system's version of Python 3.14. +However, `uv` will download a copy of Python 3.14 if `python3.14` isn't available on your system. -If you'd prefer to use your system's `python3.10` or `python3.11` you can adjust the command accordingly. +If you'd prefer to use your system's `python3`, you can omit the `--python` and `--python-preference` flags. ==== + [TIP] diff --git a/poetry.lock b/poetry.lock index 494c5e9d2..11eb67c54 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1020,7 +1020,10 @@ files = [ [package.dependencies] google-auth = ">=2.14.1,<3.0.0" googleapis-common-protos = ">=1.63.2,<2.0.0" -proto-plus = ">=1.22.3,<2.0.0" +proto-plus = [ + {version = ">=1.22.3,<2.0.0"}, + {version = ">=1.25.0,<2.0.0", markers = "python_version >= \"3.13\""}, +] protobuf = ">=4.25.8,<8.0.0" requests = ">=2.20.0,<3.0.0" @@ -3400,5 +3403,5 @@ dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "ruff", "sph [metadata] lock-version = "2.1" -python-versions = ">=3.10, <3.13" -content-hash = "41092a6c6fec84e059cc6ac369b5a1d0095123b10f35dfd9c169b6ddd5cd77c0" +python-versions = ">=3.10, <3.15" +content-hash = "f3cc6733e8ef0da64c17e79e0ec14c438408795dbbfd4a0a4e38a885e43b1720" diff --git a/pyproject.toml b/pyproject.toml index 2bce24855..f41539091 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ include = [ ] [tool.poetry.dependencies] -python = ">=3.10, <3.13" +python = ">=3.10, <3.15" # NOTE: We restrict boto3/botocore versions to reduce complexity of Poetry's # dependency resolution significantly, cf. # https://github.com/orgs/python-poetry/discussions/8165#discussioncomment-6387378 diff --git a/tox.mk b/tox.mk index 76461a712..57720ba66 100644 --- a/tox.mk +++ b/tox.mk @@ -39,7 +39,7 @@ lintenv_mypy: lintenv_black: $(TOX_COMMAND) -e black --notest -.PHONY: test_py3.10 test_py3.11 test_py3.12 +.PHONY: test_py3.10 test_py3.11 test_py3.12 test_py3.13 test_py3.14 test_py3.10: $(TOX_COMMAND) -e py310 @@ -50,7 +50,13 @@ test_py3.11: test_py3.12: $(TOX_COMMAND) -e py312 -.PHONY: testenv_py3.10 testenv_py3.11 testenv_py3.12 +test_py3.13: + $(TOX_COMMAND) -e py313 + +test_py3.14: + $(TOX_COMMAND) -e py314 + +.PHONY: testenv_py3.10 testenv_py3.11 testenv_py3.12 testenv_py3.13 testenv_py3.14 testenv_py3.10: $(TOX_COMMAND) -e py310 --notest @@ -61,7 +67,13 @@ testenv_py3.11: testenv_py3.12: $(TOX_COMMAND) -e py312 --notest -.PHONY: bench_py3.10 bench_py3.11 bench_py3.12 +testenv_py3.13: + $(TOX_COMMAND) -e py313 --notest + +testenv_py3.1k: + $(TOX_COMMAND) -e py314 --notest + +.PHONY: bench_py3.10 bench_py3.11 bench_py3.12 bench_py3.13 bench_py3.14 bench_py3.10: $(TOX_COMMAND) -e py310-bench @@ -72,7 +84,13 @@ bench_py3.11: bench_py3.12: $(TOX_COMMAND) -e py312-bench -.PHONY: benchenv_py3.10 benchenv_py3.11 benchenv_py3.12 +bench_py3.13: + $(TOX_COMMAND) -e py312-bench + +bench_py3.14: + $(TOX_COMMAND) -e py312-bench + +.PHONY: benchenv_py3.10 benchenv_py3.11 benchenv_py3.12 benchenv_py3.13 benchenv_py3.14 benchenv_py3.10: $(TOX_COMMAND) -e py310-bench --notest @@ -82,3 +100,9 @@ benchenv_py3.11: benchenv_py3.12: $(TOX_COMMAND) -e py312-bench --notest + +benchenv_py3.13: + $(TOX_COMMAND) -e py313-bench --notest + +benchenv_py3.14: + $(TOX_COMMAND) -e py314-bench --notest