Skip to content

chore: drop Python 3.10/3.11 support#636

Closed
dionhaefner wants to merge 2 commits into
mainfrom
chore/bump-python-3.12
Closed

chore: drop Python 3.10/3.11 support#636
dionhaefner wants to merge 2 commits into
mainfrom
chore/bump-python-3.12

Conversation

@dionhaefner

Copy link
Copy Markdown
Contributor

Bumps the minimum supported Python to 3.12 (supported: 3.12–3.14), in line with the NumPy deprecation policy.

  • requires-python>=3.12,<3.15; ruff target-versionpy312.
  • Drop 3.10/3.11 from the run_tests and test_pip_install matrices.
  • Rework the py310 minimum-version smoke example into py312 (config python_version, the sys.version_info assertion, and the end-to-end test case).

Please confirm no runtime dependency or code path still relies on 3.10/3.11 before merging. Demo/showcase sub-projects keep their own requires-python and are untouched.

Officially support Python 3.12-3.14, following the NumPy deprecation policy.

- Bump requires-python to >=3.12,<3.15 and ruff target-version to py312
- Drop 3.10/3.11 from the CI test matrices
- Rework the py310 minimum-version example into py312 (config, assertion, e2e test case)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Jul 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 78.06%. Comparing base (bc6d092) to head (34b3379).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #636      +/-   ##
==========================================
- Coverage   78.15%   78.06%   -0.09%     
==========================================
  Files          39       39              
  Lines        4632     4632              
  Branches      754      754              
==========================================
- Hits         3620     3616       -4     
- Misses        709      713       +4     
  Partials      303      303              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

- Regenerate production.uv.lock and requirements.txt against >=3.12
  (collapses the 3.10/3.11 version-conditional pins)
- Use stdlib typing.Self now that 3.10 is dropped (UP035)
- Ignore UP040/UP047 to avoid a PEP 695 modernization sweep; some type
  aliases are used at runtime (isinstance) and can't become `type` aliases

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jpbrodrick89

Copy link
Copy Markdown
Contributor

CI is failing because test_jax_recipes pulls in the jax DEV dependency which is PINNED to 0.10.2 for Python>3.11. We should arguably replace this and other dev dependencies with a range/ceiling that we then pin to lower bounds along with the standard production dependencies. If we want to be lazy we could just bump numpy lower bound to 2.0 but we might run into similar issues in the future.

@dionhaefner

dionhaefner commented Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

Having second thoughts here. Tesseract is (also) a tool to wrap gnarly software, and as such should aim for a higher level of compatibility than your typical scientific Python project.

I suggest we only drop versions when they're truly EOL. Closing until then (3.10 has a few more months on the clock).

@dionhaefner dionhaefner closed this Jul 6, 2026
@pasteurlabs pasteurlabs locked and limited conversation to collaborators Jul 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants