Skip to content

chore: upgrade Python to 3.14 (prof-1fa)#41

Merged
ckrough merged 1 commit into
mainfrom
issue/prof-1fa
May 15, 2026
Merged

chore: upgrade Python to 3.14 (prof-1fa)#41
ckrough merged 1 commit into
mainfrom
issue/prof-1fa

Conversation

@ckrough
Copy link
Copy Markdown
Owner

@ckrough ckrough commented May 15, 2026

Drover targets Python 3.14.

State after merge

  • pyproject.toml pins requires-python = ">=3.14", [tool.mypy] python_version = "3.14", [tool.ruff] target-version = "py314".
  • .github/workflows/ci.yml installs Python 3.14 for lint, typecheck, and test jobs (single-version, no matrix).
  • uv.lock is re-resolved against Python 3.14.2 with all extras (langchain, docling, torch 2.12, transformers 5.8, etc.).
  • README.md, CONTRIBUTING.md, CLAUDE.md, smoke/README.md, and docs/increments.md reference Python 3.14.x.

Modernization unlocked by the upgrade

  • src/drover/cli.py uses PEP 758 parenthesis-free except clauses (now valid syntax under py314).
  • Type-only imports across src/ and tests/ live in TYPE_CHECKING blocks (TC001 / TC002 / TC003).
  • Stringified annotation in models.py is unquoted (UP037).

Ruff 0.8 → 0.15.13 in the re-resolve made these idioms enforceable; ruff and ruff format both pass cleanly.

Quality gate on Python 3.14.2

Check Result
uv sync --all-extras --upgrade Clean
ruff format --check src/ tests/ 51 files clean
ruff check src/ tests/ All checks passed
bandit -r src/ 0 issues (5269 LOC)
mypy src/ strict 26 files clean
pytest --cov=src 327 passed, 5 skipped, 75% coverage
uv run drover --help CLI loads with 4 subcommands

Out of scope

  • Free-threaded and JIT builds remain off; enabling either is a separate ADR per the tech-stack standard.
  • Two existing worktrees (delegated-mixing-scott, humming-orbiting-anchor) carry the prior >=3.13,<3.14 pin and will need rebase after this merges.

Closes prof-1fa.

Drover targets Python 3.14. pyproject.toml pins requires-python = ">=3.14" and sets mypy python_version = "3.14" and ruff target-version = "py314". The CI workflow installs Python 3.14 for lint, typecheck, and test jobs. README, CONTRIBUTING, CLAUDE.md, smoke/README.md, and docs/increments.md reference Python 3.14.x.

uv.lock is re-resolved against Python 3.14.2 with no version drops.

Ruff bumped 0.8 -> 0.15.13 in the re-resolve. src/drover/cli.py applies PEP 758 parenthesis-free except clauses unlocked by target-version = py314. Across src/ and tests/, type-only imports move into TYPE_CHECKING blocks (TC001/TC002/TC003) and a stringified annotation in models.py is unquoted (UP037).

Quality gate on Python 3.14.2: ruff format clean, ruff check clean, bandit clean (0 issues, 5269 LOC), mypy strict clean (26 source files), pytest 327 passed / 5 skipped / 75% coverage.
@ckrough ckrough merged commit 10c8150 into main May 15, 2026
5 checks passed
@ckrough ckrough deleted the issue/prof-1fa branch May 15, 2026 15:13
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.

1 participant