@@ -2,10 +2,17 @@ name: ci
22
33on :
44 push :
5+ branches :
6+ - main
7+ - test-me-*
58 pull_request :
69 branches :
710 - main
811
12+ concurrency :
13+ group : ${{ github.workflow }}-${{ github.ref }}
14+ cancel-in-progress : ${{ github.event_name == 'pull_request' }}
15+
916defaults :
1017 run :
1118 shell : bash
1421 LANG : en_US.utf-8
1522 LC_ALL : en_US.utf-8
1623 PYTHONIOENCODING : UTF-8
24+ PYTHONWARNDEFAULTENCODING : " 1"
1725 PYTHON_VERSIONS : " "
1826
1927jobs :
2028
2129 quality :
30+ strategy :
31+ matrix :
32+ os :
33+ - ubuntu-latest
34+ - macos-latest
35+ - windows-latest
36+ python-version :
37+ - " 3.10"
38+ - " 3.14"
39+ include :
40+ - os : ubuntu-latest
41+ python-version : " 3.11"
42+ - os : ubuntu-latest
43+ python-version : " 3.12"
44+ - os : ubuntu-latest
45+ python-version : " 3.13"
2246
23- runs-on : ubuntu-latest
47+ runs-on : ${{ matrix.os }}
2448
2549 steps :
2650 - name : Checkout
2751 uses : actions/checkout@v4
52+ with :
53+ fetch-depth : 0
54+ fetch-tags : true
2855
29- - name : Fetch all tags
30- run : git fetch --depth=1 --tags
31-
32- - name : Set up Python
33- uses : actions/setup-python@v5
56+ - name : Setup Python
57+ uses : actions/setup-python@v6
3458 with :
35- python-version : " 3.11 "
59+ python-version : ${{ matrix.python-version }}
3660
37- - name : Install uv
38- run : pip install uv
61+ - name : Setup uv
62+ uses : astral-sh/setup-uv@v5
63+ with :
64+ enable-cache : true
65+ cache-dependency-glob : pyproject.toml
3966
4067 - name : Install dependencies
4168 run : make setup
@@ -52,70 +79,71 @@ jobs:
5279 - name : Check for breaking changes in the API
5380 run : make check-api
5481
55- exclude-test-jobs :
56- runs-on : ubuntu-latest
57- outputs :
58- jobs : ${{ steps.exclude-jobs.outputs.jobs }}
59- steps :
60- - id : exclude-jobs
61- run : |
62- if ${{ github.repository_owner == 'pawamoy-insiders' }}; then
63- echo 'jobs=[
64- {"os": "macos-latest"},
65- {"os": "windows-latest"},
66- {"python-version": "3.9"},
67- {"python-version": "3.10"},
68- {"python-version": "3.11"},
69- {"python-version": "3.12"},
70- {"python-version": "3.13"}
71- ]' | tr -d '[:space:]' >> $GITHUB_OUTPUT
72- else
73- echo 'jobs=[
74- {"os": "macos-latest", "resolution": "lowest-direct"},
75- {"os": "windows-latest", "resolution": "lowest-direct"}
76- ]' | tr -d '[:space:]' >> $GITHUB_OUTPUT
77- fi
82+ - name : Store objects inventory for tests
83+ uses : actions/upload-artifact@v4
84+ if : ${{ matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13' }}
85+ with :
86+ name : objects.inv
87+ path : site/objects.inv
7888
7989 tests :
8090
81- needs : exclude-test-jobs
91+ needs :
92+ - quality
8293 strategy :
8394 matrix :
8495 os :
8596 - ubuntu-latest
8697 - macos-latest
8798 - windows-latest
8899 python-version :
89- - " 3.8"
90- - " 3.9"
91100 - " 3.10"
92101 - " 3.11"
93102 - " 3.12"
94103 - " 3.13"
104+ - " 3.14"
105+ - " 3.15"
95106 resolution :
96107 - highest
97108 - lowest-direct
98- exclude : ${{ fromJSON(needs.exclude-test-jobs.outputs.jobs) }}
109+ exclude :
110+ - os : macos-latest
111+ resolution : lowest-direct
112+ - os : windows-latest
113+ resolution : lowest-direct
99114 runs-on : ${{ matrix.os }}
100- continue-on-error : ${{ matrix.python-version == '3.13' }}
115+ continue-on-error : true
101116
102117 steps :
103118 - name : Checkout
104119 uses : actions/checkout@v4
120+ with :
121+ fetch-depth : 0
122+ fetch-tags : true
105123
106- - name : Set up Python
107- uses : actions/setup-python@v5
124+ - name : Setup Python
125+ uses : actions/setup-python@v6
108126 with :
109127 python-version : ${{ matrix.python-version }}
110128 allow-prereleases : true
111129
112- - name : Install uv
113- run : pip install uv
130+ - name : Setup uv
131+ uses : astral-sh/setup-uv@v5
132+ with :
133+ enable-cache : true
134+ cache-dependency-glob : pyproject.toml
135+ cache-suffix : ${{ matrix.resolution }}
114136
115137 - name : Install dependencies
116138 env :
117139 UV_RESOLUTION : ${{ matrix.resolution }}
118140 run : make setup
119141
142+ - name : Download objects inventory
143+ uses : actions/download-artifact@v4
144+ with :
145+ name : objects.inv
146+ path : site/
147+
120148 - name : Run the test suite
121149 run : make test
0 commit comments