Skip to content

Raise Python floor to 3.11; upgrade titiler.core 2.x / rio-tiler 9.x#29

Merged
chuckwondo merged 1 commit into
mainfrom
chore/27-python-311-floor
Jun 29, 2026
Merged

Raise Python floor to 3.11; upgrade titiler.core 2.x / rio-tiler 9.x#29
chuckwondo merged 1 commit into
mainfrom
chore/27-python-311-floor

Conversation

@chuckwondo

@chuckwondo chuckwondo commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Closes #27.

Raises the project's Python floor from >=3.10 to >=3.11, upgrades titiler.core to 2.x and rio-tiler to 9.x, and removes the Python 3.10 back-compat scaffolding that floor unblocks.

Changes

  • pyproject.tomlrequires-python = ">=3.11"; drop the Programming Language :: Python :: 3.10 classifier; titiler.core>=2.0,<3.0; rio-tiler>=9.0,<10.0; remove the typing-extensions ; python_version < '3.11' conditional dependency.
  • uv.lock — re-resolved on >=3.11 (rio-tiler 9.3.0, titiler-core 2.0.5, numpy 2.4.4).
  • src/titiler_covjson/modeler.py — import assert_never directly from typing; remove the sys.version_info guard and the now-unused import sys.
  • tests/test_modeler.py — drop the now-unnecessary numpy # type: ignore and its stale 3.10/numpy-2.2.6 workaround docstring.
  • docs/04-modeler-converter-design.md — update the version-guard prose and code snippet to reflect the stdlib-only assert_never import.

Notes

  • CI matrix needs no edit: the test/typecheck matrix is derived from the pyproject.toml classifiers, so dropping the 3.10 classifier automatically removes it from both matrices.
  • Resolves the recurring Dependabot uv failure: re-locking on >=3.11 collapses the ucumvert/pint fork that split on a python_full_version == '3.10.*' marker (the cause of the weekly Dependabot resolution error).
  • Low migration risk: titiler.core is not imported anywhere yet; the only rio-tiler surface (ImageData/Info fields) is unchanged across the 8.x/9.x breaking changes. Validated by the full suite (251 tests incl. doctests), mypy --strict, ruff check, and ruff format --check, all green.

Out of scope

The consumer type-surface test (matrixed-mypy smoke-test of the public API) is unblocked by this change but tracked separately.

🤖 Generated with Claude Code

…er 9.x

Raise requires-python to >=3.11, bump titiler.core to >=2.0,<3.0 and
rio-tiler to >=9.0,<10.0, and drop the Python 3.10 back-compat
scaffolding now that 3.10 is unsupported:

- pyproject.toml: new floor, drop the 3.10 classifier, remove the
  typing-extensions conditional dependency.
- modeler.py: import assert_never directly from typing; remove the
  sys.version_info guard and the now-unused import sys.
- tests/test_modeler.py: drop the now-unnecessary numpy type: ignore and
  its stale 3.10/numpy-2.2.6 workaround docstring.
- docs/04-modeler-converter-design.md: update the version-guard prose and
  code snippet to reflect the stdlib-only assert_never import.

Re-locking on >=3.11 also collapses the ucumvert/pint dependency fork
that split on a python_full_version == '3.10.*' marker, resolving the
recurring Dependabot uv update failure.

Closes #27

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

Raise Python floor to 3.11; upgrade to titiler.core 2.x / rio-tiler 9.x

2 participants