Skip to content

Drop Python 3.10 support, add 3.14 to CI, bump pipelex to 0.39.0#77

Open
lchoquel wants to merge 1 commit into
devfrom
chore/drop-python-3.10-support
Open

Drop Python 3.10 support, add 3.14 to CI, bump pipelex to 0.39.0#77
lchoquel wants to merge 1 commit into
devfrom
chore/drop-python-3.10-support

Conversation

@lchoquel

@lchoquel lchoquel commented Jul 15, 2026

Copy link
Copy Markdown
Member

Summary

  • Drop Python 3.10 support (breaking) — minimum is now 3.11, matching what the type-checkers and linter already target
  • Add Python 3.14 to the lint and test CI matrices
  • Bump pipelex to 0.39.0; import StrEnum from stdlib enum instead of the now-removed pipelex.types re-export
  • Point mypy at local paths (files) instead of module names (packages) so an editable pipelex checkout doesn't drag that repo's test suite into our type check

Test plan

  • CI passes across the 3.11–3.14 matrix
  • make agent-check and make agent-test pass locally

🤖 Generated with Claude Code

https://claude.ai/code/session_01Cg7xzRtbshzke25awsYEud


Summary by cubic

Drops Python 3.10 support (minimum is now 3.11) and adds 3.14 to the lint/test CI. Upgrades pipelex to 0.39.0 and updates typing to use enum.StrEnum; mypy now targets local paths only.

  • Dependencies

    • Python: require >=3.11; CI covers 3.11–3.14.
    • pipelex → 0.39.0; dev pyright → 1.1.411.
  • Migration

    • Use Python 3.11+ and recreate your virtualenv.
    • Reinstall deps and run tests on 3.11–3.14.

Written for commit acf0b31. Summary will update on new commits.

Review in cubic

Upstream pipelex removed its own 3.10 support and deleted the StrEnum
re-export we relied on, so we now import StrEnum from stdlib enum and
raise our own minimum to 3.11. Also test against 3.14 in CI and point
mypy at local paths instead of module names so an editable pipelex
checkout doesn't drag that repo's tests into our type check.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cg7xzRtbshzke25awsYEud
@greptile-apps

greptile-apps Bot commented Jul 15, 2026

Copy link
Copy Markdown

Greptile Summary

This PR updates the project for Python 3.11 through 3.14. The main changes are:

  • Drops Python 3.10 support and adds Python 3.14 to CI.
  • Upgrades Pipelex to 0.39.0 and uses the standard-library StrEnum.
  • Limits mypy discovery to local source and test paths.
  • Updates the lock file, changelog, and setup documentation.

Confidence Score: 5/5

This looks mergeable after confirming Python 3.14 provisioning in CI.

The package metadata, lock file, imports, and documentation consistently require Python 3.11 or later. The updated dependency graph includes a separate Python 3.14 resolution path.

The remaining concern is limited to whether the existing setup-python action can provision the new CI interpreter.

T-Rex T-Rex Logs

What T-Rex did

  • Ran make agent-check to validate code-quality and type-check status, with Ruff reporting all checks passed, Pyright reporting 0 errors/warnings, and mypy finding no issues in 52 files.
  • Attempted make agent-test, but it exited with code 2 because Pipelex Gateway terms were not accepted in the sandbox.
  • Ran the fallback pytest command with --disable-inference, which completed successfully with 58 passed, 5 skipped, 46 warnings in 11.36 seconds.
  • Noted that the five skipped tests require unavailable GitHub credentials and are unrelated to the changed code.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
pyproject.toml Raises the Python minimum, upgrades dependencies, and changes mypy source discovery to local paths.
uv.lock Updates the locked dependency graph and interpreter markers for Python 3.11 and later.
.github/workflows/lint-check.yml Adds Python 3.14 to lint CI, with a possible provisioning issue from the older setup-python action.
.github/workflows/tests-check.yml Adds Python 3.14 to the test matrix while retaining the existing setup-python action version.
cocode/common.py Moves PipeCode to the standard-library StrEnum supported by the new Python floor.
cocode/repox/models.py Moves repository output enums to the standard-library StrEnum.
cocode/repox/process_python.py Moves the processing-rule enum to the standard library without changing AST processing.
cocode/pipelines/swe_diff/changelog_enhanced.mthds Adds a prompt rule for marking breaking changelog entries.
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
.github/workflows/lint-check.yml:20
**Python 3.14 Runner Provisioning**

The new 3.14 matrix leg still uses `actions/setup-python@v4`. If that action version cannot provision Python 3.14 on the hosted runner, every lint run fails during setup and the `lint-all` job blocks the pull request before any lint command runs. Use an action release that supports the newly added interpreter.

Reviews (1): Last reviewed commit: "Drop Python 3.10 support, add 3.14 to CI..." | Re-trigger Greptile

fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
python-version: ["3.11", "3.12", "3.13", "3.14"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Python 3.14 Runner Provisioning

The new 3.14 matrix leg still uses actions/setup-python@v4. If that action version cannot provision Python 3.14 on the hosted runner, every lint run fails during setup and the lint-all job blocks the pull request before any lint command runs. Use an action release that supports the newly added interpreter.

Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/workflows/lint-check.yml
Line: 20

Comment:
**Python 3.14 Runner Provisioning**

The new 3.14 matrix leg still uses `actions/setup-python@v4`. If that action version cannot provision Python 3.14 on the hosted runner, every lint run fails during setup and the `lint-all` job blocks the pull request before any lint command runs. Use an action release that supports the newly added interpreter.

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

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