Foundation: Python ≥3.10 + UV + dependency-groups#290
Open
jeandet wants to merge 14 commits into
Open
Conversation
Captures decisions on UV adoption, hatchling build backend, ruff/basedpyright tooling, and three-tier test strategy (unit/contract/e2e). Sequences the work as 17 small PRs ending with a mass reformat. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Per-task implementation plan for the first PR of the modernisation effort. Covers pyproject.toml updates, uv.lock generation, CI/RTD switch to uv, deletion of requirements*.txt / tox.ini / setup.cfg, and developer-doc updates to drop the PYTHONPATH=. pattern. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add SPEASY_CORE_HTTP_REWRITE_RULES env to PRs.yml non-3.10 pytest step (previously only on push/scheduled tests.yml — would have hit a non-existent server on PR builds for non-3.10 matrix entries). - Add --with wheel to PRs.yml build step for parity with tests.yml. - Scope flake8 to 'speasy tests' in both workflows (matches Makefile lint target). Avoids silently broadening lint to docs/conf.py and removes the .venv exclusion workaround that was needed when flake8 ran from repo root.
0dafd72 to
0ef85dc
Compare
Without UV_PROJECT_ENVIRONMENT, uv creates .venv/ inside the project and RTD's sphinx step (which calls $READTHEDOCS_VIRTUALENV_PATH/bin/python directly) fails with 'python: not found'. Point uv at RTD's venv so the install lands where the runner looks for it.
|
This was referenced May 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
First PR of a tooling/test modernisation effort (design spec on file at
docs/superpowers/specs/2026-05-08-speasy-modernisation-design.md, plan atdocs/superpowers/plans/2026-05-08-pr1-foundation-uv-py310.md).requires-pythonto>=3.10(CI matrix already starts at 3.10; the declared floor catches up). Drops the 3.9 classifier.requirements.txt,requirements_dev.txt, anddocs/requirements.txtwith[dependency-groups].devand[dependency-groups].docsinpyproject.toml.uv.lockis checked in for reproducible installs..github/workflows/tests.yml,.github/workflows/PRs.yml) and Read the Docs (.readthedocs.yaml) toastral-sh/setup-uv@v6+uv sync+uv run.tox.ini(referenced deleted requirements files) andsetup.cfg(only obsolete entries:bdist_wheel universal=1is wrong since Speasy is Py3-only,[aliases] test = pytestis deadsetup.py testmachinery,[flake8] exclude = docsis moot once flake8 is scoped tospeasy tests).Makefile,CLAUDE.md,CONTRIBUTING.rstto drop thePYTHONPATH=.pattern in favor ofuv sync/uv run.Build backend (
flit_core) is unchanged — backend swap to hatchling + uv-dynamic-versioning is a later PR in the series.Test plan
make doctestsucceeds in CIuv sync --group dev --group docs && uv run pytest tests/test_datetimerange.pypasses