Skip to content

feat!: require Python 3.11#109

Open
zieka wants to merge 1 commit into
mainfrom
feat/python-3.11-for-2.0.0
Open

feat!: require Python 3.11#109
zieka wants to merge 1 commit into
mainfrom
feat/python-3.11-for-2.0.0

Conversation

@zieka

@zieka zieka commented Jun 15, 2026

Copy link
Copy Markdown
Member

What

Raises the supported Python floor from 3.9 → 3.11:

  • pyproject.toml: requires-python = ">=3.11"
  • CI (checks.yml, publish.yml): Python 3.93.11 (both setup-python and uv sync --python)
  • uv.lock: regenerated on 3.11 (net −626 lines — drops <3.11-only backports like exceptiongroup)
  • README.md / CLAUDE.md: doc text updated to 3.11

Why 3.11 (and not 3.12)

These notebooks execute inside the Moderne platform's mod-cli-base image, which deliberately ships CPython 3.11 because this package pins pandas==2.0.3, which has pre-built wheels for 3.11 but not 3.12+ (source builds fail on 3.12).

Validation (local CPython 3.11)

  • poe check-sentence-casing, poe check-options (the checks CI runs)
  • ✅ Notebook executions: dependency_tree_view (tree grid), composite_recipe_results_sankey (plotly), cyclomatic_complexity_heatmap (matplotlib)
  • The graphviz notebook fails only on a missing local dot system binary (present in the platform image; would fail identically on 3.9) — not a 3.11 issue

Sequencing / release

  • ⚠️ Recommend merging ci: add manual pre-release publish workflow #108 (pre-release workflow) first, then cutting 2.0.0a1 from this branch for the platform to smoke-test under real 3.11 before this lands / before cutting 2.0.0 final.
  • The 2.0.0 version number is stamped by the Publish workflow via semantic-release version --major; nothing is hardcoded here.

BREAKING CHANGE: Python 3.9 and 3.10 are no longer supported.

Comment thread pyproject.toml
]
license = { text = "Apache-2.0" }
requires-python = ">=3.9"
requires-python = ">=3.11"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
requires-python = ">=3.11"
requires-python = "=3.11"

should probably be explicit

Raise the supported Python floor from 3.9 to 3.11 and move CI
(checks.yml, publish.yml) to 3.11, regenerating uv.lock on 3.11
(drops <3.11-only backports such as exceptiongroup).

This matches the Moderne platform's notebook runtime, whose
mod-cli-base image ships CPython 3.11 specifically because pandas==2.0.3
has pre-built wheels for 3.11 but not 3.12+. The original 1.0 attempt to
move to 3.12 (#76) was reverted (#83) for this reason; 3.11 is the
coordinated, deployable target. Moving to 3.12+ is a separate effort
gated on bumping pandas and the platform image moving in lockstep.

BREAKING CHANGE: Python 3.9 and 3.10 are no longer supported.
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