|
34 | 34 | strategy: |
35 | 35 | fail-fast: false |
36 | 36 | matrix: |
37 | | - python-version: [ "3.12", "3.13", "3.14" ] |
38 | | - name: pytest (Python ${{ matrix.python-version }}) |
| 37 | + # Supported range: 3.11 (floor, see requires-python in pyproject.toml) |
| 38 | + # through 3.14 (the development version, see .python-version). |
| 39 | + python-version: [ "3.11", "3.12", "3.13", "3.14" ] |
| 40 | + experimental: [ false ] |
| 41 | + include: |
| 42 | + # Forward-looking lane for the next release (3.15, due 2026-10-01). |
| 43 | + # Non-blocking on purpose: as of 3.15.0a8 this fails during |
| 44 | + # *dependency installation*, not during our tests — shapely has no |
| 45 | + # 3.15 wheels yet, so uv falls back to a source build that needs |
| 46 | + # numpy headers. That is an upstream packaging gap, NOT an |
| 47 | + # OSHConnect incompatibility. Expect this leg to go green on its |
| 48 | + # own once shapely ships 3.15 wheels; if it fails for any other |
| 49 | + # reason, that IS worth investigating. |
| 50 | + - python-version: "3.15" |
| 51 | + experimental: true |
| 52 | + name: pytest (Python ${{ matrix.python-version }}${{ matrix.experimental && ' — experimental, non-blocking' || '' }}) |
| 53 | + # Only the experimental leg is allowed to fail without failing the run. |
| 54 | + continue-on-error: ${{ matrix.experimental }} |
39 | 55 | steps: |
40 | 56 | - name: Checkout |
41 | 57 | uses: actions/checkout@v5 |
@@ -85,12 +101,12 @@ jobs: |
85 | 101 | - name: Install uv |
86 | 102 | uses: astral-sh/setup-uv@v6 |
87 | 103 |
|
88 | | - - name: Install Python 3.13 |
89 | | - run: uv python install 3.13 |
| 104 | + - name: Install Python 3.14 |
| 105 | + run: uv python install 3.14 |
90 | 106 |
|
91 | 107 | - name: Install package with NO extras |
92 | 108 | run: | |
93 | | - uv venv --python 3.13 |
| 109 | + uv venv --python 3.14 |
94 | 110 | uv pip install . |
95 | 111 |
|
96 | 112 | - name: Import smoke test (no extras) |
@@ -138,8 +154,8 @@ jobs: |
138 | 154 | - name: Install uv |
139 | 155 | uses: astral-sh/setup-uv@v6 |
140 | 156 |
|
141 | | - - name: Install Python 3.13 |
142 | | - run: uv python install 3.13 |
| 157 | + - name: Install Python 3.14 |
| 158 | + run: uv python install 3.14 |
143 | 159 |
|
144 | 160 | - name: Install dependencies |
145 | 161 | run: uv sync --all-extras |
@@ -186,8 +202,8 @@ jobs: |
186 | 202 | - name: Install uv |
187 | 203 | uses: astral-sh/setup-uv@v6 |
188 | 204 |
|
189 | | - - name: Install Python 3.13 |
190 | | - run: uv python install 3.13 |
| 205 | + - name: Install Python 3.14 |
| 206 | + run: uv python install 3.14 |
191 | 207 |
|
192 | 208 | # Append `.dev<run_number>` to the version in pyproject.toml so each |
193 | 209 | # dev push gets a fresh PEP 440-compliant pre-release (e.g. |
|
0 commit comments