Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
976bcef
feat: add pyproject.toml deps, dependency-groups, and uv.lock (uv mig…
Jul 1, 2026
8398493
fix: pin social-auth-core<5.0.0, matching current test suite expectat…
Jul 2, 2026
3951ef3
feat: cut over Makefile, tox.ini, and CI to uv (uv migration 2/5)
Jul 1, 2026
3ba6641
fix: correct uv sync/export flags that silently dropped project deps
Jul 2, 2026
f3aad4d
fix: refresh compat exports after social-auth-core constraint fix
Jul 2, 2026
e438c12
feat: migrate codejail sandbox to its own uv project (uv migration 3/5)
Jul 1, 2026
599b970
feat: migrate standalone scripts to their own uv projects (uv migrati…
Jul 1, 2026
ed5f8a5
chore: remove now-unused pip-compile machinery (uv migration 5/5)
Jul 1, 2026
138aafa
fix: regenerate requirements/edx/{base,development}.txt with newer uv
Jul 21, 2026
e495a60
fix: pin lxml==5.3.2 in scripts/user_retirement
Jul 21, 2026
d3f85f9
chore: migrate .coveragerc into pyproject.toml, add enable-cache to r…
Jul 21, 2026
ed31316
docs: link the repo-tools fix PR for find_python_dependencies
Jul 21, 2026
9777414
fix: drop dead tox quality env and unneeded venv PATH export
Jul 27, 2026
362c94b
fix: bump edx-enterprise constraint to 8.7.0, matching master
Jul 27, 2026
6d4d18a
fix: restore bundled/core dep split, drop tox duplication, rename doc…
Jul 27, 2026
a1d3ea1
fix: rename bundled/dev dependency-groups per review feedback
Jul 28, 2026
1ac90a6
Merge remote-tracking branch 'origin/master' into irfanuddinahmad/uv-…
Jul 28, 2026
4ab40db
fix: bump edx-enterprise to 8.7.2, matching master
Jul 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 0 additions & 53 deletions .coveragerc

This file was deleted.

13 changes: 12 additions & 1 deletion .github/workflows/check-consistent-dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
git fetch origin "$BASE_SHA"

# The ^"? is because git may quote weird file paths
if git diff --name-only "$BASE_SHA" | grep -P '^"?((requirements/)|(scripts/.*?/requirements/))'; then
if git diff --name-only "$BASE_SHA" | grep -P '^"?((requirements/)|(scripts/.*?/requirements/)|(scripts/[^/]+/pyproject\.toml)|(scripts/[^/]+/uv\.lock)|(pyproject\.toml)|(uv\.lock))'; then
echo "RELEVANT=true" >> "$GITHUB_ENV"
fi

Expand All @@ -48,6 +48,17 @@ jobs:
with:
python-version: '3.12'

- name: install system requirements
if: ${{ env.RELEVANT == 'true' }}
run: |
sudo apt-get update && sudo apt-get install libmysqlclient-dev libxmlsec1-dev

- name: Install uv
if: ${{ env.RELEVANT == 'true' }}
uses: astral-sh/setup-uv@v7
with:
enable-cache: true

- name: "Recompile requirements"
if: ${{ env.RELEVANT == 'true' }}
run: |
Expand Down
12 changes: 10 additions & 2 deletions .github/workflows/check_python_dependencies.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
# Temporarily disabled: `find_python_dependencies` (from edx-repo-tools) only
# knows how to scan pip-compile's requirements/edx/{base,testing}.txt for
# undocumented git-hosted dependencies. Those files were removed when this
# repo switched to pyproject.toml + uv (see
# https://github.com/openedx/public-engineering/issues/543). Re-enable once
# edx-repo-tools can scan pyproject.toml/uv.lock instead — tracked at
# https://github.com/openedx/repo-tools/issues/725, fix proposed in
# https://github.com/openedx/repo-tools/pull/735.
name: Check Python Dependencies

on:
pull_request:
merge_group:
workflow_dispatch:

jobs:
check_dependencies:
runs-on: ubuntu-latest
if: false

strategy:
matrix:
Expand Down
20 changes: 6 additions & 14 deletions .github/workflows/ci-static-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,15 @@ jobs:
- name: Install system requirements
run: sudo apt update && sudo apt install -y libxmlsec1-dev

- name: Install pip
run: make pre-requirements

- name: Get pip cache dir
id: pip-cache-dir
run: echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT

- name: Cache pip dependencies
id: cache-dependencies
uses: actions/cache@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
path: ${{ steps.pip-cache-dir.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/development.txt') }}
restore-keys: ${{ runner.os }}-pip-
enable-cache: true

- name: Install python dependencies
run: make dev-requirements
run: |
make dev-requirements
echo "$PWD/.venv/bin" >> "$GITHUB_PATH"

- name: Static code analysis
run: make check-types
17 changes: 16 additions & 1 deletion .github/workflows/compile-python-requirements.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@ jobs:
with:
python-version: "3.12"

- name: install system requirements
run: |
sudo apt-get update && sudo apt-get install libmysqlclient-dev libxmlsec1-dev

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true

- name: Run make compile-requirements
env:
PACKAGE: "${{ inputs.package }}"
Expand All @@ -48,7 +57,13 @@ jobs:
with:
branch: "${{ github.triggering_actor }}/compile-python-deps"
branch-suffix: short-commit-hash
add-paths: requirements
add-paths: |
requirements
scripts/**/pyproject.toml
scripts/**/uv.lock
scripts/**/requirements*

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.

Could you verify these paths? Previously, add-paths monitored the top-level requirements path. With this change, requirements* is only being added under scripts/. I just want to confirm this is the intended behavior.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Confirmed this is intended: the top-level requirements entry is unchanged from before this PR and still matches everything recursively under requirements/, including the new requirements/edx-sandbox/{pyproject.toml,uv.lock} standalone uv project. The new scripts/**/... and top-level pyproject.toml/uv.lock entries are purely additive, for the new uv sub-projects that live outside requirements/.

pyproject.toml
uv.lock
commit-message: |
feat: Recompile Python dependencies

Expand Down
14 changes: 3 additions & 11 deletions .github/workflows/js-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,10 @@ jobs:
with:
python-version: ${{ matrix.python-version }}

- name: Get pip cache dir
id: pip-cache-dir
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT

- name: Cache pip dependencies
id: cache-dependencies
uses: actions/cache@v6
- name: Install uv
uses: astral-sh/setup-uv@v7

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.

Can we pin this action to a commit SHA instead of @v7? We generally prefer immutable SHA-pinned GitHub Actions to improve supply chain security and reproducibility.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Replied on the SHA-pinning question in a summary comment: #38915 (comment)

with:
path: ${{ steps.pip-cache-dir.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/base.txt') }}
restore-keys: ${{ runner.os }}-pip-
enable-cache: true

- name: Install Required Python Dependencies
run: |
Expand Down
20 changes: 6 additions & 14 deletions .github/workflows/lint-imports.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,15 @@ jobs:
- name: Install system requirements
run: sudo apt update && sudo apt install -y libxmlsec1-dev

- name: Install pip
run: make pre-requirements

- name: Get pip cache dir
id: pip-cache-dir
run: echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT

- name: Cache pip dependencies
id: cache-dependencies
uses: actions/cache@v6
- name: Install uv
uses: astral-sh/setup-uv@v7

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.

Can we pin this action to a commit SHA instead of @v7? We generally prefer immutable SHA-pinned GitHub Actions to improve supply chain security and reproducibility.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Replied on the SHA-pinning question in a summary comment: #38915 (comment)

with:
path: ${{ steps.pip-cache-dir.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/development.txt') }}
restore-keys: ${{ runner.os }}-pip-
enable-cache: true

- name: Install python dependencies
run: make dev-requirements
run: |
make dev-requirements
echo "$PWD/.venv/bin" >> "$GITHUB_PATH"

# As long there are sub-projects[1] in openedx-platform, we analyze each
# project separately here, in order to make import-linting errors easier
Expand Down
21 changes: 7 additions & 14 deletions .github/workflows/migrations-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,30 +83,23 @@ jobs:
sudo apt-get update
make ubuntu-requirements

- name: Get pip cache dir
id: pip-cache-dir
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT

- name: Cache pip dependencies
id: cache-dependencies
uses: actions/cache@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
path: ${{ steps.pip-cache-dir.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/development.txt') }}
restore-keys: ${{ runner.os }}-pip-
enable-cache: true

- name: Install Python dependencies
run: |
make dev-requirements
echo "$PWD/.venv/bin" >> "$GITHUB_PATH"
if [[ "${{ matrix.django-version }}" != "pinned" ]]; then
pip install "django~=${{ matrix.django-version }}.0"
pip check # fail if this test-reqs/Django combination is broken
uv pip install "django~=${{ matrix.django-version }}.0"
uv pip check # fail if this test-reqs/Django combination is broken
fi

- name: list installed package versions
run: |
sudo pip freeze
uv pip freeze

- name: Run Tests
env:
Expand Down
19 changes: 6 additions & 13 deletions .github/workflows/pylint-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,27 +42,20 @@ jobs:
with:
python-version: 3.12

- name: Get pip cache dir
id: pip-cache-dir
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT

- name: Cache pip dependencies
id: cache-dependencies
uses: actions/cache@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
path: ${{ steps.pip-cache-dir.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/development.txt') }}
restore-keys: ${{ runner.os }}-pip-
enable-cache: true

- name: Install required Python dependencies
run: |
# dev-requirements is needed because the linter will otherwise
# trip over some dev-only things like django-debug-toolbar
# (import debug_toolbar) that aren't in testing.txt.
# (import debug_toolbar) that aren't in the testing group.
make dev-requirements
echo "$PWD/.venv/bin" >> "$GITHUB_PATH"
# After all requirements are installed, check that they're consistent with each other
pip check
uv pip check

- name: Run quality tests
run: |
Expand Down
21 changes: 4 additions & 17 deletions .github/workflows/quality-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,36 +43,23 @@ jobs:
- name: Setup npm
run: npm i -g npm@8.5.x

- name: Get pip cache dir
id: pip-cache-dir
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT

- name: Cache pip dependencies
id: cache-dependencies
uses: actions/cache@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
path: ${{ steps.pip-cache-dir.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/testing.txt') }}
restore-keys: ${{ runner.os }}-pip-
enable-cache: true

- name: Install Required Python Dependencies
env:
PIP_SRC: ${{ runner.temp }}
run: |
make test-requirements
echo "$PWD/.venv/bin" >> "$GITHUB_PATH"

- name: Install npm
env:
PIP_SRC: ${{ runner.temp }}
run: npm ci

- name: Install python packages
env:
PIP_SRC: ${{ runner.temp }}
run: |
pip install -e .

- name: Run Quality Tests
env:
PIP_SRC: ${{ runner.temp }}
Expand Down
9 changes: 7 additions & 2 deletions .github/workflows/semgrep.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,15 @@ jobs:
with:
python-version: "${{ matrix.python-version }}"

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true

- name: Install semgrep
run: |
make pre-requirements
pip-sync requirements/edx/semgrep.txt
uv sync --only-group semgrep --frozen
echo "$PWD/.venv/bin" >> "$GITHUB_PATH"

- name: Run semgrep
env:
Expand Down
30 changes: 6 additions & 24 deletions .github/workflows/static-assets-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,29 +56,15 @@ jobs:
- name: Setup npm
run: npm i -g npm@${{ matrix.npm-version }}

- name: Get pip cache dir
id: pip-cache-dir
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT

- name: Cache pip dependencies
id: cache-dependencies
uses: actions/cache@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
path: ${{ steps.pip-cache-dir.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/development.txt') }}
restore-keys: ${{ runner.os }}-pip-
enable-cache: true

- name: Install Limited Python Deps for Build
- name: Install Python Deps for Build and Collection
run: |
# Install pip-tools.txt first to pin setuptools<82 before installing
# assets.txt. setuptools 82+ removed pkg_resources, which pyfilesystem2
# (fs) still uses for namespace package declarations. The constraints.txt
# pin covers full installs, but this step only installs assets.txt so we
# pre-install pip-tools.txt to ensure setuptools 81.x is in place.
# See: https://github.com/PyFilesystem/pyfilesystem2/issues/577
pip install -r requirements/pip-tools.txt
pip install -r requirements/edx/assets.txt
uv sync --group assets --frozen
echo "$PWD/.venv/bin" >> "$GITHUB_PATH"

- name: Add node_modules bin to $Path
run: echo $GITHUB_WORKSPACE/node_modules/.bin >> $GITHUB_PATH
Expand All @@ -97,10 +83,6 @@ jobs:
npm clean-install
npm run build

- name: Install Full Python Deps for Collection
run: |
pip install -r requirements/edx/base.txt -e .

- name: Check Assets Collection
env:
LMS_CFG: lms/envs/minimal.yml
Expand Down
Loading
Loading