Skip to content

OEP-67: Add uv and pyproject.toml as backend standards, archive OEP-18#784

Open
feanil wants to merge 2 commits intomasterfrom
feanil/tooling_updates
Open

OEP-67: Add uv and pyproject.toml as backend standards, archive OEP-18#784
feanil wants to merge 2 commits intomasterfrom
feanil/tooling_updates

Conversation

@feanil
Copy link
Copy Markdown
Contributor

@feanil feanil commented Apr 24, 2026

Summary

  • Add two backend technology entries to OEP-67: pyproject.toml (PEP 621/735) for declaring project metadata and dependencies, and uv for dependency locking and virtual environment management.

  • Add the first backend ADR (decisions/backend/0001-uv.rst) documenting the decision to adopt uv over pip-tools, Poetry, and PDM. Includes comprehensive examples (pyproject.toml, tox.ini, common commands).

  • Archive OEP-18 (Python Dependency Management) as Replaced, following the same pattern used when OEP-11 was superseded by OEP-67.

Why now

The Python packaging ecosystem has standardized on pyproject.toml for project metadata (PEP 621) and dependency groups (PEP 735). uv provides a fast, unified tool that natively supports these standards — consolidating dependency resolution, locking, venv management, and tool execution.

Meanwhile, pip-tools (the current OEP-18 standard) does not support PEP 735 dependency groups, and Jazzband — the organization maintaining pip-tools — is sunsetting, raising questions about long-term maintenance.

Open edX repositories should adopt pyproject.toml + uv as the standard approach for Python dependency management. The existing make upgrade workflow is preserved — the target runs uv lock --upgrade instead of pip-compile --upgrade. OEP-18's pip-tools workflow should be superseded.

Rendered Versions of Changed Pages

Proof-of-concept migrations

@robrap
Copy link
Copy Markdown
Contributor

robrap commented Apr 24, 2026

@feanil: Is there any need for a DEPR for the migration? Possibly not. I haven't thought this through. Just asking. Thanks.

@feanil feanil force-pushed the feanil/tooling_updates branch from ce55ef0 to ca4fbd9 Compare April 24, 2026 14:29
@feanil
Copy link
Copy Markdown
Contributor Author

feanil commented Apr 24, 2026

I don't think this needs a DEPR. I'm planning on announcing pretty widely before merging this which I think will be sufficient. If others feel strongly that there should be a corresponding DEPR. I'm happy to have them create/manage that DEPR and I can follow its schedule for merging this.

@feanil feanil marked this pull request as ready for review April 24, 2026 14:32
@robrap
Copy link
Copy Markdown
Contributor

robrap commented Apr 24, 2026

@feanil: You can decide. Fast track DEPR is obviously an option that wouldn't affect your schedule, and it might just widen your inform, for those that listen for DEPRs. Something to consider. Thanks and good luck.

Copy link
Copy Markdown
Contributor

@sarina sarina left a comment

Choose a reason for hiding this comment

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

This is great, thanks for putting it together. Added a couple nits to be addressed but I don't need to re-review.

Comment thread oeps/best-practices/oep-0067/decisions/backend/0001-uv.rst Outdated
Comment thread oeps/best-practices/oep-0067/decisions/backend/0001-uv.rst Outdated
Comment thread oeps/best-practices/oep-0067-bp-tools-and-technology.rst Outdated
Comment thread oeps/best-practices/oep-0067-bp-tools-and-technology.rst
Comment thread oeps/best-practices/oep-0067/decisions/backend/0001-uv.rst
@feanil feanil force-pushed the feanil/tooling_updates branch from ca4fbd9 to 6ca7eaf Compare April 24, 2026 15:07
Add pyproject.toml (PEP 621/735) and uv as backend technology standards
in OEP-67, with a new backend ADR documenting the decision to replace
pip-tools. Archive OEP-18 (Python Dependency Management) as Replaced,
following the same pattern used when OEP-11 was superseded by OEP-67.

References:
- PEP 621: https://peps.python.org/pep-0621/
- PEP 735: https://peps.python.org/pep-0735/
- uv docs: https://docs.astral.sh/uv/
- Jazzband sunsetting: https://jazzband.co/news/2026/03/14/sunsetting-jazzband

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@feanil feanil force-pushed the feanil/tooling_updates branch from 6ca7eaf to ebac6f2 Compare April 24, 2026 15:11
Comment thread oeps/best-practices/oep-0067/decisions/backend/0001-uv.rst
Co-authored-by: Piotr Surowiec <piotr@surowiec.it>
Copy link
Copy Markdown
Contributor

@bradenmacdonald bradenmacdonald left a comment

Choose a reason for hiding this comment

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

💯

Copy link
Copy Markdown
Contributor

@bmtcril bmtcril left a comment

Choose a reason for hiding this comment

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

🚀

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.

6 participants