@@ -16,39 +16,73 @@ jobs:
1616 strategy :
1717 matrix :
1818 py :
19- - " 3.8"
2019 - " 3.9"
2120 - " 3.10"
2221 - " 3.11"
2322 - " 3.12"
2423 - " 3.13"
2524 - " pypy-3.9"
2625 - " pypy-3.10"
26+ # Pre-release
2727 os :
28- - " ubuntu-latest "
28+ - " ubuntu-22.04 "
2929 - " windows-latest"
30- - " macos-latest"
30+ - " macos-14" # arm64
31+ - " macos-13" # x64
32+ architecture :
33+ - x64
34+ - x86
35+ - arm64
3136 include :
32- - py : " pypy-3.9"
33- toxenv : " pypy39"
34- - py : " pypy-3.10"
35- toxenv : " pypy310"
37+ - py : " pypy-3.9"
38+ toxenv : " pypy39"
39+ - py : " pypy-3.10"
40+ toxenv : " pypy310"
3641 exclude :
42+ # Ubuntu does not have x86/arm64 Python
43+ - os : " ubuntu-22.04"
44+ architecture : x86
45+ - os : " ubuntu-22.04"
46+ architecture : arm64
47+ # MacOS we need to make sure to remove x86 on all
48+ # We need to run no arm64 on macos-13 (Intel), but some
49+ # Python versions: 3.9/3.10
50+ #
51+ # From 3.11 onward, there is support for running x64 and
52+ # arm64 on Apple Silicon based systems (macos-14)
53+ - os : " macos-13"
54+ architecture : x86
55+ - os : " macos-13"
56+ architecture : arm64
57+ - os : " macos-14"
58+ architecture : x86
59+ - os : " macos-14"
60+ architecture : x64
61+ py : " 3.9"
62+ - os : " macos-14"
63+ architecture : x64
64+ py : " 3.10"
65+ # Windows does not have arm64 releases
66+ - os : " windows-latest"
67+ architecture : arm64
3768 # Don't run all PyPy versions except latest on
3869 # Windows/macOS. They are expensive to run.
3970 - os : " windows-latest"
4071 py : " pypy-3.9"
41- - os : " macos-latest"
72+ - os : " macos-13"
73+ py : " pypy-3.9"
74+ - os : " macos-14"
4275 py : " pypy-3.9"
4376
44- name : " Python: ${{ matrix.py }} on ${{ matrix.os }}"
77+ name : " Python: ${{ matrix.py }}-${{ matrix.architecture }} on ${{ matrix.os }}"
4578 runs-on : ${{ matrix.os }}
4679 steps :
4780 - uses : actions/checkout@v4
4881 - name : Setup python
4982 uses : actions/setup-python@v5
5083 with :
5184 python-version : ${{ matrix.py }}
85+ architecture : ${{ matrix.architecture }}
5286 - run : pip install tox
5387 - name : Running tox with specific toxenv
5488 if : ${{ matrix.toxenv != '' }}
@@ -58,40 +92,41 @@ jobs:
5892 - name : Running tox for current python version
5993 if : ${{ matrix.toxenv == '' }}
6094 run : tox -e py
95+
6196 coverage :
62- runs-on : ubuntu-latest
97+ runs-on : ubuntu-22.04
6398 name : Validate coverage
6499 steps :
65100 - uses : actions/checkout@v4
66- - name : Setup python 3.8
101+ - name : Setup python
67102 uses : actions/setup-python@v5
68103 with :
69- python-version : 3.8
104+ python-version : " 3.13 "
70105 architecture : x64
71106
72107 - run : pip install tox
73- - run : tox -e py38 ,coverage
108+ - run : tox -e py313 ,coverage
74109 docs :
75- runs-on : ubuntu-latest
110+ runs-on : ubuntu-22.04
76111 name : Build the documentation
77112 steps :
78113 - uses : actions/checkout@v4
79114 - name : Setup python
80115 uses : actions/setup-python@v5
81116 with :
82- python-version : 3.8
117+ python-version : " 3.13 "
83118 architecture : x64
84119 - run : pip install tox
85120 - run : tox -e docs
86121 lint :
87- runs-on : ubuntu-latest
122+ runs-on : ubuntu-22.04
88123 name : Lint the package
89124 steps :
90125 - uses : actions/checkout@v4
91126 - name : Setup python
92127 uses : actions/setup-python@v5
93128 with :
94- python-version : 3.8
129+ python-version : " 3.13 "
95130 architecture : x64
96131 - run : pip install tox
97132 - run : tox -e lint
0 commit comments