Skip to content

Commit 3eb5014

Browse files
committed
Add experimental Python 3.14 CI lane
Add a non-gating test-python314 job (single PG version — PG 17 — since the point is proving out the dependency stack under the next CPython release, not another full PG matrix sweep) ahead of a possible future Dockerfile/pyproject bump to 3.14. The compiled deps (psycopg[binary], pglast, cryptography) already ship cp314 wheels on PyPI, but nothing in CI has ever actually run the suite there — this closes that gap without committing to anything yet. continue-on-error: true so a failure here is a signal to investigate, not a merge blocker.
1 parent 8717f0e commit 3eb5014

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,3 +200,38 @@ jobs:
200200
env:
201201
MCPG_TEST_DATABASE_URL: postgresql://${{ env.DB_USER }}:postgres@localhost:5432/mcpg_test
202202
run: uv run pytest -q --cov
203+
204+
test-python314:
205+
name: Tests (Python 3.14, PG 17) — experimental
206+
runs-on: ubuntu-latest
207+
# Exploratory lane: proves out the dependency stack (psycopg[binary],
208+
# pglast, cryptography — the compiled ones) under the next CPython
209+
# release before anything commits to it. CI only ever installs 3.13
210+
# elsewhere (see the ``test`` job above, ``lint``, ``security``); this
211+
# is deliberately non-gating (continue-on-error) — a failure here is a
212+
# signal to investigate, not a merge blocker. One PG version is enough
213+
# since the point is Python-level compatibility, not another full PG
214+
# matrix sweep.
215+
continue-on-error: true
216+
steps:
217+
- uses: actions/checkout@v7
218+
- name: Start PostgreSQL (pgvector + PostGIS)
219+
run: |
220+
docker build -f .github/ci-postgres.Dockerfile --build-arg PG_MAJOR=17 -t mcpg-ci-db-py314 .
221+
docker run -d --name mcpg-db-py314 -p 5432:5432 \
222+
-e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres \
223+
-e POSTGRES_DB=mcpg_test mcpg-ci-db-py314
224+
for _ in $(seq 1 30); do
225+
docker exec mcpg-db-py314 pg_isready -U postgres && break
226+
sleep 2
227+
done
228+
- name: Set up uv
229+
uses: astral-sh/setup-uv@v7
230+
with:
231+
python-version: "3.14"
232+
enable-cache: true
233+
- run: uv sync --frozen
234+
- name: pytest
235+
env:
236+
MCPG_TEST_DATABASE_URL: postgresql://postgres:postgres@localhost:5432/mcpg_test
237+
run: uv run pytest -q

0 commit comments

Comments
 (0)