Skip to content

Move the runtime to Python 3.14#219

Merged
devopam merged 1 commit into
mainfrom
claude/python-3.14
Jul 2, 2026
Merged

Move the runtime to Python 3.14#219
devopam merged 1 commit into
mainfrom
claude/python-3.14

Conversation

@devopam

@devopam devopam commented Jul 2, 2026

Copy link
Copy Markdown
Owner

Summary

Follow-up to #218 (the experimental test-python314 CI lane), which passed cleanly on its first real run — proving the compiled deps (psycopg[binary], pglast==7.14, cryptography via pyjwt[crypto]) all work under Python 3.14. This PR follows through and makes 3.14 the mainline version everywhere we build/test:

  • Dockerfile: both FROM lines (builder + runtime stages) now pull the 3.14 base images.
  • ci.yml: lint, security, and the main PG 14-19 + WarehousePG test matrix all install Python 3.14 instead of 3.13. Removed the now-redundant test-python314 experimental job — its whole purpose was proving 3.14 out before committing to it, which is done, so keeping it around would just be duplicate work against the same mainline version.
  • publish.yml: same bump across all three python-version pins (build, and smoke-testpypi's two setup steps).
  • pyproject.toml: mypy's python_version target moves to 3.14 (matches what CI actually runs now); added the Programming Language :: Python :: 3.14 classifier alongside the existing 3.12/3.13 ones.
    • requires-python stays >=3.12 — this is a change to what we build/test with, not a narrowing of what pip install mcpg accepts.
    • ruff's target-version stays "py312" for the same reason — it governs the minimum-syntax floor for consumers, not the dev/CI interpreter.
  • CHANGELOG.md: noted under [Unreleased] / Changed.

Test plan

  • uv run ruff format --check . / uv run ruff check . — clean.
  • uv run mypy src/mcpg — clean, now simulating the 3.14 stdlib/typeshed.
  • uv run pytest -q -m "not integration" — 2624 passed.
  • YAML-validated both workflow files (python3 -c "import yaml; ..." confirms the job lists: ci.ymllint, security, test; publish.yml unchanged job list).
  • The actual PG 14-19 + WarehousePG matrix running on Python 3.14 for real is what this PR's own CI run will exercise.

Generated by Claude Code

The experimental test-python314 CI lane (PR #218) passed cleanly on its
first real run, proving the dependency stack (psycopg[binary], pglast,
cryptography — the compiled ones) works under 3.14. Follow through:

- Dockerfile: both FROM lines (builder + runtime stages) now pull the
  3.14 base images.
- ci.yml: lint, security, and the main PG 14-19 + WarehousePG test
  matrix all install Python 3.14 instead of 3.13. The now-redundant
  test-python314 experimental job is removed — 3.14 is mainline now,
  so a separate lane proving it out is pointless duplication.
- publish.yml: same bump across all three python-version pins (build,
  smoke-testpypi's two setup steps).
- pyproject.toml: mypy's python_version target moves to 3.14 (matches
  what CI now actually runs); added the 3.14 classifier alongside the
  existing 3.12/3.13 ones. requires-python stays ">=3.12" — this is a
  change to what we build/test with, not a narrowing of what `pip
  install mcpg` accepts. ruff's target-version stays "py312" for the
  same reason: it governs the minimum-syntax floor, not the dev version.

Verified locally: ruff format/check, mypy (now simulating the 3.14
stdlib), and the full non-integration suite (2624 passed) all clean.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @devopam, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@gemini-code-assist-2

Copy link
Copy Markdown
Contributor

Warning

Gemini encountered an error creating the review. You can try again by commenting /gemini review.

@devopam devopam merged commit b5e6aee into main Jul 2, 2026
19 checks passed
@devopam devopam deleted the claude/python-3.14 branch July 2, 2026 11:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants