44 pull_request :
55 schedule :
66 - cron : ' 0 6 * * 6'
7+ defaults :
8+ run :
9+ shell : bash
710jobs :
811 test :
912 strategy :
1013 fail-fast : false
1114 matrix :
12- python-version : ['3.8', '3.9', '3.10', '3.11', '3.12', 'pypy-3.9-v7.x']
13- os : [ubuntu-latest, windows-latest, macos-latest]
1415 include :
15- - python-version : pypy-3.9-v7.x
16- py : pypy3
17- # Just to slim down the test matrix:
18- exclude :
19- - python-version : ' 3.9'
16+ - python : ' 3.14'
17+ os : ubuntu-latest
18+ - python : ' 3.14'
19+ os : windows-latest
20+ - python : ' 3.14'
21+ os : macos-latest
22+ - python : ' 3.13'
23+ os : ubuntu-latest
24+ - python : ' 3.13'
25+ os : windows-latest
26+ - python : ' 3.12'
2027 os : macos-latest
21- - python-version : ' 3.9'
28+ - python : ' 3.12'
29+ os : ubuntu-latest
30+ - python : ' 3.12'
2231 os : windows-latest
23- - python-version : ' 3.10'
32+ - python : ' 3.11'
33+ os : ubuntu-latest
34+ - python : ' 3.11'
35+ os : macos-latest
36+ - python : ' 3.10'
2437 os : ubuntu-latest
25- - python-version : ' 3.11 '
38+ - python : ' 3.10 '
2639 os : macos-latest
27- - python-version : ' 3.11 '
40+ - python : ' 3.9 '
2841 os : windows-latest
29- runs-on : ${{ matrix.os }}
42+ - python : ' 3.9'
43+ os : ubuntu-latest
44+ versions : minimal
45+ runs-on : ${{matrix.os}}
3046 steps :
31- - uses : actions/checkout@v4
32- - name : Setup Python ${{ matrix.python-version }}
33- uses : actions/setup-python@v5
47+ - name : Download source
48+ uses : actions/checkout@v6
49+ - name : Install Python
50+ uses : actions/setup-python@v6
3451 with :
35- python-version : ${{ matrix.python-version }}
52+ python-version : ${{matrix.python}}
53+ - name : Pin to lowest versions
54+ if : matrix.versions == 'minimal'
55+ run : |
56+ sed -i -E 's/#min //; s/\b >=([0-9])/ ==\1/' pyproject.toml
57+ - name : Install Hatch
58+ run : |
59+ pip install hatch
3660 - name : Install dependencies
3761 run : |
38- python -m pip install --upgrade hatch
62+ hatch run test: pip freeze
3963 - name : Run tests
4064 run : |
41- hatch run +py=${{ matrix.py || matrix. python-version }} test:with-coverage
65+ hatch run +py=${{matrix.python}} test:test
4266 - name : Run integration tests
67+ if : matrix.versions != 'minimal'
4368 run : |
44- hatch run +py=${{ matrix.py || matrix.python-version }} integration:test
45- shell : bash
46- - name : Upload Codecov Results
47- if : success()
48- uses : codecov/codecov-action@v3
49- with :
50- file : ./coverage.xml
51- flags : unittests
52- name : ${{ matrix.os }}/${{ matrix.python-version }}
53- fail_ci_if_error : false
54-
55- lint :
69+ hatch run +py=${{matrix.python}} integration:test
70+ style :
5671 runs-on : ubuntu-latest
5772 steps :
58- - uses : actions/checkout@v4
59- - name : Setup Python
60- uses : actions/setup-python@v5
73+ - name : Download source
74+ uses : actions/checkout@v6
75+ - name : Install Python
76+ uses : actions/setup-python@v6
6177 with :
62- python-version : ' 3.11 '
63- - name : Install Python dependencies
78+ python-version : ' 3.13 '
79+ - name : Install Hatch
6480 run : |
65- python -m pip install --upgrade hatch
66- - name : Setup Node
67- uses : actions/setup-node@v4
81+ pip install hatch
82+ - name : Install Node
83+ uses : actions/setup-node@v6
6884 with :
69- node-version : 20
85+ node-version : 24
86+ - name : Install dependencies
87+ run : |
88+ hatch run style:pip freeze
89+ hatch run types:pip freeze
7090 - name : Check with ruff
7191 if : always()
72- run : hatch run style:lint
92+ run : hatch run style:check
7393 - name : Check with mypy
7494 if : always()
7595 run : hatch run types:check
@@ -86,11 +106,11 @@ jobs:
86106 package :
87107 runs-on : ubuntu-latest
88108 steps :
89- - uses : actions/checkout@v4
109+ - uses : actions/checkout@v6
90110 - name : Setup Python
91- uses : actions/setup-python@v5
111+ uses : actions/setup-python@v6
92112 with :
93- python-version : ' 3.11 '
113+ python-version : ' 3.13 '
94114 - name : Install dependencies
95115 run : pip install -U build
96116 - name : Build package
0 commit comments