Skip to content

build!: Declare Python dependencies in pyproject.toml#38769

Draft
kdmccormick wants to merge 1 commit into
masterfrom
kdmccormick/pyproject-deps
Draft

build!: Declare Python dependencies in pyproject.toml#38769
kdmccormick wants to merge 1 commit into
masterfrom
kdmccormick/pyproject-deps

Conversation

@kdmccormick

@kdmccormick kdmccormick commented Jun 16, 2026

Copy link
Copy Markdown
Member

Description

Before this change, openedx-platform deps had to be installed in two steps (using pip or uv pip):

 # first, install dependencies. one of the following:
 pip install -r requirements/edx/base.txt
 pip install -r requirements/edx/development.txt
 pip install -r requirements/edx/testing.txt
 pip install -r requirements/edx/doc.txt

 # then, compile metadata for entrypoints:
 pip install -e .

Now, with the dependencies listed in pyproject.toml, it's only one step:

 # one of the following:
 pip install -e '.'
 pip install -e '.[development]'
 pip install -e '.[testing]'
 pip install -e '.[doc]'

BREAKING CHANGE: Running pip install -e . or other similar commands will now install all of openedx-platform's base dependencies. This command used to run very quickly, but now it will take longer, you may want to adjust the command's position in your build scripts. Otherwise, this change is backwards-compatible; it is still fine to run both pip install -r <file> and pip install -e ., just redundant.

This brings the project more in line with Python standards and will make it easier to install and run the platform outside of an environment manager like Tutor. Note that this commit does NOT do anything to install build dependencies (assets.txt) in a more standard way; that could be a future work.

Bumps version to 0.14

Testing

With the Makefile and workflow updates, most CI shards will use this new path to install requirements in one go, which will smoke-test the change.

I'm also building a sandbox on this PR and will smoke-test on it.

Merge deadline

None, although it would be nice to have this in so I can continue working on a reproducible Tutor-less dev setup.

https://github.com/kdmccormick/openedx-template-site

Before this change, openedx-platform deps had to be installed in
two steps (using `pip` or `uv pip`):

   # first, install dependencies. one of the following:
   pip install -r requirements/edx/base.txt
   pip install -r requirements/edx/development.txt
   pip install -r requirements/edx/testing.txt
   pip install -r requirements/edx/doc.txt

   # then, compile metadata for entrypoints:
   pip install -e .

Now, with the dependencies listed in pyproject.toml, it's only one step:

   # one of the following:
   pip install -e '.'
   pip install -e '.[development]'
   pip install -e '.[testing]'
   pip install -e '.[doc]'

BREAKING CHANGE: Running `pip install -e .` or other similar commands
will now install all of openedx-platform's base dependencies. This command
used to run very quickly, but now it will take longer, you may want to
adjust the command's position in your build scripts. Otherwise, this
change is backwards-compatible; it is still fine to run both
`pip install -r <file>` and `pip install -e .`, just redundant.

This brings the project more in line with Python standards and will make
it easier to install and run the platform outside of an environment manager
like Tutor. Note that this commit does NOT do anything to install build
dependencies (assets.txt) in a more standard way; that could be a future work.

Bumps version to 0.14
@kdmccormick kdmccormick added the create-sandbox open-craft-grove should create a sandbox environment from this PR label Jun 16, 2026
@kdmccormick kdmccormick requested review from feanil and ormsbee June 16, 2026 15:36

@feanil feanil left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This seems fine but is now part way to the full transition we're making in other repos. I'm not against it but will muddle things when we want to switch fully to uv and uv.lock for this. What do you think about asking aximprovements to modernize this repo sooner rather than later instead?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bare metal create-sandbox open-craft-grove should create a sandbox environment from this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants