@@ -2,25 +2,107 @@ name: tox
22
33on :
44 push :
5+ branches : [develop]
56 pull_request :
67 workflow_dispatch :
78
9+ concurrency :
10+ group : " ${{ github.workflow }}-${{ github.ref }}"
11+ cancel-in-progress : true
12+
13+ permissions :
14+ contents : read
15+
816jobs :
17+ perf-budget :
18+ name : Performance budget
19+ runs-on : ubuntu-latest
20+ timeout-minutes : 10
21+ steps :
22+ - uses : actions/checkout@v6
23+ - name : Set up Python 3.13
24+ uses : actions/setup-python@v6
25+ with :
26+ python-version : ' 3.13'
27+ - name : Install dependencies
28+ run : |
29+ python -m pip install --upgrade pip
30+ python -m pip install -r tests/requirements.txt
31+ python -m pip install -e .
32+ - name : Performance budget
33+ run : python -m pytest tests/test_perf_budget.py -v --no-cov
34+
935 build :
36+ name : tox (${{ matrix.tox-env }})
1037 runs-on : ubuntu-latest
1138 timeout-minutes : 10
1239 strategy :
40+ fail-fast : false
1341 matrix :
14- python-version : ['3.9', '3.10', '3.11', '3.12']
42+ include :
43+ - python-version : ' 3.10'
44+ tox-env : py310
45+ - python-version : ' 3.11'
46+ tox-env : py311
47+ - python-version : ' 3.12'
48+ tox-env : py312
49+ - python-version : ' 3.13'
50+ tox-env : py313
51+ - python-version : ' 3.14'
52+ tox-env : py314
53+ # Python 3.15 is a pre-release and currently unsupported by
54+ # typing_extensions (no released version survives
55+ # `from typing_extensions import *` on 3.15 because
56+ # no_type_check_decorator is still listed in __all__ after its
57+ # removal from typing), which breaks the python_utils import.
58+ # Failures are advisory until upstream catches up.
59+ - python-version : ' 3.15-dev'
60+ tox-env : py315
61+ experimental : true
62+ - python-version : ' 3.14'
63+ tox-env : docs
64+ - python-version : ' 3.14'
65+ tox-env : ruff
66+ - python-version : ' 3.14'
67+ tox-env : codespell
68+
69+ steps :
70+ - uses : actions/checkout@v6
71+ - name : Set up Python ${{ matrix.python-version }}
72+ uses : actions/setup-python@v6
73+ with :
74+ python-version : ${{ matrix.python-version }}
75+ allow-prereleases : true
76+ - name : Install dependencies
77+ run : |
78+ python -m pip install --upgrade pip tox
79+ - name : Test with tox
80+ # Step-level continue-on-error keeps the job green for
81+ # experimental (pre-release Python) environments while still
82+ # showing the failing step in the logs
83+ continue-on-error : ${{ matrix.experimental || false }}
84+ run : tox -e ${{ matrix.tox-env }}
1585
86+ windows :
87+ name : tox (windows / py312)
88+ runs-on : windows-latest
89+ timeout-minutes : 10
90+ env :
91+ # Force UTF-8 I/O so unicode-marker tests (e.g. test_unicode) don't
92+ # hit UnicodeEncodeError against the legacy Windows code page under
93+ # pytest's fd-level capture.
94+ PYTHONUTF8 : ' 1'
1695 steps :
17- - uses : actions/checkout@v3
18- - name : Set up Python ${{ matrix.python-version }}
19- uses : actions/setup-python@v4
20- with :
21- python-version : ${{ matrix.python-version }}
22- - name : Install dependencies
23- run : |
24- python -m pip install --upgrade pip tox
25- - name : Test with tox
26- run : tox
96+ - uses : actions/checkout@v6
97+ - name : Set up Python 3.12
98+ uses : actions/setup-python@v6
99+ with :
100+ python-version : ' 3.12'
101+ - name : Install dependencies
102+ run : |
103+ python -m pip install --upgrade pip tox
104+ - name : Test with tox
105+ # The 100% coverage gate cannot be met on Windows: POSIX-only
106+ # branches never execute there, so run without the coverage gate
107+ # (`--no-cov` posarg). Linux jobs still enforce full coverage.
108+ run : tox -e py312 -- --no-cov
0 commit comments