diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 239d026..37dbff9 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,6 +22,7 @@ jobs: - '3.10' - '3.11' - '3.12' + - '3.13' steps: - uses: actions/checkout@v4 diff --git a/Makefile b/Makefile index fb02ade..45ee49e 100644 --- a/Makefile +++ b/Makefile @@ -54,10 +54,9 @@ mypy: open-coverage: $(or $(BROWSER),firefox) ./reports/coverage_html/index.html -# Run complete tox test suite in a multi-python Docker container -.PHONY: docker-tox -docker-tox: TOX_ARGS='-e clean,py312,py311,py310,report,flake8,py312-mypy' -docker-tox: +# Base target for running tox in a multi-python Docker container (don't use directly) +.PHONY: _docker-tox +_docker-tox: docker run --rm --tty \ --user $(DOCKER_USER) \ --mount "type=bind,src=$(shell pwd),target=/code" \ @@ -66,14 +65,21 @@ docker-tox: $(DOCKER_MULTI_PYTHON_IMAGE) \ tox run --workdir .tox_docker $(TOX_ARGS) +# Run complete tox test suite in a multi-python Docker container +.PHONY: docker-tox +docker-tox: TOX_ARGS='-e clean,py313,py312,py311,py310,report,flake8,py313-mypy' +docker-tox: _docker-tox + # Run partial tox test suites in Docker -.PHONY: docker-tox-py312 docker-tox-py311 docker-tox-py310 +.PHONY: docker-tox-py313 docker-tox-py312 docker-tox-py311 docker-tox-py310 +docker-test-py313: TOX_ARGS="-e clean,py313,py313-report" +docker-test-py313: _docker-tox docker-test-py312: TOX_ARGS="-e clean,py312,py312-report" -docker-test-py312: docker-tox +docker-test-py312: _docker-tox docker-test-py311: TOX_ARGS="-e clean,py311,py311-report" -docker-test-py311: docker-tox +docker-test-py311: _docker-tox docker-test-py310: TOX_ARGS="-e clean,py310,py310-report" -docker-test-py310: docker-tox +docker-test-py310: _docker-tox # Run all tox test suites, but separately to check code coverage individually .PHONY: docker-test-all @@ -81,17 +87,20 @@ docker-test-all: make docker-test-py310 make docker-test-py311 make docker-test-py312 + make docker-test-py313 # Run mypy using all different (or specific) Python versions in Docker -.PHONY: docker-mypy-all docker-mypy-py312 docker-mypy-py311 docker-mypy-py310 -docker-mypy-all: TOX_ARGS="-e py312-mypy,py311-mypy,py310-mypy" -docker-mypy-all: docker-tox +.PHONY: docker-mypy-all docker-mypy-py313 docker-mypy-py312 docker-mypy-py311 docker-mypy-py310 +docker-mypy-all: TOX_ARGS="-e py313-mypy,py312-mypy,py311-mypy,py310-mypy" +docker-mypy-all: _docker-tox +docker-mypy-py313: TOX_ARGS="-e py313-mypy" +docker-mypy-py313: _docker-tox docker-mypy-py312: TOX_ARGS="-e py312-mypy" -docker-mypy-py312: docker-tox +docker-mypy-py312: _docker-tox docker-mypy-py311: TOX_ARGS="-e py311-mypy" -docker-mypy-py311: docker-tox +docker-mypy-py311: _docker-tox docker-mypy-py310: TOX_ARGS="-e py310-mypy" -docker-mypy-py310: docker-tox +docker-mypy-py310: _docker-tox # Pull the latest image of the multi-python Docker image .PHONY: docker-pull diff --git a/setup.cfg b/setup.cfg index 1ddb0c9..fd0f303 100644 --- a/setup.cfg +++ b/setup.cfg @@ -20,6 +20,7 @@ classifiers = 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 Topic :: Software Development :: Libraries :: Python Modules Topic :: Utilities diff --git a/tox.ini b/tox.ini index ea1ea53..dd1a37e 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] minversion = 4.5.1 -envlist = clean,py{312,311,310},report,flake8,mypy +envlist = clean,py{313,312,311,310},report,flake8,mypy skip_missing_interpreters = true [flake8] @@ -20,13 +20,13 @@ commands = python -m pytest --cov --cov-append {posargs} [testenv:flake8] commands = flake8 src/ tests/ -[testenv:mypy,py{312,311,310}-mypy] +[testenv:mypy,py{313,312,311,310}-mypy] commands = mypy [testenv:clean] commands = coverage erase -[testenv:report,py{312,311,310}-report] +[testenv:report,py{313,312,311,310}-report] commands = coverage html coverage report --fail-under=100