Conversation
a3d8c89 to
501cb25
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #31 +/- ##
=======================================
Coverage 88.23% 88.23%
=======================================
Files 13 13
Lines 408 408
Branches 16 16
=======================================
Hits 360 360
Misses 40 40
Partials 8 8
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Replaces dynamically-loaded dependencies (from requirements/base.in) with a static [project].dependencies list, and adds [dependency-groups] (PEP 735) covering test/quality/doc/ci/dev groups. Also adds [tool.uv].constraint-dependencies (machine-managed via edx_lint write_uv_constraints) and creates constraints.txt as the hook for future repo-specific pins. The .in files are removed since [dependency-groups] replaces them. The compiled .txt lockfiles are removed in a follow-up commit together with the uv.lock. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
501cb25 to
ae54e6d
Compare
bmtcril
approved these changes
Apr 27, 2026
bmtcril
left a comment
There was a problem hiding this comment.
Seems reasonable to me, I think we would want that matrix dependency doc elsewhere as well since we're going to need it in many places
Adds tox-uv>=1 to [tox].requires. Switches all testenv sections to uv-venv-lock-runner so every run installs exactly from uv.lock. For the Django version matrix, splits test-base (framework-agnostic pytest deps) from test (test-base + current Django 5.2). The django42 group holds the legacy Django 4.2 pin. Declaring these groups as conflicting in [tool.uv].conflicts lets uv produce a single uv.lock with a separate resolution per group. Tox factor conditionals select the right group per environment. Adds docs/how-tos/adding-a-matrix-dependency.rst explaining how to add or retire a version from any dependency matrix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces pip-compile targets with uv equivalents: - compile-requirements: runs uv lock (generates lockfile without upgrading) - upgrade: writes constraints via edx_lint write_uv_constraints first, then runs uv lock --upgrade - requirements: runs uv sync --group dev (installs project in editable mode automatically, no separate pip install -e . needed) Removes PIP_COMPILE variable, piptools target, and all pip-sync usage. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces pip install steps with astral-sh/setup-uv and uv sync --group ci. tox and tox-uv are in the ci group; uv sync also installs the project itself so everything tox needs is available. uv.lock ensures reproducible installs in CI. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Deletes the entire requirements/ directory (all .txt lockfiles and constraints.txt — the local constraints file has moved to constraints.txt next to pyproject.toml). Adds the generated uv.lock which replaces all the individual .txt lockfiles with a single universal lockfile. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Django 6.0 requires Python 3.12+, so Python 3.11 is also dropped from the matrix and requires-python is bumped to >=3.12. - Replaces django42 group with django60 (Django>=6.0,<7.0) - Adds Django<7.0 to constraints.txt to override the global Django<6.0 constraint from edx-lint, allowing Django 6.x to resolve - Updates [tool.uv].conflicts and tox envlist/factor conditionals - Regenerates uv.lock with both Django 5.2 and 6.0 resolutions BREAKING CHANGE: Python 3.11 is no longer supported (requires Python 3.12+) and Django 4.2 is no longer tested or supported. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ae54e6d to
52e61b6
Compare
Contributor
Author
|
@bmtcril good call out on the doc, I moved it to docs.openedx.org and just linked to it from here: openedx/docs.openedx.org#1436 |
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
Replaces the
pip-compile/pip-synctoolchain withuv, consolidating all dependency declarations intopyproject.tomland replacing the multiplerequirements/*.txtlockfiles with a singleuv.lock.[project].dependencieslist[dependency-groups](test-base, test, django42, quality, doc, ci, dev) replacing allrequirements/*.infiles[tool.uv].conflictsso a singleuv.lockcovers both the Django 4.2 and 5.2 matrix entries with fully reproducible installs (uv-venv-lock-runner)[tool.uv].constraint-dependenciesmanaged byedx_lint write_uv_constraints(see feat: add write_uv_constraints command to manage uv constraint-dependencies edx-lint#537)tox.inito usetox-uvwithuv-venv-lock-runnerand dependency group factor conditionalsMakefile:compile-requirements→uv lock,upgrade→ write constraints thenuv lock --upgrade,requirements→uv sync --group devbackend-ci.ymlto install uv viaastral-sh/setup-uvand runuv sync --group cirequirements/directorydocs/how-tos/adding-a-matrix-dependency.rstexplaining how to add or retire any version from the test matrixDependencies
This PR depends on openedx/edx-lint#537 being merged and released to PyPI before
make upgradewill work (theupgradetarget callsuv run --with edx-lint edx_lint write_uv_constraints). Everything else works independently of that PR.