Skip to content

Commit 439ac75

Browse files
authored
Merge pull request #784 from openedx/feanil/tooling_updates
OEP-67: Add uv and pyproject.toml as backend standards, archive OEP-18
2 parents ab69407 + 0f7fa8a commit 439ac75

4 files changed

Lines changed: 353 additions & 5 deletions

File tree

oeps/best-practices/oep-0018-bp-python-dependencies.rst renamed to oeps/archived/oep-0018-bp-python-dependencies.rst

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ OEP-18: Python Dependency Management
88
+-----------------+--------------------------------------------------------+
99
| Title | Python Dependencies Management |
1010
+-----------------+--------------------------------------------------------+
11-
| Last Modified | 2023-03-06 |
11+
| Last Modified | 2026-04-24 |
1212
+-----------------+--------------------------------------------------------+
1313
| Authors | Jeremy Bowman <jbowman@edx.org> |
1414
+-----------------+--------------------------------------------------------+
1515
| Arbiter | Calen Pennington <cale@edx.org> |
1616
+-----------------+--------------------------------------------------------+
17-
| Status | Approved |
17+
| Status | Replaced |
1818
+-----------------+--------------------------------------------------------+
1919
| Type | Best Practice |
2020
+-----------------+--------------------------------------------------------+
@@ -27,6 +27,11 @@ OEP-18: Python Dependency Management
2727

2828
.. _open-edx-proposals#56 resolution: https://github.com/openedx/openedx-proposals/pull/56#pullrequestreview-116976355
2929

30+
.. warning::
31+
32+
This OEP has been replaced and may be out of date. For the most up-to-date
33+
information see :ref:`OEP-67 Standard Tools and Technologies`.
34+
3035
.. contents::
3136
:local:
3237
:depth: 2

oeps/best-practices/oep-0067-bp-tools-and-technology.rst

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ OEP-67: Standard Tools and Technologies
1111
* - Title
1212
- Tools and Technology Standards
1313
* - Last Modified
14-
- 2025-02-10
14+
- 2026-04-24
1515
* - Authors
1616
- Feanil Patel <feanil@axim.org>
1717
* - Arbiter
@@ -27,7 +27,8 @@ OEP-67: Standard Tools and Technologies
2727
* - Resolution
2828
- * https://github.com/openedx/openedx-proposals/pull/518
2929
* - References
30-
- :ref:`OEP-11 Front End Technology Standards`
30+
- * Replaces :ref:`OEP-11 Front End Technology Standards`
31+
* Replaces :ref:`OEP-18 Python Dependency Management`
3132

3233
Abstract
3334
********
@@ -327,6 +328,32 @@ they do not require disruptive migrations that would break existing MySQL
327328
installations. Support for these other database backends is not guaranteed and
328329
may require plugins or lag behind the official releases.
329330

331+
#. **pyproject.toml should be used to declare project metadata and dependencies**
332+
333+
**Rationale**: `PEP 621`_ standardized project metadata in ``pyproject.toml``,
334+
and `PEP 735`_ added dependency groups — a standard way to declare
335+
context-specific dependencies (test, docs, CI, dev, etc.). Using
336+
``pyproject.toml`` as the single source of truth replaces the older pattern
337+
of ``requirements/*.in`` files and ``setup.py`` / ``setup.cfg``, simplifies
338+
tooling, and aligns with the broader Python ecosystem.
339+
340+
#. **uv should be used for Python dependency locking and virtual environment management**
341+
342+
**Rationale**: `uv`_ consolidates dependency resolution, locking, virtual
343+
environment creation, and tool execution into a single fast tool. It replaces
344+
`pip-tools`_ (``pip-compile`` / ``pip-sync``) and produces a single
345+
``uv.lock`` file from ``pyproject.toml`` dependency groups. The existing
346+
``make upgrade`` pattern is preserved — the target now runs
347+
``uv lock --upgrade`` instead of ``pip-compile --upgrade``.
348+
349+
**Decision Record**: For details, see
350+
:ref:`Use uv for Python dependency management`.
351+
352+
.. _PEP 621: https://peps.python.org/pep-0621/
353+
.. _PEP 735: https://peps.python.org/pep-0735/
354+
.. _uv: https://docs.astral.sh/uv/
355+
.. _pip-tools: https://github.com/jazzband/pip-tools
356+
330357

331358
Decisions
332359
*********
@@ -357,7 +384,7 @@ considered.
357384
:maxdepth: 1
358385
:glob:
359386

360-
.. oep-0067/decisions/backend/*
387+
oep-0067/decisions/backend/*
361388

362389

363390

@@ -368,11 +395,22 @@ Consequences
368395

369396
* All ADRs under OEP-11 will be moved to be under this OEP instead.
370397

398+
* :ref:`OEP-18 Python Dependency Management` will be superseded by the backend
399+
technology recommendations in this OEP.
400+
371401
* Future decisions for technology changes will require an ADR and an update to this OEP
372402

373403
Change History
374404
**************
375405

406+
2026-04-24
407+
==========
408+
409+
* Add ``pyproject.toml`` and ``uv`` to Backend Technology Selection
410+
* Add backend ADR for adopting uv (replacing pip-tools)
411+
* Mark :ref:`OEP-18 Python Dependency Management` as superseded
412+
* `Pull request #784 <https://github.com/openedx/openedx-proposals/pull/784>`_
413+
376414
2025-02-10
377415
==========
378416

0 commit comments

Comments
 (0)