99jobs :
1010 super-test :
1111 strategy :
12- max-parallel : 2
12+ fail-fast : false
1313 matrix :
1414 os : [ubuntu-latest, windows-latest, macos-latest]
15- python_v : ['3.8', '3.9', '3.10', '3.11 ', '3.12 ', '3.13 ', '']
15+ python_v : ['3.8', '3.9', '3.10', '3.12 ', '3.13 ', '3.14 ', '3.14t ']
1616 # chrome_v: ['-1']
1717 defaults :
1818 run :
1919 working-directory : ./src/py/
2020 name : Build and Test
2121 runs-on : ${{ matrix.os }}
22+ env :
23+ UV_PYTHON : ${{ matrix.python_v }}
2224 steps :
2325 - uses : actions/checkout@v4
26+ with :
27+ fetch-depth : 1
2428 - uses : astral-sh/setup-uv@v5
2529 - name : Install Dependencies
2630 if : ${{ matrix.os == 'ubuntu-latest' }}
@@ -29,10 +33,10 @@ jobs:
2933 # must actually checkout for version determination
3034 - run : git checkout ${{ github.ref_name }}
3135 - run : uv python install ${{ matrix.python_v }}
32- - run : uv python pin ${{ matrix.python_v }}
33- if : ${{ matrix.python_v != '' }}
3436 # don't modify sync file! messes up version!
35- - run : uv sync --all-extras --frozen # does order matter?
37+ - run : uv sync --all-extras --locked --no-sources
38+ - run : git status
39+ - run : git diff --quiet HEAD || { echo "Working tree dirty"; exit 1; }
3640 - run : uv build
3741 - name : Reinstall from wheel
3842 run : >
@@ -80,11 +84,10 @@ jobs:
8084 working-directory : ./src/py/
8185 name : Upload release to TestPyPI
8286 needs : super-test
83- if : |
84- always() &&
85- !cancelled() &&
86- !failure() &&
87- startsWith(github.ref, 'refs/tags/')
87+ if : ${{ !cancelled() &&
88+ !failure() &&
89+ github.event_name == 'push' &&
90+ github.run_attempt == 1 }}
8891 runs-on : ubuntu-latest
8992 environment :
9093 name : testpypi
0 commit comments