3838 - ' !LICENSE'
3939 - ' !NOTICE'
4040
41+ permissions :
42+ contents : read
43+
4144concurrency :
4245 group : ${{ github.workflow }}-${{ github.ref }}
4346 cancel-in-progress : ${{ github.event_name == 'pull_request' }}
@@ -57,11 +60,13 @@ jobs:
5760 with :
5861 python-version : ${{ matrix.python }}
5962 - name : Install UV
60- uses : astral-sh/setup-uv@v7
63+ uses : astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098
6164 with :
6265 enable-cache : true
6366 - name : Install system dependencies
6467 run : sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
68+ - name : Check uv.lock is up to date
69+ run : uv lock --check
6570 - name : Install
6671 run : make install
6772 - name : Run linters
7984 with :
8085 python-version : ' 3.12'
8186 - name : Install UV
82- uses : astral-sh/setup-uv@v7
87+ uses : astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098
8388 with :
8489 enable-cache : true
8590 - name : Install system dependencies
@@ -106,7 +111,7 @@ jobs:
106111 with :
107112 python-version : ' 3.12'
108113 - name : Install UV
109- uses : astral-sh/setup-uv@v7
114+ uses : astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098
110115 with :
111116 enable-cache : true
112117 - name : Install system dependencies
@@ -133,7 +138,7 @@ jobs:
133138 with :
134139 python-version : ' 3.12'
135140 - name : Install UV
136- uses : astral-sh/setup-uv@v7
141+ uses : astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098
137142 with :
138143 enable-cache : true
139144 - name : Install system dependencies
@@ -160,7 +165,7 @@ jobs:
160165 with :
161166 python-version : ' 3.12'
162167 - name : Install UV
163- uses : astral-sh/setup-uv@v7
168+ uses : astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098
164169 with :
165170 enable-cache : true
166171 - name : Install system dependencies
@@ -188,15 +193,38 @@ jobs:
188193 with :
189194 python-version : ' 3.12'
190195 - name : Install UV
191- uses : astral-sh/setup-uv@v7
196+ uses : astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098
192197 with :
193198 enable-cache : true
194199 - name : Install dependencies
195200 run : uv sync --group dev
196201 - name : Download all coverage artifacts
197- uses : actions/download-artifact@v7
202+ uses : actions/download-artifact@v8
198203 with :
199204 pattern : coverage-*
200205 merge-multiple : true
201206 - name : Generate coverage report (75%) # Coverage threshold should only increase over time — never decrease it!
202207 run : COVERAGE_FAIL_UNDER=75 make coverage-report
208+
209+ cibw-dev-env-smoke-test :
210+ runs-on : ubuntu-latest
211+ steps :
212+ - uses : actions/checkout@v6
213+ - uses : actions/setup-python@v6
214+ with :
215+ python-version : ' 3.12'
216+ - name : Install UV
217+ uses : astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098
218+ with :
219+ enable-cache : true
220+ # Why this exists:
221+ # Catch import-time regressions (e.g., global conftest optional deps)
222+ # in the same dev-only environment used by cibuildwheel wheel tests.
223+ # Keep this in sync with wheel build test setup in
224+ # .github/workflows/pypi-build-artifacts.yml:
225+ # CIBW_BEFORE_TEST: uv sync --directory {project} --only-group dev --no-install-project
226+ # CIBW_TEST_COMMAND: uv run --directory {project} pytest tests/avro/test_decoder.py
227+ - name : Mirror wheel CIBW_BEFORE_TEST
228+ run : uv sync --directory . --only-group dev --no-install-project
229+ - name : Mirror wheel CIBW_TEST_COMMAND
230+ run : uv run --directory . pytest tests/avro/test_decoder.py
0 commit comments