Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ jobs:
- '3.10'
- '3.11'
- '3.12'
- '3.13'

steps:
- uses: actions/checkout@v4
Expand Down
37 changes: 23 additions & 14 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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" \
Expand All @@ -66,32 +65,42 @@ 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
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
Expand Down
1 change: 1 addition & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -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]
Expand All @@ -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