diff --git a/.github/workflows/check-consistent-dependencies.yml b/.github/workflows/check-consistent-dependencies.yml index a84ef40bbcab..bdc306eba647 100644 --- a/.github/workflows/check-consistent-dependencies.yml +++ b/.github/workflows/check-consistent-dependencies.yml @@ -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/)|(pyproject\.toml)|(uv\.lock))'; then echo "RELEVANT=true" >> "$GITHUB_ENV" fi @@ -48,6 +48,15 @@ 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 + - name: "Recompile requirements" if: ${{ env.RELEVANT == 'true' }} run: | diff --git a/.github/workflows/check_python_dependencies.yml b/.github/workflows/check_python_dependencies.yml index 14d2d6252006..8e935653a55b 100644 --- a/.github/workflows/check_python_dependencies.yml +++ b/.github/workflows/check_python_dependencies.yml @@ -1,12 +1,19 @@ +# 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. name: Check Python Dependencies on: - pull_request: - merge_group: + workflow_dispatch: jobs: check_dependencies: runs-on: ubuntu-latest + if: false strategy: matrix: diff --git a/.github/workflows/ci-static-analysis.yml b/.github/workflows/ci-static-analysis.yml index 94fb9e863d87..afa7fafff8ab 100644 --- a/.github/workflows/ci-static-analysis.yml +++ b/.github/workflows/ci-static-analysis.yml @@ -24,23 +24,13 @@ 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@v5 - with: - path: ${{ steps.pip-cache-dir.outputs.dir }} - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/development.txt') }} - restore-keys: ${{ runner.os }}-pip- + - name: Install uv + uses: astral-sh/setup-uv@v7 - 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 diff --git a/.github/workflows/compile-python-requirements.yml b/.github/workflows/compile-python-requirements.yml index fe8fdc6ff542..24d2fa130624 100644 --- a/.github/workflows/compile-python-requirements.yml +++ b/.github/workflows/compile-python-requirements.yml @@ -28,6 +28,13 @@ 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 + - name: Run make compile-requirements env: PACKAGE: "${{ inputs.package }}" @@ -48,7 +55,10 @@ jobs: with: branch: "${{ github.triggering_actor }}/compile-python-deps" branch-suffix: short-commit-hash - add-paths: requirements + add-paths: | + requirements + pyproject.toml + uv.lock commit-message: | feat: Recompile Python dependencies diff --git a/.github/workflows/js-tests.yml b/.github/workflows/js-tests.yml index dd21d12e3d25..9277cbd60469 100644 --- a/.github/workflows/js-tests.yml +++ b/.github/workflows/js-tests.yml @@ -48,22 +48,13 @@ 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@v5 - with: - path: ${{ steps.pip-cache-dir.outputs.dir }} - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/base.txt') }} - restore-keys: ${{ runner.os }}-pip- + - name: Install uv + uses: astral-sh/setup-uv@v7 - name: Install Required Python Dependencies run: | make base-requirements + echo "$PWD/.venv/bin" >> "$GITHUB_PATH" - name: Install npm run: npm ci diff --git a/.github/workflows/lint-imports.yml b/.github/workflows/lint-imports.yml index 8b119d31e6b5..1809eb23db3b 100644 --- a/.github/workflows/lint-imports.yml +++ b/.github/workflows/lint-imports.yml @@ -24,23 +24,13 @@ 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@v5 - with: - path: ${{ steps.pip-cache-dir.outputs.dir }} - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/development.txt') }} - restore-keys: ${{ runner.os }}-pip- + - name: Install uv + uses: astral-sh/setup-uv@v7 - 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 diff --git a/.github/workflows/migrations-check.yml b/.github/workflows/migrations-check.yml index 20540fb43906..69fc9cce4eaa 100644 --- a/.github/workflows/migrations-check.yml +++ b/.github/workflows/migrations-check.yml @@ -83,30 +83,21 @@ 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@v5 - with: - path: ${{ steps.pip-cache-dir.outputs.dir }} - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/development.txt') }} - restore-keys: ${{ runner.os }}-pip- + - name: Install uv + uses: astral-sh/setup-uv@v7 - 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: diff --git a/.github/workflows/pylint-checks.yml b/.github/workflows/pylint-checks.yml index 91141c0c29ed..865bb3027e49 100644 --- a/.github/workflows/pylint-checks.yml +++ b/.github/workflows/pylint-checks.yml @@ -42,27 +42,18 @@ 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@v5 - with: - path: ${{ steps.pip-cache-dir.outputs.dir }} - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/development.txt') }} - restore-keys: ${{ runner.os }}-pip- + - name: Install uv + uses: astral-sh/setup-uv@v7 - 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: | diff --git a/.github/workflows/quality-checks.yml b/.github/workflows/quality-checks.yml index b57b713eb93a..18292c6c283f 100644 --- a/.github/workflows/quality-checks.yml +++ b/.github/workflows/quality-checks.yml @@ -43,36 +43,21 @@ 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@v5 - with: - path: ${{ steps.pip-cache-dir.outputs.dir }} - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/testing.txt') }} - restore-keys: ${{ runner.os }}-pip- + - name: Install uv + uses: astral-sh/setup-uv@v7 - 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 }} diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml index c201f30aa799..29925cd9249b 100644 --- a/.github/workflows/semgrep.yml +++ b/.github/workflows/semgrep.yml @@ -31,10 +31,13 @@ jobs: with: python-version: "${{ matrix.python-version }}" + - name: Install uv + uses: astral-sh/setup-uv@v7 + - 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: diff --git a/.github/workflows/static-assets-check.yml b/.github/workflows/static-assets-check.yml index 41159e3526c5..834916241530 100644 --- a/.github/workflows/static-assets-check.yml +++ b/.github/workflows/static-assets-check.yml @@ -56,29 +56,13 @@ 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@v5 - with: - path: ${{ steps.pip-cache-dir.outputs.dir }} - key: ${{ runner.os }}-pip-${{ hashFiles('requirements/edx/development.txt') }} - restore-keys: ${{ runner.os }}-pip- + - name: Install uv + uses: astral-sh/setup-uv@v7 - - 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 @@ -97,10 +81,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 diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 7597e9d16c8c..1064d2112897 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -91,17 +91,21 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: Install uv + uses: astral-sh/setup-uv@v7 + - name: install requirements run: | make test-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: | - pip freeze + uv pip freeze - name: set settings path shell: bash @@ -172,9 +176,13 @@ jobs: run: | sudo apt-get update && sudo apt-get install libxmlsec1-dev + - name: Install uv + uses: astral-sh/setup-uv@v7 + - name: install requirements run: | make test-requirements + echo "$PWD/.venv/bin" >> "$GITHUB_PATH" - name: collect tests from all modules shell: bash @@ -307,7 +315,7 @@ jobs: - name: Install Python dependencies run: | - pip install -r requirements/edx/coverage.txt + pip install coverage diff-cover - name: Run coverage run: | diff --git a/.github/workflows/upgrade-one-python-dependency.yml b/.github/workflows/upgrade-one-python-dependency.yml index fc4610baf49d..837b78024a18 100644 --- a/.github/workflows/upgrade-one-python-dependency.yml +++ b/.github/workflows/upgrade-one-python-dependency.yml @@ -41,12 +41,46 @@ 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 + - name: Update any pinned dependencies env: NEW_VERSION: "${{ inputs.version }}" PACKAGE: "${{ inputs.package }}" run: | - sed 's/^\('$PACKAGE'[^#]*\)==[^ #]\+/\1=='$NEW_VERSION'/' -i requirements/constraints.txt + # Constraints now live in [tool.edx_lint].uv_constraints in pyproject.toml + # (previously requirements/constraints.txt), so this needs to edit that + # TOML array rather than sed-patching a plain-text file. --no-project + # avoids syncing the whole project just to edit a TOML file with tomlkit. + test -z "$NEW_VERSION" && exit 0 + uv run --no-project --with tomlkit python3 - <<'PYEOF' + import os + import re + + import tomlkit + + package = os.environ["PACKAGE"] + new_version = os.environ["NEW_VERSION"] + + + def normalized_name(spec): + return re.split(r"[<>=!~\[; ]", spec, maxsplit=1)[0].lower().replace("_", "-") + + + path = "pyproject.toml" + doc = tomlkit.parse(open(path, encoding="utf-8").read()) + constraints = doc["tool"]["edx_lint"]["uv_constraints"] + target = normalized_name(package) + for i, spec in enumerate(constraints): + if normalized_name(str(spec)) == target and "==" in str(spec): + constraints[i] = re.sub(r"==[^,]+", f"=={new_version}", str(spec)) + open(path, "w", encoding="utf-8").write(tomlkit.dumps(doc)) + PYEOF - name: Run make upgrade-package env: diff --git a/.readthedocs.yaml b/.readthedocs.yaml index fef9e3c2a9d2..fcc3e8bda6bc 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -4,16 +4,19 @@ build: os: "ubuntu-lts-latest" tools: python: "3.12" + jobs: + post_create_environment: + - pip install uv + # Export the `doc` dependency-group to a plain requirements.txt so it can be + # installed into RTD's own managed virtualenv below, rather than a separate + # uv-managed one -- this keeps RTD's normal sphinx auto-build detection intact. + # constraint-dependencies (e.g. setuptools<82, needed by fs/pyfilesystem2) are + # applied automatically as part of this export, so no separate pre-pinning step + # is needed the way requirements/pip-tools.txt used to provide. + - uv export --frozen --no-hashes --only-group doc -o doc-requirements.txt + post_install: + - python -m pip install -r doc-requirements.txt + - python -m pip install -e . sphinx: configuration: docs/conf.py - -python: - install: - # Need to install this to set the correct version of steuptools for now - # because it is needed by fs - # See https://github.com/openedx/openedx-platform/issues/38068 for details. - - requirements: "requirements/pip-tools.txt" - - requirements: "requirements/edx/doc.txt" - - method: pip - path: . diff --git a/Makefile b/Makefile index 98931cb608d2..ba68befd1f8b 100644 --- a/Makefile +++ b/Makefile @@ -64,39 +64,30 @@ pull_translations: clean_translations ## pull translations via atlas detect_changed_source_translations: ## check if translation files are up-to-date i18n_tool changed -pre-requirements: ## install Python requirements for running pip-tools +pre-requirements: ## install Python requirements for running pip-tools (still needed for requirements/edx-sandbox and scripts/*, which aren't on uv yet) pip install -r requirements/pip-tools.txt -local-requirements: -# edx-platform installs some Python projects from within the edx-platform repo itself. - pip install -e . +local-requirements: ## no-op; `uv sync` (used by the targets below) already installs -e . itself + @true -dev-requirements: pre-requirements - @# The "$(wildcard..)" is to include private.txt if it exists, and make no mention - @# of it if it does not. Shell wildcarding can't do that with default options. - pip-sync requirements/edx/development.txt $(wildcard requirements/edx/private.txt) - make local-requirements +dev-requirements: ## install development environment requirements + uv sync --group dev --frozen -base-requirements: pre-requirements - pip-sync requirements/edx/base.txt - make local-requirements +base-requirements: ## install only production/runtime dependencies + uv sync --no-default-groups --frozen -test-requirements: pre-requirements - pip-sync --pip-args="--exists-action=w" requirements/edx/testing.txt - make local-requirements +test-requirements: ## install only testing dependencies (used by CI and tox) + uv sync --only-group testing --frozen requirements: dev-requirements ## install development environment requirements -# Order is very important in this list: files must appear after everything they include! +# requirements/edx-sandbox (codejail's isolated sandbox environment) and the +# scripts/* one-off script directories are not yet migrated to uv (tracked in +# https://github.com/openedx/public-engineering/issues/543) and are still +# compiled with pip-compile below. Order is important: files must appear +# after everything they include! REQ_FILES = \ - requirements/edx/coverage \ requirements/edx-sandbox/base \ - requirements/edx/base \ - requirements/edx/doc \ - requirements/edx/testing \ - requirements/edx/assets \ - requirements/edx/development \ - requirements/edx/semgrep \ scripts/xblock/requirements \ scripts/user_retirement/requirements/base \ scripts/user_retirement/requirements/testing \ @@ -114,10 +105,36 @@ $(COMMON_CONSTRAINTS_TXT): printf "$(COMMON_CONSTRAINTS_TEMP_COMMENT)" | cat - $(@) > temp && mv temp $(@) compile-requirements: export CUSTOM_COMPILE_COMMAND=make upgrade -compile-requirements: pre-requirements ## Re-compile *.in requirements to *.txt - @# Bootstrapping: Rebuild pip and pip-tools first, and then install them - @# so that if there are any failures we'll know now, rather than the next - @# time someone tries to use the outputs. +compile-requirements: pre-requirements ## Regenerate uv.lock for the root project, and re-compile *.in requirements for the not-yet-migrated sub-projects above + uv run --no-project --with edx-lint edx_lint write_uv_constraints pyproject.toml + uv lock ${UV_LOCK_OPTS} + + @# Compatibility exports for external tooling (e.g. tutor's Dockerfile) that + @# still does `pip install -r requirements/edx/.txt` directly. These are + @# GENERATED FILES -- see the header comment in each for what regenerates them. + @mkdir -p requirements/edx + @{ \ + echo "# GENERATED FILE, DO NOT EDIT DIRECTLY."; \ + echo "# Compatibility export of [project.dependencies] for tools that still"; \ + echo "# 'pip install -r requirements/edx/base.txt' directly instead of using uv."; \ + echo "# Source of truth: [project.dependencies] in pyproject.toml / uv.lock."; \ + uv export --frozen --no-hashes --no-default-groups --no-emit-project; \ + } > requirements/edx/base.txt + @{ \ + echo "# GENERATED FILE, DO NOT EDIT DIRECTLY."; \ + echo "# Compatibility export of the 'assets' dependency-group for tools that still"; \ + echo "# 'pip install -r requirements/edx/assets.txt' directly instead of using uv."; \ + echo "# Source of truth: [dependency-groups].assets in pyproject.toml / uv.lock."; \ + uv export --frozen --no-hashes --only-group assets --no-emit-project; \ + } > requirements/edx/assets.txt + @{ \ + echo "# GENERATED FILE, DO NOT EDIT DIRECTLY."; \ + echo "# Compatibility export of the 'dev' dependency-group for tools that still"; \ + echo "# 'pip install -r requirements/edx/development.txt' directly instead of using uv."; \ + echo "# Source of truth: [dependency-groups].dev in pyproject.toml / uv.lock."; \ + uv export --frozen --no-hashes --group dev --no-emit-project; \ + } > requirements/edx/development.txt + sed 's/Django<5.0//g' requirements/common_constraints.txt > requirements/common_constraints.tmp mv requirements/common_constraints.tmp requirements/common_constraints.txt sed 's/pip<25.3//g' requirements/common_constraints.txt > requirements/common_constraints.tmp @@ -135,12 +152,12 @@ compile-requirements: pre-requirements ## Re-compile *.in requirements to *.txt export REBUILD=''; \ done -upgrade: $(COMMON_CONSTRAINTS_TXT) ## update the pip requirements files to use the latest releases satisfying our constraints - $(MAKE) compile-requirements COMPILE_OPTS="--upgrade" +upgrade: $(COMMON_CONSTRAINTS_TXT) ## update all dependencies (uv.lock for the root project, pip-compile for the not-yet-migrated sub-projects) to the latest releases satisfying our constraints + $(MAKE) compile-requirements COMPILE_OPTS="--upgrade" UV_LOCK_OPTS="--upgrade" upgrade-package: ## update just one package to the latest usable release @test -n "$(package)" || { echo "\nUsage: make upgrade-package package=...\n"; exit 1; } - $(MAKE) compile-requirements COMPILE_OPTS="--upgrade-package $(package)" + $(MAKE) compile-requirements COMPILE_OPTS="--upgrade-package $(package)" UV_LOCK_OPTS="--upgrade-package $(package)" check-types: ## run static type-checking tests mypy diff --git a/README.rst b/README.rst index 1d5db644b6cc..b04538488df0 100644 --- a/README.rst +++ b/README.rst @@ -99,12 +99,12 @@ Language Packages: * Backend build: - - ``pip install -r requirements/edx/assets.txt`` + - ``uv sync --group assets`` * Backend application: - - ``pip install -r requirements/edx/base.txt`` (production) - - ``pip install -r requirements/edx/development.txt`` (development) + - ``uv sync --no-default-groups`` (production) + - ``uv sync --group dev`` (development) Some Python packages have system dependencies. For example, installing these packages on Debian or Ubuntu will require first running ``sudo apt install python3-dev default-libmysqlclient-dev build-essential pkg-config`` to satisfy the requirements of the ``mysqlclient`` Python package. diff --git a/docs/concepts/testing/testing.rst b/docs/concepts/testing/testing.rst index 5e4248523c65..cd32f44eba8e 100644 --- a/docs/concepts/testing/testing.rst +++ b/docs/concepts/testing/testing.rst @@ -99,7 +99,8 @@ Running Python Unit tests ************************* The following commands need to be run within a Python environment in -which requirements/edx/testing.txt has been installed. If you are using a +which the ``testing`` dependency group (``uv sync --only-group testing``) has +been installed. If you are using a Docker-based Open edX distribution, then you probably will want to run these commands within the LMS and/or CMS Docker containers. diff --git a/docs/references/static-assets.rst b/docs/references/static-assets.rst index 9a3e3c25b663..c1e3970bb21d 100644 --- a/docs/references/static-assets.rst +++ b/docs/references/static-assets.rst @@ -72,7 +72,7 @@ Building frontend assets requires an active Node and Python environment with dependencies installed:: npm clean-install - pip install -r requirements/edx/assets.txt + uv sync --group assets Once your environment variables are set and build dependencies are installed, @@ -139,7 +139,7 @@ skip this section. First, ensure you have a Python enironment with all edx-platform dependencies installed:: - pip install -r requirements/edx/base.txt -e . + uv sync Next, download localized versions of edx-platform assets. Under the hood, this command uses the `Open edX Atlas`_ tool, which manages aggregated translations diff --git a/requirements/README.rst b/requirements/README.rst index c602cc8905b1..715f58b6aeae 100644 --- a/requirements/README.rst +++ b/requirements/README.rst @@ -1,18 +1,28 @@ Requirements/dependencies ######################### -These directories specify the Python (and system) dependencies for the LMS and Studio. +The main application's Python dependencies are declared in the root +``pyproject.toml`` (``[project.dependencies]`` for runtime deps, +``[dependency-groups]`` for testing/development/doc/assets/semgrep tooling, +and ``[tool.edx_lint].uv_constraints`` for repo-specific version pins) and +locked in the root ``uv.lock``, managed with `uv`_. -- ``edx`` contains the normal Python requirements files -- ``edx-sandbox`` contains the requirements files for Codejail -- ``constraints.txt`` is shared between the two +This ``requirements/`` directory now only holds: -(In a normal `OEP-18`_-compliant repository, the ``*.in`` and ``*.txt`` files would be -directly in the requirements directory.) +- ``edx-sandbox``, the requirements for Codejail's isolated sandbox environment +- ``constraints.txt`` / ``common_constraints.txt`` / ``pip-tools.in`` / ``pip-tools.txt``, + still needed to ``pip-compile`` ``edx-sandbox`` and the ``scripts/*`` one-off + script directories, none of which are on ``uv`` yet -.. _OEP-18: https://github.com/openedx/open-edx-proposals/blob/master/oeps/oep-0018-bp-python-dependencies.rst +These are being migrated to their own standalone ``uv``-managed projects too, +tracked in `public-engineering#543`_. Until that's done, they're still +manipulated using the Makefile targets below in a Linux environment (to match +our build and deploy systems); for developers on Mac, this can be achieved by +using the GitHub workflows or by running Make targets from inside devstack's +lms-shell or another Linux environment. -While the ``*.in`` files are intended to be updated manually, the ``*.txt`` files should only be manipulated using Makefile targets in a Linux environment (to match our build and deploy systems). For developers on Mac, this can be achieved by using the GitHub workflows or by running Make targets from inside devstack's lms-shell or another Linux environment. +.. _uv: https://docs.astral.sh/uv/ +.. _public-engineering#543: https://github.com/openedx/public-engineering/issues/543 If you don't have write permissions to openedx/edx-platform, you'll need to run these workflows on a fork. @@ -22,7 +32,9 @@ Workflows and Makefile targets Add a dependency ================ -To add a Python dependency, specify it in the appropriate ``requirements/edx/*.in`` file, push that up to a branch, and then use the `compile-python-requirements.yml workflow `_ to run ``make compile-requirements`` against your branch. This will ensure the lockfiles are updated with any transitive dependencies and will ping you on a PR for updating your branch. +To add a Python dependency, add it to ``[project.dependencies]`` (or the +appropriate ``[dependency-groups]`` entry) in ``pyproject.toml``, push that up +to a branch, and then use the `compile-python-requirements.yml workflow `_ to run ``make compile-requirements`` against your branch. This will ensure ``uv.lock`` is updated with any transitive dependencies and will ping you on a PR for updating your branch. Upgrade just one dependency =========================== @@ -38,10 +50,10 @@ Downgrade a dependency If you instead need to surgically *downgrade* a dependency: -1. Add an exact-match or max-version constraint to ``constraints.txt`` with a comment explaining why (and ideally a ticket or issue link). Here's what it might look like:: +1. Add an exact-match or max-version constraint to ``[tool.edx_lint].uv_constraints`` in ``pyproject.toml`` with a comment explaining why (and ideally a ticket or issue link). Here's what it might look like:: # frobulator 2.x has breaking API changes; see https://github.com/openedx/edx-platform/issue/1234567 for fixing it - frobulator<2.0.0 + "frobulator<2.0.0", 2. After pushing that up to a branch, use the `compile-python-requirements.yml workflow `_ to run ``make compile-requirements`` against your branch. @@ -78,7 +90,7 @@ Luckily, we have simple runbooks for upgrading or downgrading a single package, Is there an unpinned git dependency? ==================================== -If the diff relates to a dependency that is installed from git rather than from PyPI (such as being a transitive dependency of anything in github.in), check whether any of the dependencies in github.in has failed to pin a specific commit. We want to have as few of these dependencies as possible, as they're a maintenance and performance problem, and there are important instructions at the top of that file for how to manage them. +If the diff relates to a dependency that is installed from git rather than from PyPI, check ``[project.dependencies]`` in ``pyproject.toml`` for a direct reference (``name @ git+https://...@TAG-OR-SHA``) that has failed to pin a specific commit. We want to have as few of these dependencies as possible, as they're a maintenance and performance problem. Help, I didn't change any dependencies, and this is still failing! ================================================================== diff --git a/requirements/edx/assets.in b/requirements/edx/assets.in deleted file mode 100644 index 16211c3fadff..000000000000 --- a/requirements/edx/assets.in +++ /dev/null @@ -1,11 +0,0 @@ -# Requirements for running `npm run build`. - -# This file is NOT included into base.txt, because we do not want to -# superfluously install frontend build requirements into the production -# backend requirements. - --c ../constraints.txt - -click -libsass -nodeenv diff --git a/requirements/edx/assets.txt b/requirements/edx/assets.txt index fdc80ce99af4..abd17f1f86c2 100644 --- a/requirements/edx/assets.txt +++ b/requirements/edx/assets.txt @@ -1,16 +1,13 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# make upgrade -# -click==8.4.1 - # via -r requirements/edx/assets.in +# GENERATED FILE, DO NOT EDIT DIRECTLY. +# Compatibility export of the 'assets' dependency-group for tools that still +# 'pip install -r requirements/edx/assets.txt' directly instead of using uv. +# Source of truth: [dependency-groups].assets in pyproject.toml / uv.lock. +# This file was autogenerated by uv via the following command: +# uv export --frozen --no-hashes --only-group assets --no-emit-project +click==8.1.8 +colorama==0.4.6 ; sys_platform == 'win32' + # via click libsass==0.10.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/assets.in nodeenv==1.10.0 - # via -r requirements/edx/assets.in six==1.17.0 # via libsass diff --git a/requirements/edx/base.in b/requirements/edx/base.in deleted file mode 100644 index de968171d03f..000000000000 --- a/requirements/edx/base.in +++ /dev/null @@ -1,2 +0,0 @@ --r kernel.in # Core dependencies required for the platform to run. --r bundled.in # Additional packages usually bundled with the platform diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index a7fbc4aa3d54..ecc8b941e74f 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -1,11 +1,11 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# make upgrade -# +# GENERATED FILE, DO NOT EDIT DIRECTLY. +# Compatibility export of [project.dependencies] for tools that still +# 'pip install -r requirements/edx/base.txt' directly instead of using uv. +# Source of truth: [project.dependencies] in pyproject.toml / uv.lock. +# This file was autogenerated by uv via the following command: +# uv export --frozen --no-hashes --no-default-groups --no-emit-project acid-xblock==0.4.1 - # via -r requirements/edx/kernel.in + # via openedx-platform aiohappyeyeballs==2.6.2 # via aiohttp aiohttp==3.14.1 @@ -15,14 +15,14 @@ aiosignal==1.4.0 amqp==5.3.1 # via kombu analytics-python==1.4.post1 - # via -r requirements/edx/kernel.in + # via openedx-platform aniso8601==10.0.1 # via # edx-tincan-py35 # tincan annotated-types==0.7.0 # via pydantic -anyio==4.14.0 +anyio==4.14.1 # via httpx appdirs==1.4.4 # via fs @@ -35,7 +35,6 @@ asn1crypto==1.5.1 # via snowflake-connector-python attrs==26.1.0 # via - # -r requirements/edx/kernel.in # aiohttp # edx-ace # jsonschema @@ -43,12 +42,13 @@ attrs==26.1.0 # openedx-authz # openedx-core # openedx-events + # openedx-platform # referencing babel==2.18.0 # via - # -r requirements/edx/kernel.in # enmerkar # enmerkar-underscore + # openedx-platform backoff==1.10.0 # via analytics-python bcrypt==5.0.0 @@ -60,7 +60,7 @@ beautifulsoup4==4.15.0 # xblocks-contrib billiard==4.2.4 # via celery -bleach[css]==6.4.0 +bleach==6.4.0 # via # edx-enterprise # lti-consumer-xblock @@ -68,35 +68,31 @@ bleach[css]==6.4.0 # ora2 # xblock-drag-and-drop-v2 # xblock-poll -boto3==1.43.30 +boto3==1.43.38 # via - # -r requirements/edx/kernel.in # django-ses # fs-s3fs + # openedx-platform # ora2 # snowflake-connector-python -botocore==1.43.30 +botocore==1.43.38 # via - # -r requirements/edx/kernel.in # boto3 + # openedx-platform # s3transfer # snowflake-connector-python -bracex==2.6 - # via wcmatch bridgekeeper==0.9 - # via -r requirements/edx/kernel.in + # via openedx-platform cachecontrol==0.14.4 # via firebase-admin cachetools==7.1.4 # via edxval -camel-converter[pydantic]==5.1.0 +camel-converter==5.1.0 # via meilisearch casbin-django-orm-adapter==1.7.0 # via openedx-authz celery==5.6.3 # via - # -c requirements/constraints.txt - # -r requirements/edx/kernel.in # django-celery-results # django-user-tasks # edx-celeryutils @@ -104,14 +100,15 @@ celery==5.6.3 # enterprise-integrated-channels # event-tracking # openedx-core -certifi==2026.5.20 + # openedx-platform +certifi==2026.6.17 # via # elasticsearch # httpcore # httpx # requests # snowflake-connector-python -cffi==2.0.0 +cffi==2.0.0 ; platform_python_implementation != 'PyPy' # via # cryptography # pynacl @@ -125,9 +122,9 @@ charset-normalizer==3.4.7 # snowflake-connector-python chem==2.0.0 # via - # -r requirements/edx/kernel.in + # openedx-platform # xblocks-contrib -click==8.4.1 +click==8.1.8 # via # celery # click-didyoumean @@ -147,16 +144,20 @@ code-annotations==3.0.0 # edx-enterprise # edx-toggles codejail-includes==2.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform +colorama==0.4.6 ; sys_platform == 'win32' + # via + # click + # tqdm crowdsourcehinter-xblock==1.0.1 - # via -r requirements/edx/bundled.in + # via openedx-platform cryptography==49.0.0 # via - # -r requirements/edx/kernel.in # django-fernet-fields-v2 # edx-enterprise # google-auth # jwcrypto + # openedx-platform # paramiko # pgpy # pyjwt @@ -167,17 +168,14 @@ cssutils==2.15.0 # via pynliner defusedxml==0.7.1 # via - # -r requirements/edx/kernel.in # djangorestframework-xml + # openedx-platform # ora2 # python3-openid # social-auth-core # xblocks-contrib django==5.2.15 # via - # -c requirements/common_constraints.txt - # -c requirements/constraints.txt - # -r requirements/edx/kernel.in # casbin-django-orm-adapter # django-appconf # django-autocomplete-light @@ -244,6 +242,7 @@ django==5.2.15 # openedx-events # openedx-filters # openedx-forum + # openedx-platform # ora2 # social-auth-app-django # super-csv @@ -252,35 +251,35 @@ django==5.2.15 # xss-utils django-appconf==1.2.0 # via django-statici18n -django-autocomplete-light==4.0.3 - # via -r requirements/edx/kernel.in +django-autocomplete-light==5.0.0 + # via openedx-platform django-cache-memoize==0.2.1 # via edx-enterprise django-celery-results==2.6.0 - # via -r requirements/edx/kernel.in + # via openedx-platform django-classy-tags==4.1.0 # via django-sekizai django-config-models==3.0.0 # via - # -r requirements/edx/kernel.in # edx-enterprise # enterprise-integrated-channels # lti-consumer-xblock + # openedx-platform django-cors-headers==4.9.0 - # via -r requirements/edx/kernel.in + # via openedx-platform django-countries==9.0.0 # via - # -r requirements/edx/kernel.in # edx-enterprise + # openedx-platform django-crum==0.7.9 # via - # -r requirements/edx/kernel.in # edx-django-utils # edx-enterprise # edx-proctoring # edx-rbac # edx-toggles # openedx-authz + # openedx-platform # super-csv django-fernet-fields-v2==0.9 # via @@ -288,21 +287,20 @@ django-fernet-fields-v2==0.9 # enterprise-integrated-channels django-filter==25.2 # via - # -r requirements/edx/kernel.in # edx-enterprise # lti-consumer-xblock + # openedx-platform django-ipware==7.0.1 # via - # -r requirements/edx/kernel.in # edx-enterprise # edx-proctoring + # openedx-platform django-js-asset==4.0.1 # via django-mptt django-method-override==1.0.4 - # via -r requirements/edx/kernel.in + # via openedx-platform django-model-utils==5.0.0 # via - # -r requirements/edx/kernel.in # django-user-tasks # edx-bulk-grades # edx-celeryutils @@ -316,74 +314,73 @@ django-model-utils==5.0.0 # edx-when # edxval # enterprise-integrated-channels + # openedx-platform # ora2 # super-csv django-mptt==0.18.0 # via - # -r requirements/edx/kernel.in # openedx-django-wiki + # openedx-platform django-multi-email-field==0.8.0 # via edx-enterprise django-mysql==4.19.0 - # via -r requirements/edx/kernel.in + # via openedx-platform django-oauth-toolkit==1.7.1 # via - # -c requirements/constraints.txt - # -r requirements/edx/kernel.in # edx-enterprise # enterprise-integrated-channels + # openedx-platform django-object-actions==5.1.2 # via # edx-enterprise # enterprise-integrated-channels django-pipeline==4.1.0 - # via -r requirements/edx/kernel.in + # via openedx-platform django-push-notifications==3.3.0 # via edx-ace django-ratelimit==4.1.0 - # via -r requirements/edx/kernel.in + # via openedx-platform django-sekizai==4.1.0 # via - # -r requirements/edx/kernel.in # openedx-django-wiki + # openedx-platform django-ses==4.7.2 - # via -r requirements/edx/bundled.in -django-simple-history==3.11.0 + # via openedx-platform +django-simple-history==3.12.0 # via - # -r requirements/edx/kernel.in # edx-enterprise # edx-organizations # edx-proctoring # enterprise-integrated-channels + # openedx-platform # ora2 django-statici18n==2.7.1 # via - # -r requirements/edx/kernel.in # lti-consumer-xblock + # openedx-platform # xblock-drag-and-drop-v2 # xblock-poll django-storages==1.14.6 # via - # -r requirements/edx/kernel.in # edxval + # openedx-platform django-user-tasks==4.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform django-waffle==5.0.0 # via - # -r requirements/edx/kernel.in # edx-django-utils # edx-drf-extensions # edx-enterprise # edx-proctoring # edx-toggles # openedx-authz + # openedx-platform django-webpack-loader==3.2.4 # via - # -r requirements/edx/kernel.in # edx-proctoring + # openedx-platform djangorestframework==3.17.1 # via - # -r requirements/edx/kernel.in # django-config-models # django-user-tasks # drf-jwt @@ -399,6 +396,7 @@ djangorestframework==3.17.1 # openedx-authz # openedx-core # openedx-forum + # openedx-platform # ora2 # super-csv djangorestframework-xml==2.0.0 @@ -406,53 +404,52 @@ djangorestframework-xml==2.0.0 dnspython==2.8.0 # via pymongo done-xblock==3.0.0 - # via -r requirements/edx/bundled.in + # via openedx-platform drf-jwt==1.19.2 # via edx-drf-extensions drf-spectacular==0.29.0 - # via -r requirements/edx/kernel.in + # via openedx-platform drf-yasg==1.21.15 # via # django-user-tasks # edx-api-doc-tools edx-ace==1.15.0 - # via -r requirements/edx/kernel.in + # via openedx-platform edx-api-doc-tools==3.0.0 # via - # -r requirements/edx/kernel.in # openedx-authz + # openedx-platform edx-auth-backends==5.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform edx-bulk-grades==2.0.0 # via - # -r requirements/edx/kernel.in + # openedx-platform # staff-graded-xblock edx-ccx-keys==2.0.2 # via - # -r requirements/edx/kernel.in # lti-consumer-xblock # openedx-authz # openedx-events + # openedx-platform edx-celeryutils==2.0.0 # via - # -r requirements/edx/kernel.in + # openedx-platform # super-csv edx-codejail==4.1.0 # via - # -r requirements/edx/kernel.in + # openedx-platform # xblocks-contrib edx-completion==5.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform edx-django-release-util==1.5.0 # via - # -r requirements/edx/kernel.in # edx-submissions # edxval + # openedx-platform edx-django-sites-extensions==6.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform edx-django-utils==8.0.1 # via - # -r requirements/edx/kernel.in # django-config-models # edx-ace # edx-auth-backends @@ -467,12 +464,12 @@ edx-django-utils==8.0.1 # event-tracking # openedx-authz # openedx-events + # openedx-platform # ora2 # super-csv # xblocks-contrib edx-drf-extensions==10.6.0 # via - # -r requirements/edx/kernel.in # edx-completion # edx-enterprise # edx-organizations @@ -483,23 +480,21 @@ edx-drf-extensions==10.6.0 # enterprise-integrated-channels # openedx-authz # openedx-core + # openedx-platform edx-enterprise==8.3.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/kernel.in + # via openedx-platform edx-event-bus-kafka==6.1.0 - # via -r requirements/edx/kernel.in + # via openedx-platform edx-event-bus-redis==1.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform edx-i18n-tools==2.0.0 # via - # -r requirements/edx/bundled.in + # openedx-platform # ora2 edx-milestones==2.0.0 - # via -r requirements/edx/kernel.in -edx-opaque-keys[django]==4.0.0 + # via openedx-platform +edx-opaque-keys==4.0.0 # via - # -r requirements/edx/kernel.in # edx-bulk-grades # edx-ccx-keys # edx-completion @@ -514,42 +509,42 @@ edx-opaque-keys[django]==4.0.0 # openedx-authz # openedx-events # openedx-filters + # openedx-platform # ora2 # xblock # xblocks-contrib edx-organizations==8.0.0 # via - # -r requirements/edx/kernel.in # openedx-authz # openedx-core + # openedx-platform edx-proctoring==5.2.0 - # via -r requirements/edx/kernel.in + # via openedx-platform edx-rbac==3.0.0 # via # edx-enterprise # enterprise-integrated-channels edx-rest-api-client==7.0.0 # via - # -r requirements/edx/kernel.in # edx-enterprise # edx-proctoring # enterprise-integrated-channels -edx-search==5.0.1 + # openedx-platform +edx-search==5.0.2 # via - # -r requirements/edx/kernel.in # openedx-forum -edx-sga==0.28.0 - # via -r requirements/edx/bundled.in + # openedx-platform +edx-sga==0.29.0 + # via openedx-platform edx-submissions==4.0.0 # via - # -r requirements/edx/kernel.in + # openedx-platform # ora2 # xblocks-contrib edx-tincan-py35==2.0.0 # via enterprise-integrated-channels edx-toggles==6.0.0 # via - # -r requirements/edx/kernel.in # edx-auth-backends # edx-completion # edx-enterprise @@ -558,20 +553,19 @@ edx-toggles==6.0.0 # edx-search # edxval # event-tracking + # openedx-platform # ora2 # xblocks-contrib edx-when==4.0.0 # via - # -r requirements/edx/kernel.in # edx-proctoring -edxval==4.0.1 + # openedx-platform +edxval==5.0.1 # via - # -r requirements/edx/kernel.in + # openedx-platform # xblocks-contrib elasticsearch==7.9.1 # via - # -c requirements/common_constraints.txt - # -c requirements/constraints.txt # edx-search # openedx-forum encutils==1.0.0 @@ -579,15 +573,15 @@ encutils==1.0.0 enmerkar==0.7.1 # via enmerkar-underscore enmerkar-underscore==2.4.0 - # via -r requirements/edx/kernel.in -enterprise-integrated-channels==0.1.60 - # via -r requirements/edx/bundled.in + # via openedx-platform +enterprise-integrated-channels==0.1.61 + # via openedx-platform event-tracking==4.0.2 # via - # -r requirements/edx/kernel.in # edx-completion # edx-proctoring # edx-search + # openedx-platform fastavro==1.12.2 # via openedx-events filelock==3.29.4 @@ -600,26 +594,26 @@ frozenlist==1.8.0 # aiosignal fs==2.4.16 # via - # -r requirements/edx/kernel.in # fs-s3fs # openedx-django-pyfs + # openedx-platform # xblock # xblocks-contrib fs-s3fs==1.1.1 # via - # -r requirements/edx/kernel.in # openedx-django-pyfs + # openedx-platform geoip2==5.2.0 - # via -r requirements/edx/kernel.in + # via openedx-platform glob2==0.7 - # via -r requirements/edx/kernel.in -google-api-core[grpc]==2.31.0 + # via openedx-platform +google-api-core==2.31.0 # via # firebase-admin # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-auth==2.55.0 +google-auth==2.55.1 # via # google-api-core # google-cloud-core @@ -629,7 +623,7 @@ google-cloud-core==2.6.0 # via # google-cloud-firestore # google-cloud-storage -google-cloud-firestore==2.27.0 +google-cloud-firestore==2.28.0 ; platform_python_implementation != 'PyPy' # via firebase-admin google-cloud-storage==3.12.0 # via firebase-admin @@ -651,30 +645,30 @@ grpcio==1.81.1 grpcio-status==1.81.1 # via google-api-core gunicorn==26.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform h11==0.16.0 # via httpcore h2==4.3.0 # via httpx help-tokens==4.0.0 - # via -r requirements/edx/kernel.in -hpack==4.1.0 + # via openedx-platform +hpack==4.2.0 # via h2 html5lib==1.1 # via - # -r requirements/edx/kernel.in + # openedx-platform # ora2 # xblocks-contrib httpcore==1.0.9 # via httpx -httpx[http2]==0.28.1 +httpx==0.28.1 # via # firebase-admin # typesense hyperframe==6.1.0 # via h2 -icalendar==7.1.3 - # via -r requirements/edx/kernel.in +icalendar==7.2.0 + # via openedx-platform idna==3.18 # via # anyio @@ -683,8 +677,8 @@ idna==3.18 # requests # snowflake-connector-python # yarl -importlib-metadata==9.0.0 - # via -r requirements/edx/kernel.in +importlib-metadata==8.7.1 + # via openedx-platform inflection==0.5.1 # via # drf-spectacular @@ -692,7 +686,7 @@ inflection==0.5.1 invoke==3.0.3 # via paramiko ipaddress==1.0.23 - # via -r requirements/edx/kernel.in + # via openedx-platform isodate==0.7.2 # via python3-saml jinja2==3.1.6 @@ -707,40 +701,40 @@ jsondiff==2.2.1 # via edx-enterprise jsonfield==3.2.0 # via - # -r requirements/edx/kernel.in # edx-celeryutils # edx-enterprise # edx-proctoring # edx-submissions # enterprise-integrated-channels # lti-consumer-xblock + # openedx-platform # ora2 -jsonschema==4.26.0 +jsonschema==4.25.1 # via # drf-spectacular # optimizely-sdk jsonschema-specifications==2025.9.1 # via jsonschema -jwcrypto==1.5.7 +jwcrypto==1.5.8 # via # django-oauth-toolkit # pylti1p3 kombu==5.6.2 # via celery laboratory==1.0.2 - # via -r requirements/edx/kernel.in + # via openedx-platform lazy==1.6 # via # acid-xblock # lti-consumer-xblock # ora2 # xblock +legacy-cgi==2.6.4 ; python_full_version >= '3.13' + # via webob lti-consumer-xblock==11.3.1 - # via -r requirements/edx/kernel.in -lxml[html-clean]==5.3.2 + # via openedx-platform +lxml==5.3.2 # via - # -c requirements/constraints.txt - # -r requirements/edx/kernel.in # edx-enterprise # edx-i18n-tools # edxval @@ -748,6 +742,7 @@ lxml[html-clean]==5.3.2 # lxml-html-clean # olxcleaner # openedx-calc + # openedx-platform # ora2 # python3-saml # xblock @@ -756,18 +751,17 @@ lxml[html-clean]==5.3.2 lxml-html-clean==0.4.4 # via lxml mailsnake==1.6.4 - # via -r requirements/edx/bundled.in + # via openedx-platform mako==1.3.12 # via - # -r requirements/edx/kernel.in # acid-xblock # lti-consumer-xblock + # openedx-platform # xblock - # xblock-utils markdown==3.10.2 # via - # -r requirements/edx/kernel.in # openedx-django-wiki + # openedx-platform # staff-graded-xblock # xblock-poll markupsafe==3.0.3 @@ -780,19 +774,19 @@ markupsafe==3.0.3 # xblocks-contrib maxminddb==3.1.1 # via geoip2 -meilisearch==0.41.0 +meilisearch==0.42.0 # via - # -r requirements/edx/kernel.in # edx-search + # openedx-platform mongoengine==0.29.3 - # via -r requirements/edx/kernel.in + # via openedx-platform monotonic==1.6 # via analytics-python more-itertools==11.1.0 # via cssutils mpmath==1.3.0 # via sympy -msgpack==1.2.0 +msgpack==1.2.1 # via cachecontrol multidict==6.7.1 # via @@ -800,19 +794,18 @@ multidict==6.7.1 # yarl mysqlclient==2.2.8 # via - # -r requirements/edx/kernel.in # openedx-forum -nh3==0.3.5 + # openedx-platform +nh3==0.3.6 # via - # -r requirements/edx/kernel.in + # openedx-platform # xblocks-contrib nltk==3.9.4 # via chem nodeenv==1.10.0 - # via -r requirements/edx/kernel.in + # via openedx-platform numpy==1.26.4 # via - # -c requirements/constraints.txt # chem # openedx-calc # scipy @@ -820,40 +813,37 @@ numpy==1.26.4 # xblocks-contrib oauthlib==3.3.1 # via - # -r requirements/edx/kernel.in # django-oauth-toolkit # lti-consumer-xblock + # openedx-platform # requests-oauthlib # social-auth-core # xblocks-contrib olxcleaner==0.3.0 - # via -r requirements/edx/kernel.in + # via openedx-platform openedx-atlas==0.7.0 # via - # -r requirements/edx/kernel.in # edx-enterprise # enterprise-integrated-channels # openedx-authz # openedx-forum -openedx-authz==1.19.0 - # via -r requirements/edx/kernel.in + # openedx-platform +openedx-authz==1.20.0 + # via openedx-platform openedx-calc==5.0.0 # via - # -r requirements/edx/kernel.in + # openedx-platform # xblocks-contrib openedx-core==1.1.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/kernel.in + # via openedx-platform openedx-django-pyfs==4.0.0 # via xblock openedx-django-require==3.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform openedx-django-wiki==3.1.2 - # via -r requirements/edx/kernel.in + # via openedx-platform openedx-events==11.2.0 # via - # -r requirements/edx/kernel.in # edx-enterprise # edx-event-bus-kafka # edx-event-bus-redis @@ -861,19 +851,20 @@ openedx-events==11.2.0 # lti-consumer-xblock # openedx-authz # openedx-core + # openedx-platform # ora2 -openedx-filters==3.5.0 +openedx-filters==3.7.0 # via - # -r requirements/edx/kernel.in # edx-enterprise # lti-consumer-xblock + # openedx-platform # ora2 openedx-forum==0.4.3 - # via -r requirements/edx/kernel.in + # via openedx-platform optimizely-sdk==5.5.0 - # via -r requirements/edx/bundled.in + # via openedx-platform ora2==7.1.0 - # via -r requirements/edx/bundled.in + # via openedx-platform packaging==26.2 # via # drf-yasg @@ -885,9 +876,8 @@ paramiko==5.0.0 # via edx-enterprise path==16.11.0 # via - # -c requirements/constraints.txt - # -r requirements/edx/kernel.in # edx-i18n-tools + # openedx-platform # path-py # xblocks-contrib path-py==12.5.0 @@ -898,13 +888,13 @@ path-py==12.5.0 pgpy==0.6.0 # via edx-enterprise piexif==1.1.3 - # via -r requirements/edx/kernel.in + # via openedx-platform pillow==12.2.0 # via - # -r requirements/edx/kernel.in # edx-enterprise # edx-organizations # edxval + # openedx-platform platformdirs==4.10.0 # via snowflake-connector-python polib==1.2.0 @@ -919,7 +909,7 @@ proto-plus==1.28.0 # via # google-api-core # google-cloud-firestore -protobuf==7.35.1 +protobuf==6.33.6 # via # google-api-core # google-cloud-firestore @@ -928,36 +918,35 @@ protobuf==7.35.1 # proto-plus psutil==7.2.2 # via - # -r requirements/edx/kernel.in # edx-django-utils + # openedx-platform psycopg2-binary==2.9.12 - # via -r requirements/edx/kernel.in + # via openedx-platform pyasn1==0.6.3 # via # pgpy # pyasn1-modules pyasn1-modules==0.4.2 # via google-auth -pycasbin==2.8.0 +pycasbin==2.2.0 # via # casbin-django-orm-adapter # openedx-authz pycountry==26.2.16 - # via -r requirements/edx/kernel.in -pycparser==3.0 + # via openedx-platform +pycparser==3.0 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy' # via cffi pycryptodomex==3.23.0 # via - # -r requirements/edx/kernel.in # edx-proctoring # lti-consumer-xblock + # openedx-platform pydantic==2.13.4 # via camel-converter pydantic-core==2.46.4 # via pydantic -pyjwt[crypto]==2.13.0 +pyjwt==2.13.0 # via - # -r requirements/edx/kernel.in # drf-jwt # edx-auth-backends # edx-drf-extensions @@ -965,29 +954,29 @@ pyjwt[crypto]==2.13.0 # edx-rest-api-client # firebase-admin # lti-consumer-xblock + # openedx-platform # pylti1p3 # snowflake-connector-python # social-auth-core pylatexenc==2.10 # via olxcleaner pylti1p3==2.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform pymemcache==4.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform pymongo==4.4.0 # via - # -c requirements/constraints.txt - # -r requirements/edx/kernel.in # edx-opaque-keys # event-tracking # mongoengine # openedx-forum + # openedx-platform pynacl==1.6.2 # via # edx-django-utils # paramiko pynliner==0.8.0 - # via -r requirements/edx/kernel.in + # via openedx-platform pyopenssl==26.3.0 # via snowflake-connector-python pyparsing==3.3.2 @@ -999,11 +988,10 @@ pyrsistent==0.20.0 # via optimizely-sdk pysrt==1.1.2 # via - # -r requirements/edx/kernel.in # edxval + # openedx-platform python-dateutil==2.9.0.post0 # via - # -r requirements/edx/kernel.in # analytics-python # botocore # celery @@ -1012,6 +1000,7 @@ python-dateutil==2.9.0.post0 # edx-proctoring # icalendar # olxcleaner + # openedx-platform # ora2 # xblock python-ipware==3.0.0 @@ -1020,17 +1009,16 @@ python-slugify==8.0.4 # via code-annotations python-swiftclient==4.10.0 # via ora2 -python3-openid==3.2.0 ; python_version >= "3" +python3-openid==3.2.0 # via - # -r requirements/edx/kernel.in + # openedx-platform # social-auth-core python3-saml==1.16.0 # via - # -r requirements/edx/kernel.in # edx-enterprise + # openedx-platform pytz==2026.2 # via - # -r requirements/edx/kernel.in # drf-yasg # edx-completion # edx-enterprise @@ -1040,38 +1028,39 @@ pytz==2026.2 # enterprise-integrated-channels # event-tracking # olxcleaner + # openedx-platform # ora2 # snowflake-connector-python # tincan # xblock # xblocks-contrib pyuca==1.2 - # via -r requirements/edx/kernel.in + # via openedx-platform pyyaml==6.0.3 # via - # -r requirements/edx/kernel.in # code-annotations # drf-spectacular # drf-yasg # edx-django-release-util # edx-i18n-tools # jsondiff + # openedx-platform # xblock random2==1.0.2 # via - # -r requirements/edx/kernel.in + # openedx-platform # xblocks-contrib recommender-xblock==5.0.0 - # via -r requirements/edx/bundled.in -redis==8.0.0 + # via openedx-platform +redis==8.0.1 # via - # -r requirements/edx/kernel.in + # openedx-platform # walrus referencing==0.37.0 # via # jsonschema # jsonschema-specifications -regex==2026.5.9 +regex==2026.6.28 # via nltk requests==2.34.2 # via @@ -1101,19 +1090,19 @@ requests==2.34.2 # xblocks-contrib requests-oauthlib==2.0.0 # via - # -r requirements/edx/kernel.in + # openedx-platform # social-auth-core -rpds-py==2026.5.1 +rpds-py==2026.6.3 # via # jsonschema # referencing rules==3.5 # via - # -r requirements/edx/kernel.in # edx-enterprise # edx-proctoring # openedx-core -s3transfer==0.18.0 + # openedx-platform +s3transfer==0.19.0 # via boto3 sailthru-client==2.2.3 # via edx-ace @@ -1121,23 +1110,32 @@ scipy==1.17.1 # via chem semantic-version==2.10.0 # via edx-drf-extensions +setuptools==81.0.0 + # via + # django-pipeline + # edx-api-doc-tools + # edx-completion + # edx-milestones + # edx-organizations + # edx-rbac + # fs + # openedx-events + # openedx-filters shapely==2.1.2 # via - # -r requirements/edx/kernel.in + # openedx-platform # xblocks-contrib simpleeval==1.0.7 # via pycasbin simplejson==4.1.1 # via - # -r requirements/edx/kernel.in + # openedx-platform # sailthru-client # super-csv # xblock - # xblock-utils # xblocks-contrib six==1.17.0 # via - # -r requirements/edx/kernel.in # analytics-python # crowdsourcehinter-xblock # edx-ace @@ -1151,53 +1149,53 @@ six==1.17.0 # fs # fs-s3fs # html5lib + # openedx-platform # python-dateutil slumber==0.7.1 # via - # -r requirements/edx/kernel.in # edx-bulk-grades # edx-enterprise # enterprise-integrated-channels + # openedx-platform snowflake-connector-python==4.6.0 # via enterprise-integrated-channels social-auth-app-django==5.4.1 # via - # -c requirements/constraints.txt - # -r requirements/edx/kernel.in # edx-auth-backends # edx-enterprise -social-auth-core==4.9.1 + # openedx-platform +social-auth-core==5.0.2 # via - # -r requirements/edx/kernel.in # edx-auth-backends + # openedx-platform # social-auth-app-django sorl-thumbnail==13.0.0 # via - # -r requirements/edx/kernel.in # openedx-django-wiki + # openedx-platform sortedcontainers==2.4.0 # via - # -r requirements/edx/kernel.in + # openedx-platform # snowflake-connector-python soupsieve==2.8.4 # via beautifulsoup4 sqlparse==0.5.5 # via django staff-graded-xblock==4.0.1 - # via -r requirements/edx/bundled.in + # via openedx-platform stevedore==5.8.0 # via - # -r requirements/edx/kernel.in # code-annotations # edx-ace # edx-django-utils # edx-enterprise # edx-opaque-keys + # openedx-platform super-csv==5.0.0 # via edx-bulk-grades sympy==1.14.0 # via openedx-calc -testfixtures==12.1.0 +testfixtures==12.2.0 # via edx-enterprise text-unidecode==1.3 # via python-slugify @@ -1209,7 +1207,7 @@ tomlkit==0.15.0 # via # openedx-core # snowflake-connector-python -tqdm==4.68.2 +tqdm==4.68.3 # via nltk typesense==2.0.0 # via @@ -1239,17 +1237,19 @@ typing-inspection==0.4.2 # via pydantic tzdata==2026.2 # via + # django # icalendar # kombu -tzlocal==5.4 + # tzlocal +tzlocal==5.4.4 # via celery unicodecsv==0.14.1 # via - # -r requirements/edx/kernel.in # edx-enterprise # enterprise-integrated-channels + # openedx-platform unicodeit==0.7.5 - # via -r requirements/edx/kernel.in + # via openedx-platform uritemplate==4.2.0 # via # drf-spectacular @@ -1268,15 +1268,10 @@ voluptuous==0.16.0 # via ora2 walrus==0.9.8 # via edx-event-bus-redis -wcmatch==10.1 - # via pycasbin -wcwidth==0.8.1 +wcwidth==0.8.2 # via prompt-toolkit web-fragments==4.0.0 - # via - # -r requirements/edx/kernel.in - # edx-sga - # xblock-utils + # via openedx-platform webencodings==0.5.1 # via # bleach @@ -1284,18 +1279,17 @@ webencodings==0.5.1 # tinycss2 webob==1.8.10 # via - # -r requirements/edx/kernel.in + # openedx-platform # xblock # xblocks-contrib wheel==0.47.0 # via django-pipeline -wrapt==2.2.1 +wrapt==1.17.3 # via - # -r requirements/edx/kernel.in + # openedx-platform # xblocks-contrib -xblock[django]==6.3.0 +xblock==6.3.0 # via - # -r requirements/edx/kernel.in # acid-xblock # crowdsourcehinter-xblock # done-xblock @@ -1303,34 +1297,26 @@ xblock[django]==6.3.0 # edx-sga # edx-when # lti-consumer-xblock + # openedx-platform # ora2 # staff-graded-xblock # xblock-drag-and-drop-v2 # xblock-google-drive - # xblock-utils + # xblock-poll # xblocks-contrib xblock-drag-and-drop-v2==5.0.6 - # via -r requirements/edx/bundled.in + # via openedx-platform xblock-google-drive==0.8.2 - # via -r requirements/edx/bundled.in -xblock-poll==1.15.1 - # via -r requirements/edx/bundled.in -xblock-utils==4.0.0 - # via - # edx-sga - # xblock-poll + # via openedx-platform +xblock-poll==1.16.1 + # via openedx-platform xblocks-contrib==0.17.0 - # via -r requirements/edx/bundled.in + # via openedx-platform xmlsec==1.3.14 - # via - # -c requirements/constraints.txt - # python3-saml + # via python3-saml xss-utils==1.0.0 - # via -r requirements/edx/kernel.in + # via openedx-platform yarl==1.24.2 # via aiohttp zipp==4.1.0 # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/edx/bundled.in b/requirements/edx/bundled.in deleted file mode 100644 index 426dc5de3f94..000000000000 --- a/requirements/edx/bundled.in +++ /dev/null @@ -1,46 +0,0 @@ -######################################################################################################################## -# Dependencies that are normally "bundled" with the platform, but are not core to the platform's functionality. -# They may still be installed by default, but they should not be required for -# the platform to run nor for the test suite to pass. -# -# We are working to make the test suite run without having these installed - see -# https://discuss.openedx.org/t/a-minimal-open-edx-distribution/9478 -# -# Please follow these guidelines whenever you change this file: -# -# 1. When adding a new dependency: -# * verify that the dependency has a license compatible with AGPLv3 -# * add a comment to the end of the line explaining what it is. -# * confirm that it has no system requirements beyond what we already install -# * run "make upgrade" to update the detailed requirements files -# 2. Do not pin exact versions unless absolutely necessary. When upgrading -# an already-pinned package to its latest release, remove the version pin. -# 3. Do not add indirect dependencies unless a version constraint is needed to -# avoid versions which have known problems. -# 4. If the package is not needed in production, add it to another file such -# as development.in or testing.in instead. - -# i18n_tool is needed at build time for pulling translations -edx-i18n-tools>=0.4.6 # Commands for developers and translators to extract, compile and validate translations - -## Third party integrations -django-ses # Django email backend for Amazon’s Simple Email Service -mailsnake # MailChimp API; used for two management commands in the "mailing" djangoapp -optimizely-sdk # Optimizely provides A/B testing and other features, used by edx.org - - -## XBLOCKS -crowdsourcehinter-xblock -done-xblock # a very simple XBlock that allows learners to mark an activity as Done -recommender-xblock # https://github.com/edx/RecommenderXBlock -staff-graded-xblock # https://github.com/openedx/staff_graded-xblock Allows off-site bulk scoring. -edx-sga # The more well known "staff graded assignment" XBlock, from MIT. -ora2>=4.5.0 # Open Response Assessment XBlock -xblock-poll # Xblock for polling users -xblock-drag-and-drop-v2 # Drag and Drop XBlock -xblock-google-drive # XBlock for google docs and calendar -xblocks-contrib # Package having multiple core XBlocks, https://github.com/openedx/xblocks-contrib?tab=readme-ov-file#xblocks-being-moved-here - - -## Integrated Channels -enterprise-integrated-channels # Integrated Channels to transmit content metadata and learner data. diff --git a/requirements/edx/coverage.in b/requirements/edx/coverage.in deleted file mode 100644 index e52a152f87e9..000000000000 --- a/requirements/edx/coverage.in +++ /dev/null @@ -1,16 +0,0 @@ -# Dependencies that are used solely for calculating test coverage. -# These are split out so that if you are only calculating coverage -# then you don't need to install all the rest of the prereqs. -# -# DON'T JUST ADD NEW DEPENDENCIES!!! -# -# If you open a pull request that adds a new dependency, you should: -# * verify that the dependency has a license compatible with AGPLv3 -# * confirm that it has no system requirements beyond what we already install -# * run "make upgrade" to update the detailed requirements files -# - --c ../constraints.txt - -coverage # Code coverage testing for Python -diff-cover # Automatically find diff lines that need test coverage diff --git a/requirements/edx/coverage.txt b/requirements/edx/coverage.txt deleted file mode 100644 index 5d015e28de97..000000000000 --- a/requirements/edx/coverage.txt +++ /dev/null @@ -1,20 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# make upgrade -# -chardet==7.4.3 - # via diff-cover -coverage==7.14.1 - # via -r requirements/edx/coverage.in -diff-cover==10.3.0 - # via -r requirements/edx/coverage.in -jinja2==3.1.6 - # via diff-cover -markupsafe==3.0.3 - # via jinja2 -pluggy==1.6.0 - # via diff-cover -pygments==2.20.0 - # via diff-cover diff --git a/requirements/edx/development.in b/requirements/edx/development.in deleted file mode 100644 index 972adf9aac49..000000000000 --- a/requirements/edx/development.in +++ /dev/null @@ -1,26 +0,0 @@ -# Dependencies that are used in development environments. -# Please do not use this file for packages that are needed in production or for test runs. -# -# These are installed automatically in devstack, and can also be installed manually using: -# -# pip install -r requirements/edx/development.txt -# -# When adding a new dependency which is imported from edx-platform code as a library, -# update scripts/dependencies/development.txt accordingly. - --c ../constraints.txt - --r ../pip-tools.txt # pip-tools and its dependencies, for managing requirements files --r testing.txt # Dependencies for running the various test suites --r doc.txt # Dependencies for building the documentation locally. --r assets.txt # Allow developers to rebuild assets with `npm run build`. - -click # Used for perf_tests utilities in modulestore -django-debug-toolbar # A set of panels that display debug information about the current request/response -django-stubs[compatible-mypy] # Typing stubs for Django, so it works with mypy -djangorestframework-stubs # Typing stubs for DRF -mypy # static type checking -pywatchman # More efficient checking for runserver reload trigger events -types-requests # Typing stubs for requests -vulture # Detects possible dead/unused code, used in scripts/find-dead-code.sh -watchdog # Used by `npm run watch` to auto-recompile when assets are changed diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index edf3a2623a6c..1240ea1c981e 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -1,90 +1,49 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# make upgrade -# +# GENERATED FILE, DO NOT EDIT DIRECTLY. +# Compatibility export of the 'dev' dependency-group for tools that still +# 'pip install -r requirements/edx/development.txt' directly instead of using uv. +# Source of truth: [dependency-groups].dev in pyproject.toml / uv.lock. +# This file was autogenerated by uv via the following command: +# uv export --frozen --no-hashes --group dev --no-emit-project accessible-pygments==0.0.5 - # via - # -r requirements/edx/doc.txt - # pydata-sphinx-theme + # via pydata-sphinx-theme acid-xblock==0.4.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform aiohappyeyeballs==2.6.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # aiohttp + # via aiohttp aiohttp==3.14.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # geoip2 + # via geoip2 aiosignal==1.4.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # aiohttp + # via aiohttp alabaster==1.0.0 - # via - # -r requirements/edx/doc.txt - # sphinx + # via sphinx amqp==5.3.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # kombu + # via kombu analytics-python==1.4.post1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform aniso8601==10.0.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-tincan-py35 # tincan annotated-types==0.7.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # pydantic -anyio==4.14.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # httpx + # via pydantic +anyio==4.14.1 + # via httpx appdirs==1.4.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # fs + # via fs asgiref==3.11.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django # django-cors-headers # django-countries asn1crypto==1.5.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # snowflake-connector-python + # via snowflake-connector-python astroid==4.0.4 # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # pylint # pylint-celery # sphinx-autoapi attrs==26.1.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # aiohttp # edx-ace # jsonschema @@ -92,102 +51,62 @@ attrs==26.1.0 # openedx-authz # openedx-core # openedx-events + # openedx-platform # referencing babel==2.18.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # enmerkar # enmerkar-underscore + # openedx-platform # pydata-sphinx-theme # sphinx backoff==1.10.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # analytics-python + # via analytics-python bcrypt==5.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # paramiko + # via paramiko beautifulsoup4==4.15.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # openedx-forum # pydata-sphinx-theme # pynliner # xblocks-contrib billiard==4.2.4 + # via celery +bleach==6.4.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # celery -bleach[css]==6.4.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # lti-consumer-xblock # openedx-django-wiki # ora2 # xblock-drag-and-drop-v2 # xblock-poll -boto3==1.43.30 +boto3==1.43.38 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django-ses # fs-s3fs + # openedx-platform # ora2 # snowflake-connector-python -botocore==1.43.30 +botocore==1.43.38 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # boto3 + # openedx-platform # s3transfer # snowflake-connector-python -bracex==2.6 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # wcmatch bridgekeeper==0.9 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -build==1.5.0 - # via - # -r requirements/pip-tools.txt - # pip-tools + # via openedx-platform cachecontrol==0.14.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # firebase-admin + # via firebase-admin cachetools==7.1.4 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edxval # tox -camel-converter[pydantic]==5.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # meilisearch +camel-converter==5.1.0 + # via meilisearch casbin-django-orm-adapter==1.7.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # openedx-authz + # via openedx-authz celery==5.6.3 # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django-celery-results # django-user-tasks # edx-celeryutils @@ -195,10 +114,9 @@ celery==5.6.3 # enterprise-integrated-channels # event-tracking # openedx-core -certifi==2026.5.20 + # openedx-platform +certifi==2026.6.17 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # elasticsearch # httpcore # httpx @@ -206,36 +124,24 @@ certifi==2026.5.20 # snowflake-connector-python cffi==2.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # cryptography # pact-python-ffi # pynacl chardet==7.4.3 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # diff-cover # encutils # pysrt charset-normalizer==3.4.7 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # requests # snowflake-connector-python chem==2.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # xblocks-contrib -click==8.4.1 +click==8.1.8 # via - # -r requirements/edx/assets.txt - # -r requirements/edx/development.in - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # -r requirements/pip-tools.txt # celery # click-didyoumean # click-log @@ -246,57 +152,40 @@ click==8.4.1 # edx-lint # import-linter # nltk - # pip-tools click-didyoumean==0.3.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # celery + # via celery click-log==0.4.0 - # via - # -r requirements/edx/testing.txt - # edx-lint + # via edx-lint click-plugins==1.1.1.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # celery + # via celery click-repl==0.3.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # celery + # via celery code-annotations==3.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # edx-lint # edx-toggles codejail-includes==2.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform colorama==0.4.6 # via - # -r requirements/edx/testing.txt + # click + # pylint + # pytest + # sphinx # tox -coverage[toml]==7.14.1 - # via - # -r requirements/edx/testing.txt - # pytest-cov + # tqdm +coverage==7.14.3 + # via pytest-cov crowdsourcehinter-xblock==1.0.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform cryptography==49.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django-fernet-fields-v2 # edx-enterprise # google-auth # jwcrypto + # openedx-platform # paramiko # pgpy # pyjwt @@ -304,45 +193,27 @@ cryptography==49.0.0 # snowflake-connector-python # social-auth-core cssselect==1.4.0 - # via - # -r requirements/edx/testing.txt - # pyquery + # via pyquery cssutils==2.15.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # pynliner + # via pynliner ddt==1.7.2 - # via -r requirements/edx/testing.txt -deepmerge==2.0 - # via - # -r requirements/edx/doc.txt - # sphinxcontrib-openapi +deepmerge==2.1.0 + # via sphinxcontrib-openapi defusedxml==0.7.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # djangorestframework-xml + # openedx-platform # ora2 # python3-openid # social-auth-core # xblocks-contrib diff-cover==10.3.0 - # via -r requirements/edx/testing.txt dill==0.4.1 - # via - # -r requirements/edx/testing.txt - # pylint + # via pylint distlib==0.4.3 - # via - # -r requirements/edx/testing.txt - # virtualenv + # via virtualenv django==5.2.15 # via - # -c requirements/common_constraints.txt - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # casbin-django-orm-adapter # django-appconf # django-autocomplete-light @@ -412,6 +283,7 @@ django==5.2.15 # openedx-events # openedx-filters # openedx-forum + # openedx-platform # ora2 # social-auth-app-django # super-csv @@ -419,90 +291,58 @@ django==5.2.15 # xblocks-contrib # xss-utils django-appconf==1.2.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # django-statici18n -django-autocomplete-light==4.0.3 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via django-statici18n +django-autocomplete-light==5.0.0 + # via openedx-platform django-cache-memoize==0.2.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-enterprise + # via edx-enterprise django-celery-results==2.6.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform django-classy-tags==4.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # django-sekizai + # via django-sekizai django-config-models==3.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # enterprise-integrated-channels # lti-consumer-xblock + # openedx-platform django-cors-headers==4.9.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform django-countries==9.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise + # openedx-platform django-crum==0.7.9 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-django-utils # edx-enterprise # edx-proctoring # edx-rbac # edx-toggles # openedx-authz + # openedx-platform # super-csv django-debug-toolbar==5.2.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/development.in django-fernet-fields-v2==0.9 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # enterprise-integrated-channels django-filter==25.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # lti-consumer-xblock + # openedx-platform django-ipware==7.0.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # edx-proctoring + # openedx-platform django-js-asset==4.0.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # django-mptt + # via django-mptt django-method-override==1.0.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform django-model-utils==5.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django-user-tasks # edx-bulk-grades # edx-celeryutils @@ -516,108 +356,77 @@ django-model-utils==5.0.0 # edx-when # edxval # enterprise-integrated-channels + # openedx-platform # ora2 # super-csv django-mptt==0.18.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # openedx-django-wiki + # openedx-platform django-multi-email-field==0.8.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-enterprise + # via edx-enterprise django-mysql==4.19.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform django-oauth-toolkit==1.7.1 # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # enterprise-integrated-channels + # openedx-platform django-object-actions==5.1.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # enterprise-integrated-channels django-pipeline==4.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform django-push-notifications==3.3.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-ace + # via edx-ace django-ratelimit==4.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform django-sekizai==4.1.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # openedx-django-wiki + # openedx-platform django-ses==4.7.2 + # via openedx-platform +django-simple-history==3.12.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -django-simple-history==3.11.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # edx-organizations # edx-proctoring # enterprise-integrated-channels + # openedx-platform # ora2 django-statici18n==2.7.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # lti-consumer-xblock + # openedx-platform # xblock-drag-and-drop-v2 # xblock-poll django-storages==1.14.6 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edxval -django-stubs[compatible-mypy]==5.2.9 - # via - # -c requirements/constraints.txt - # -r requirements/edx/development.in - # djangorestframework-stubs -django-stubs-ext==6.0.5 + # openedx-platform +django-stubs==5.2.9 + # via djangorestframework-stubs +django-stubs-ext==6.0.6 # via django-stubs django-user-tasks==4.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform django-waffle==5.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-django-utils # edx-drf-extensions # edx-enterprise # edx-proctoring # edx-toggles # openedx-authz + # openedx-platform django-webpack-loader==3.2.4 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-proctoring + # openedx-platform djangorestframework==3.17.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django-config-models # django-user-tasks # drf-jwt @@ -633,98 +442,66 @@ djangorestframework==3.17.1 # openedx-authz # openedx-core # openedx-forum + # openedx-platform # ora2 # super-csv djangorestframework-stubs==3.16.9 - # via -r requirements/edx/development.in djangorestframework-xml==2.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-enterprise + # via edx-enterprise dnspython==2.8.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # pymongo + # via pymongo docutils==0.22.4 # via - # -r requirements/edx/doc.txt # pydata-sphinx-theme # sphinx # sphinx-mdinclude done-xblock==3.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform drf-jwt==1.19.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-drf-extensions + # via edx-drf-extensions drf-spectacular==0.29.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform drf-yasg==1.21.15 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django-user-tasks # edx-api-doc-tools edx-ace==1.15.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform edx-api-doc-tools==3.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # openedx-authz + # openedx-platform edx-auth-backends==5.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform edx-bulk-grades==2.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # staff-graded-xblock edx-ccx-keys==2.0.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # lti-consumer-xblock # openedx-authz # openedx-events + # openedx-platform edx-celeryutils==2.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # super-csv edx-codejail==4.1.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # xblocks-contrib edx-completion==5.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform edx-django-release-util==1.5.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-submissions # edxval + # openedx-platform edx-django-sites-extensions==6.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform edx-django-utils==8.0.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django-config-models # edx-ace # edx-auth-backends @@ -739,13 +516,12 @@ edx-django-utils==8.0.1 # event-tracking # openedx-authz # openedx-events + # openedx-platform # ora2 # super-csv # xblocks-contrib edx-drf-extensions==10.6.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-completion # edx-enterprise # edx-organizations @@ -756,34 +532,22 @@ edx-drf-extensions==10.6.0 # enterprise-integrated-channels # openedx-authz # openedx-core + # openedx-platform edx-enterprise==8.3.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform edx-event-bus-kafka==6.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform edx-event-bus-redis==1.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform edx-i18n-tools==2.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # ora2 edx-lint==6.1.0 - # via -r requirements/edx/testing.txt edx-milestones==2.0.0 + # via openedx-platform +edx-opaque-keys==4.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -edx-opaque-keys[django]==4.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-bulk-grades # edx-ccx-keys # edx-completion @@ -798,56 +562,42 @@ edx-opaque-keys[django]==4.0.0 # openedx-authz # openedx-events # openedx-filters + # openedx-platform # ora2 # xblock # xblocks-contrib edx-organizations==8.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # openedx-authz # openedx-core + # openedx-platform edx-proctoring==5.2.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform edx-rbac==3.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # enterprise-integrated-channels edx-rest-api-client==7.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # edx-proctoring # enterprise-integrated-channels -edx-search==5.0.1 + # openedx-platform +edx-search==5.0.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # openedx-forum -edx-sga==0.28.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform +edx-sga==0.29.0 + # via openedx-platform edx-submissions==4.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # ora2 # xblocks-contrib edx-tincan-py35==2.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # enterprise-integrated-channels + # via enterprise-integrated-channels edx-toggles==6.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-auth-backends # edx-completion # edx-enterprise @@ -856,234 +606,140 @@ edx-toggles==6.0.0 # edx-search # edxval # event-tracking + # openedx-platform # ora2 # xblocks-contrib edx-when==4.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-proctoring -edxval==4.0.1 + # openedx-platform +edxval==5.0.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # xblocks-contrib elasticsearch==7.9.1 # via - # -c requirements/common_constraints.txt - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-search # openedx-forum encutils==1.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # cssutils + # via cssutils enmerkar==0.7.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # enmerkar-underscore + # via enmerkar-underscore enmerkar-underscore==2.4.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -enterprise-integrated-channels==0.1.60 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform +enterprise-integrated-channels==0.1.61 + # via openedx-platform event-tracking==4.0.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-completion # edx-proctoring # edx-search + # openedx-platform execnet==2.1.2 - # via - # -r requirements/edx/testing.txt - # pytest-xdist + # via pytest-xdist factory-boy==3.3.3 - # via -r requirements/edx/testing.txt -faker==40.23.0 - # via - # -r requirements/edx/testing.txt - # factory-boy +faker==40.27.0 + # via factory-boy fastavro==1.12.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # openedx-events + # via openedx-events filelock==3.29.4 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # python-discovery # snowflake-connector-python # tox # virtualenv firebase-admin==7.4.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-ace + # via edx-ace freezegun==1.5.5 - # via -r requirements/edx/testing.txt frozenlist==1.8.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # aiohttp # aiosignal fs==2.4.16 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # fs-s3fs # openedx-django-pyfs + # openedx-platform # xblock # xblocks-contrib fs-s3fs==1.1.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # openedx-django-pyfs + # openedx-platform geoip2==5.2.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform gitdb==4.0.12 - # via - # -r requirements/edx/doc.txt - # gitpython + # via gitpython gitpython==3.1.50 - # via -r requirements/edx/doc.txt glob2==0.7 + # via openedx-platform +google-api-core==2.31.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -google-api-core[grpc]==2.31.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # firebase-admin # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-auth==2.55.0 +google-auth==2.55.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # google-api-core # google-cloud-core # google-cloud-firestore # google-cloud-storage google-cloud-core==2.6.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # google-cloud-firestore # google-cloud-storage -google-cloud-firestore==2.27.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # firebase-admin +google-cloud-firestore==2.28.0 ; platform_python_implementation != 'PyPy' + # via firebase-admin google-cloud-storage==3.12.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # firebase-admin + # via firebase-admin google-crc32c==1.8.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # google-cloud-storage # google-resumable-media google-resumable-media==2.10.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # google-cloud-storage + # via google-cloud-storage googleapis-common-protos==1.75.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # google-api-core # grpcio-status grimp==3.14 - # via - # -r requirements/edx/testing.txt - # import-linter + # via import-linter grpcio==1.81.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # google-api-core # google-cloud-firestore # grpcio-status grpcio-status==1.81.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # google-api-core + # via google-api-core gunicorn==26.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform h11==0.16.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # httpcore + # via httpcore h2==4.3.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # httpx + # via httpx help-tokens==4.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -hpack==4.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # h2 + # via openedx-platform +hpack==4.2.0 + # via h2 html5lib==1.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # ora2 # xblocks-contrib httpcore==1.0.9 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # httpx + # via httpx httpretty==1.1.4 - # via -r requirements/edx/testing.txt -httpx[http2]==0.28.1 +httpx==0.28.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # firebase-admin # typesense hyperframe==6.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # h2 -icalendar==7.1.3 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via h2 +icalendar==7.2.0 + # via openedx-platform idna==3.18 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # anyio # httpx # optimizely-sdk @@ -1091,128 +747,78 @@ idna==3.18 # snowflake-connector-python # yarl imagesize==2.0.0 - # via - # -r requirements/edx/doc.txt - # sphinx -import-linter==2.11 - # via -r requirements/edx/testing.txt -importlib-metadata==9.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via sphinx +import-linter==2.12 +importlib-metadata==8.7.1 + # via openedx-platform inflection==0.5.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # drf-spectacular # drf-yasg iniconfig==2.3.0 - # via - # -r requirements/edx/testing.txt - # pytest + # via pytest invoke==3.0.3 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # paramiko + # via paramiko ipaddress==1.0.23 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform isodate==0.7.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # python3-saml + # via python3-saml isort==8.0.1 - # via - # -r requirements/edx/testing.txt - # pylint + # via pylint jinja2==3.1.6 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # code-annotations # diff-cover # sphinx # sphinx-autoapi jmespath==1.1.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # boto3 # botocore joblib==1.5.3 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # nltk + # via nltk jsondiff==2.2.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-enterprise + # via edx-enterprise jsonfield==3.2.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-celeryutils # edx-enterprise # edx-proctoring # edx-submissions # enterprise-integrated-channels # lti-consumer-xblock + # openedx-platform # ora2 -jsonschema==4.26.0 +jsonschema==4.25.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # drf-spectacular # optimizely-sdk # sphinxcontrib-openapi jsonschema-specifications==2025.9.1 + # via jsonschema +jwcrypto==1.5.8 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # jsonschema -jwcrypto==1.5.7 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django-oauth-toolkit # pylti1p3 kombu==5.6.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # celery + # via celery laboratory==1.0.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform lazy==1.6 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # acid-xblock # lti-consumer-xblock # ora2 # xblock -librt==0.11.0 +legacy-cgi==2.6.4 ; python_full_version >= '3.13' + # via webob +librt==0.12.0 ; platform_python_implementation != 'PyPy' # via mypy libsass==0.10.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/assets.txt lti-consumer-xblock==11.3.1 + # via openedx-platform +lxml==5.3.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -lxml[html-clean]==5.3.2 - # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # edx-i18n-tools # edxval @@ -1220,6 +826,7 @@ lxml[html-clean]==5.3.2 # lxml-html-clean # olxcleaner # openedx-calc + # openedx-platform # ora2 # pyquery # python3-saml @@ -1227,37 +834,25 @@ lxml[html-clean]==5.3.2 # xblocks-contrib # xmlsec lxml-html-clean==0.4.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # lxml + # via lxml mailsnake==1.6.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform mako==1.3.12 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # acid-xblock # lti-consumer-xblock + # openedx-platform # xblock - # xblock-utils markdown==3.10.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # openedx-django-wiki + # openedx-platform # staff-graded-xblock # xblock-poll markdown-it-py==4.2.0 - # via - # -r requirements/edx/testing.txt - # rich + # via rich markupsafe==3.0.3 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # chem # jinja2 # mako @@ -1265,90 +860,50 @@ markupsafe==3.0.3 # xblock # xblocks-contrib maxminddb==3.1.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # geoip2 + # via geoip2 mccabe==0.7.0 - # via - # -r requirements/edx/testing.txt - # pylint + # via pylint mdurl==0.1.2 + # via markdown-it-py +meilisearch==0.42.0 # via - # -r requirements/edx/testing.txt - # markdown-it-py -meilisearch==0.41.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-search -mistune==3.2.1 - # via - # -r requirements/edx/doc.txt - # sphinx-mdinclude + # openedx-platform +mistune==3.3.2 + # via sphinx-mdinclude mock==5.2.0 - # via -r requirements/edx/testing.txt mongoengine==0.29.3 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform monotonic==1.6 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # analytics-python + # via analytics-python more-itertools==11.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # cssutils + # via cssutils mpmath==1.3.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # sympy -msgpack==1.2.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # cachecontrol + # via sympy +msgpack==1.2.1 + # via cachecontrol multidict==6.7.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # aiohttp # yarl mypy==1.19.1 - # via - # -r requirements/edx/development.in - # django-stubs + # via django-stubs mypy-extensions==1.1.0 # via mypy mysqlclient==2.2.8 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # openedx-forum -nh3==0.3.5 + # openedx-platform +nh3==0.3.6 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # xblocks-contrib nltk==3.9.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # chem + # via chem nodeenv==1.10.0 - # via - # -r requirements/edx/assets.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform numpy==1.26.4 # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # chem # openedx-calc # scipy @@ -1356,56 +911,37 @@ numpy==1.26.4 # xblocks-contrib oauthlib==3.3.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django-oauth-toolkit # lti-consumer-xblock + # openedx-platform # requests-oauthlib # social-auth-core # xblocks-contrib olxcleaner==0.3.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform openedx-atlas==0.7.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # enterprise-integrated-channels # openedx-authz # openedx-forum -openedx-authz==1.19.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform +openedx-authz==1.20.0 + # via openedx-platform openedx-calc==5.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # xblocks-contrib openedx-core==1.1.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform openedx-django-pyfs==4.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # xblock + # via xblock openedx-django-require==3.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform openedx-django-wiki==3.1.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform openedx-events==11.2.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # edx-event-bus-kafka # edx-event-bus-redis @@ -1413,32 +949,22 @@ openedx-events==11.2.0 # lti-consumer-xblock # openedx-authz # openedx-core + # openedx-platform # ora2 -openedx-filters==3.5.0 +openedx-filters==3.7.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # lti-consumer-xblock + # openedx-platform # ora2 openedx-forum==0.4.3 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform optimizely-sdk==5.5.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform ora2==7.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform packaging==26.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # -r requirements/pip-tools.txt - # build # drf-yasg # gunicorn # kombu @@ -1447,61 +973,40 @@ packaging==26.2 # snowflake-connector-python # sphinx # tox + # tox-uv-bare # wheel pact-python==3.4.0 - # via -r requirements/edx/testing.txt pact-python-ffi==0.5.4.0 - # via - # -r requirements/edx/testing.txt - # pact-python + # via pact-python paramiko==5.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-enterprise + # via edx-enterprise path==16.11.0 # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-i18n-tools + # openedx-platform # path-py # xblocks-contrib path-py==12.5.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # ora2 # staff-graded-xblock pathspec==1.1.1 # via mypy pgpy==0.6.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-enterprise + # via edx-enterprise picobox==4.0.0 - # via - # -r requirements/edx/doc.txt - # sphinxcontrib-openapi + # via sphinxcontrib-openapi piexif==1.1.3 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform pillow==12.2.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # edx-organizations # edxval -pip-tools==7.5.3 - # via -r requirements/pip-tools.txt + # openedx-platform platformdirs==4.10.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # pylint # python-discovery # snowflake-connector-python @@ -1509,37 +1014,24 @@ platformdirs==4.10.0 # virtualenv pluggy==1.6.0 # via - # -r requirements/edx/testing.txt # diff-cover # pytest # pytest-cov # tox polib==1.2.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-i18n-tools + # via edx-i18n-tools prompt-toolkit==3.0.52 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # click-repl + # via click-repl propcache==0.5.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # aiohttp # yarl proto-plus==1.28.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # google-api-core # google-cloud-firestore -protobuf==7.35.1 +protobuf==6.33.6 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # google-api-core # google-cloud-firestore # googleapis-common-protos @@ -1547,76 +1039,47 @@ protobuf==7.35.1 # proto-plus psutil==7.2.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-django-utils + # openedx-platform # pytest-xdist psycopg2-binary==2.9.12 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform py==1.11.0 - # via -r requirements/edx/testing.txt pyasn1==0.6.3 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # pgpy # pyasn1-modules pyasn1-modules==0.4.2 + # via google-auth +pycasbin==2.2.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # google-auth -pycasbin==2.8.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # casbin-django-orm-adapter # openedx-authz pycountry==26.2.16 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -pycparser==3.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # cffi + # via openedx-platform +pycparser==3.0 ; implementation_name != 'PyPy' + # via cffi pycryptodomex==3.23.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-proctoring # lti-consumer-xblock + # openedx-platform pydantic==2.13.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # camel-converter + # via camel-converter pydantic-core==2.46.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # pydantic + # via pydantic pydata-sphinx-theme==0.16.1 - # via - # -r requirements/edx/doc.txt - # sphinx-book-theme + # via sphinx-book-theme pygments==2.20.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # accessible-pygments # diff-cover # pydata-sphinx-theme # rich # sphinx # sphinx-mdinclude -pyjwt[crypto]==2.13.0 +pyjwt==2.13.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # drf-jwt # edx-auth-backends # edx-drf-extensions @@ -1624,100 +1087,63 @@ pyjwt[crypto]==2.13.0 # edx-rest-api-client # firebase-admin # lti-consumer-xblock + # openedx-platform # pylti1p3 # snowflake-connector-python # social-auth-core pylatexenc==2.10 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # olxcleaner + # via olxcleaner pylint==4.0.6 # via - # -r requirements/edx/testing.txt # edx-lint # pylint-celery # pylint-django # pylint-plugin-utils # pylint-pytest pylint-celery==0.3 - # via - # -r requirements/edx/testing.txt - # edx-lint + # via edx-lint pylint-django==2.7.0 - # via - # -r requirements/edx/testing.txt - # edx-lint + # via edx-lint pylint-plugin-utils==0.9.0 # via - # -r requirements/edx/testing.txt # pylint-celery # pylint-django pylint-pytest==1.1.8 - # via -r requirements/edx/testing.txt pylti1p3==2.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform pymemcache==4.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform pymongo==4.4.0 # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-opaque-keys # event-tracking # mongoengine # openedx-forum + # openedx-platform pynacl==1.6.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-django-utils # paramiko pynliner==0.8.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform pyopenssl==26.3.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # snowflake-connector-python + # via snowflake-connector-python pyparsing==3.3.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # chem # openedx-calc # xblocks-contrib pyproject-api==1.10.1 - # via - # -r requirements/edx/testing.txt - # tox -pyproject-hooks==1.2.0 - # via - # -r requirements/pip-tools.txt - # build - # pip-tools + # via tox pyquery==2.0.1 - # via -r requirements/edx/testing.txt pyrsistent==0.20.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # optimizely-sdk + # via optimizely-sdk pysrt==1.1.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edxval + # openedx-platform pytest==8.2.0 # via - # -r requirements/edx/testing.txt # pylint-pytest # pytest-attrib # pytest-cov @@ -1728,27 +1154,16 @@ pytest==8.2.0 # pytest-reportlog # pytest-xdist pytest-attrib==0.1.3 - # via -r requirements/edx/testing.txt pytest-cov==7.1.0 - # via -r requirements/edx/testing.txt pytest-django==4.12.0 - # via -r requirements/edx/testing.txt pytest-json-report==1.5.0 - # via -r requirements/edx/testing.txt pytest-metadata==3.1.1 - # via - # -r requirements/edx/testing.txt - # pytest-json-report + # via pytest-json-report pytest-randomly==4.1.0 - # via -r requirements/edx/testing.txt pytest-reportlog==1.0.0 - # via -r requirements/edx/testing.txt -pytest-xdist[psutil]==3.8.0 - # via -r requirements/edx/testing.txt +pytest-xdist==3.8.0 python-dateutil==2.9.0.post0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # analytics-python # botocore # celery @@ -1758,42 +1173,29 @@ python-dateutil==2.9.0.post0 # freezegun # icalendar # olxcleaner + # openedx-platform # ora2 # xblock python-discovery==1.4.2 # via - # -r requirements/edx/testing.txt # tox # virtualenv python-ipware==3.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # django-ipware + # via django-ipware python-slugify==8.0.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # code-annotations + # via code-annotations python-swiftclient==4.10.0 + # via ora2 +python3-openid==3.2.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # ora2 -python3-openid==3.2.0 ; python_version >= "3" - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # social-auth-core python3-saml==1.16.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise + # openedx-platform pytz==2026.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # drf-yasg # edx-completion # edx-enterprise @@ -1803,59 +1205,45 @@ pytz==2026.2 # enterprise-integrated-channels # event-tracking # olxcleaner + # openedx-platform # ora2 # snowflake-connector-python # tincan # xblock # xblocks-contrib pyuca==1.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform pywatchman==4.0.0 - # via -r requirements/edx/development.in pyyaml==6.0.3 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # code-annotations # drf-spectacular # drf-yasg # edx-django-release-util # edx-i18n-tools # jsondiff + # openedx-platform # sphinx-autoapi # sphinxcontrib-openapi # xblock random2==1.0.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # xblocks-contrib recommender-xblock==5.0.0 + # via openedx-platform +redis==8.0.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -redis==8.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # walrus referencing==0.37.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # jsonschema # jsonschema-specifications -regex==2026.5.9 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # nltk +regex==2026.6.28 + # via nltk requests==2.34.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # analytics-python # cachecontrol # django-oauth-toolkit @@ -1883,78 +1271,58 @@ requests==2.34.2 # xblocks-contrib requests-oauthlib==2.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # social-auth-core rich==15.0.0 - # via - # -r requirements/edx/testing.txt - # import-linter + # via import-linter roman-numerals==4.1.0 + # via sphinx +rpds-py==2026.6.3 # via - # -r requirements/edx/doc.txt - # sphinx -rpds-py==2026.5.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # jsonschema # referencing -ruff==0.15.17 - # via -r requirements/edx/testing.txt +ruff==0.15.20 rules==3.5 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # edx-proctoring # openedx-core -s3transfer==0.18.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # boto3 + # openedx-platform +s3transfer==0.19.0 + # via boto3 sailthru-client==2.2.3 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-ace + # via edx-ace scipy==1.17.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # chem + # via chem semantic-version==2.10.0 + # via edx-drf-extensions +setuptools==81.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-drf-extensions + # django-pipeline + # edx-api-doc-tools + # edx-completion + # edx-milestones + # edx-organizations + # edx-rbac + # fs + # openedx-events + # openedx-filters shapely==2.1.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # xblocks-contrib simpleeval==1.0.7 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # pycasbin + # via pycasbin simplejson==4.1.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # sailthru-client # super-csv # xblock - # xblock-utils # xblocks-contrib singledispatch==4.1.2 - # via -r requirements/edx/testing.txt six==1.17.0 # via - # -r requirements/edx/assets.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # analytics-python # crowdsourcehinter-xblock # edx-ace @@ -1970,58 +1338,42 @@ six==1.17.0 # fs-s3fs # html5lib # libsass + # openedx-platform # python-dateutil slumber==0.7.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-bulk-grades # edx-enterprise # enterprise-integrated-channels + # openedx-platform smmap==5.0.3 - # via - # -r requirements/edx/doc.txt - # gitdb + # via gitdb snowballstemmer==3.1.1 - # via - # -r requirements/edx/doc.txt - # sphinx + # via sphinx snowflake-connector-python==4.6.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # enterprise-integrated-channels + # via enterprise-integrated-channels social-auth-app-django==5.4.1 # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-auth-backends # edx-enterprise -social-auth-core==4.9.1 + # openedx-platform +social-auth-core==5.0.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-auth-backends + # openedx-platform # social-auth-app-django sorl-thumbnail==13.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # openedx-django-wiki + # openedx-platform sortedcontainers==2.4.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # snowflake-connector-python soupsieve==2.8.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # beautifulsoup4 + # via beautifulsoup4 sphinx==9.1.0 # via - # -r requirements/edx/doc.txt # pydata-sphinx-theme # sphinx-autoapi # sphinx-book-theme @@ -2032,135 +1384,79 @@ sphinx==9.1.0 # sphinxcontrib-openapi # sphinxext-rediraffe sphinx-autoapi==3.6.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt sphinx-book-theme==1.2.0 - # via -r requirements/edx/doc.txt sphinx-design==0.7.0 - # via -r requirements/edx/doc.txt sphinx-mdinclude==0.6.2 - # via - # -r requirements/edx/doc.txt - # sphinxcontrib-openapi + # via sphinxcontrib-openapi sphinx-reredirects==1.1.0 - # via -r requirements/edx/doc.txt sphinxcontrib-applehelp==2.0.0 - # via - # -r requirements/edx/doc.txt - # sphinx + # via sphinx sphinxcontrib-devhelp==2.0.0 - # via - # -r requirements/edx/doc.txt - # sphinx + # via sphinx sphinxcontrib-htmlhelp==2.1.0 - # via - # -r requirements/edx/doc.txt - # sphinx + # via sphinx sphinxcontrib-httpdomain==2.0.0 - # via - # -r requirements/edx/doc.txt - # sphinxcontrib-openapi + # via sphinxcontrib-openapi sphinxcontrib-jsmath==1.0.1 - # via - # -r requirements/edx/doc.txt - # sphinx + # via sphinx sphinxcontrib-openapi==0.9.0 - # via -r requirements/edx/doc.txt sphinxcontrib-qthelp==2.0.0 - # via - # -r requirements/edx/doc.txt - # sphinx + # via sphinx sphinxcontrib-serializinghtml==2.0.0 - # via - # -r requirements/edx/doc.txt - # sphinx + # via sphinx sphinxext-rediraffe==0.3.0 - # via -r requirements/edx/doc.txt sqlparse==0.5.5 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # django # django-debug-toolbar staff-graded-xblock==4.0.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform stevedore==5.8.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # code-annotations # edx-ace # edx-django-utils # edx-enterprise # edx-opaque-keys + # openedx-platform super-csv==5.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-bulk-grades + # via edx-bulk-grades sympy==1.14.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # openedx-calc -testfixtures==12.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-enterprise + # via openedx-calc +testfixtures==12.2.0 + # via edx-enterprise text-unidecode==1.3 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # python-slugify + # via python-slugify tincan==1.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-enterprise + # via edx-enterprise tinycss2==1.5.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # bleach + # via bleach tomli-w==1.2.0 - # via - # -r requirements/edx/testing.txt - # tox + # via tox tomlkit==0.15.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-lint # openedx-core # pylint # snowflake-connector-python -tox==4.55.1 - # via -r requirements/edx/testing.txt -tqdm==4.68.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # nltk +tox==4.56.1 + # via tox-uv-bare +tox-uv==1.35.2 +tox-uv-bare==1.35.2 + # via tox-uv +tqdm==4.68.3 + # via nltk types-pyyaml==6.0.12.20260518 # via # django-stubs # djangorestframework-stubs types-requests==2.33.0.20260518 - # via -r requirements/edx/development.in typesense==2.0.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-search # openedx-forum typing-extensions==4.15.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # aiohttp # aiosignal # anyio @@ -2188,117 +1484,71 @@ typing-extensions==4.15.0 # typesense # typing-inspection typing-inspection==0.4.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # pydantic + # via pydantic tzdata==2026.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # django + # faker # icalendar # kombu -tzlocal==5.4 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # celery + # tzlocal +tzlocal==5.4.4 + # via celery unicodecsv==0.14.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # edx-enterprise # enterprise-integrated-channels + # openedx-platform unicodeit==0.7.5 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform unidiff==0.7.5 - # via -r requirements/edx/testing.txt uritemplate==4.2.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # drf-spectacular # drf-yasg urllib3==2.7.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # botocore # elasticsearch # requests # types-requests +uv==0.11.26 + # via tox-uv vine==5.1.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # amqp # celery # kombu -virtualenv==21.5.0 - # via - # -r requirements/edx/testing.txt - # tox +virtualenv==21.5.1 + # via tox voluptuous==0.16.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # ora2 + # via ora2 vulture==2.16 - # via -r requirements/edx/development.in walrus==0.9.8 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-event-bus-redis + # via edx-event-bus-redis watchdog==6.0.0 - # via -r requirements/edx/development.in -wcmatch==10.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # pycasbin -wcwidth==0.8.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # prompt-toolkit +wcwidth==0.8.2 + # via prompt-toolkit web-fragments==4.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-sga - # xblock-utils + # via openedx-platform webencodings==0.5.1 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # bleach # html5lib # tinycss2 webob==1.8.10 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # xblock # xblocks-contrib wheel==0.47.0 + # via django-pipeline +wrapt==1.17.3 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # -r requirements/pip-tools.txt - # django-pipeline - # pip-tools -wrapt==2.2.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # openedx-platform # xblocks-contrib -xblock[django]==6.3.0 +xblock==6.3.0 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # acid-xblock # crowdsourcehinter-xblock # done-xblock @@ -2306,56 +1556,28 @@ xblock[django]==6.3.0 # edx-sga # edx-when # lti-consumer-xblock + # openedx-platform # ora2 # staff-graded-xblock # xblock-drag-and-drop-v2 # xblock-google-drive - # xblock-utils + # xblock-poll # xblocks-contrib xblock-drag-and-drop-v2==5.0.6 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform xblock-google-drive==0.8.2 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -xblock-poll==1.15.1 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt -xblock-utils==4.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # edx-sga - # xblock-poll + # via openedx-platform +xblock-poll==1.16.1 + # via openedx-platform xblocks-contrib==0.17.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform xmlsec==1.3.14 - # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # python3-saml + # via python3-saml xss-utils==1.0.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt + # via openedx-platform yarl==1.24.2 # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt # aiohttp # pact-python zipp==4.1.0 - # via - # -r requirements/edx/doc.txt - # -r requirements/edx/testing.txt - # importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# pip -# setuptools + # via importlib-metadata diff --git a/requirements/edx/doc.in b/requirements/edx/doc.in deleted file mode 100644 index f44dbf935ddb..000000000000 --- a/requirements/edx/doc.in +++ /dev/null @@ -1,13 +0,0 @@ -# Requirements for documentation validation --c ../constraints.txt - --r base.txt -code-annotations # provides annotations for certain documentation -sphinx-book-theme # Common theme for all Open edX projects -gitpython # fetch git repo information -Sphinx # Documentation builder -sphinx-design # provides various responsive web-components -sphinxcontrib-openapi # Be able to render openapi schema in a sphinx project -sphinxext-rediraffe # Quickly and easily redirect when we move pages around. -sphinx-reredirects # Redirect from a sphinx project out to other places on the web including other sphinx projects -sphinx-autoapi diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt deleted file mode 100644 index 7777d301f931..000000000000 --- a/requirements/edx/doc.txt +++ /dev/null @@ -1,1681 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# make upgrade -# -accessible-pygments==0.0.5 - # via pydata-sphinx-theme -acid-xblock==0.4.1 - # via -r requirements/edx/base.txt -aiohappyeyeballs==2.6.2 - # via - # -r requirements/edx/base.txt - # aiohttp -aiohttp==3.14.1 - # via - # -r requirements/edx/base.txt - # geoip2 -aiosignal==1.4.0 - # via - # -r requirements/edx/base.txt - # aiohttp -alabaster==1.0.0 - # via sphinx -amqp==5.3.1 - # via - # -r requirements/edx/base.txt - # kombu -analytics-python==1.4.post1 - # via -r requirements/edx/base.txt -aniso8601==10.0.1 - # via - # -r requirements/edx/base.txt - # edx-tincan-py35 - # tincan -annotated-types==0.7.0 - # via - # -r requirements/edx/base.txt - # pydantic -anyio==4.14.0 - # via - # -r requirements/edx/base.txt - # httpx -appdirs==1.4.4 - # via - # -r requirements/edx/base.txt - # fs -asgiref==3.11.1 - # via - # -r requirements/edx/base.txt - # django - # django-cors-headers - # django-countries -asn1crypto==1.5.1 - # via - # -r requirements/edx/base.txt - # snowflake-connector-python -astroid==4.0.4 - # via - # -c requirements/constraints.txt - # sphinx-autoapi -attrs==26.1.0 - # via - # -r requirements/edx/base.txt - # aiohttp - # edx-ace - # jsonschema - # lti-consumer-xblock - # openedx-authz - # openedx-core - # openedx-events - # referencing -babel==2.18.0 - # via - # -r requirements/edx/base.txt - # enmerkar - # enmerkar-underscore - # pydata-sphinx-theme - # sphinx -backoff==1.10.0 - # via - # -r requirements/edx/base.txt - # analytics-python -bcrypt==5.0.0 - # via - # -r requirements/edx/base.txt - # paramiko -beautifulsoup4==4.15.0 - # via - # -r requirements/edx/base.txt - # openedx-forum - # pydata-sphinx-theme - # pynliner - # xblocks-contrib -billiard==4.2.4 - # via - # -r requirements/edx/base.txt - # celery -bleach[css]==6.4.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # lti-consumer-xblock - # openedx-django-wiki - # ora2 - # xblock-drag-and-drop-v2 - # xblock-poll -boto3==1.43.30 - # via - # -r requirements/edx/base.txt - # django-ses - # fs-s3fs - # ora2 - # snowflake-connector-python -botocore==1.43.30 - # via - # -r requirements/edx/base.txt - # boto3 - # s3transfer - # snowflake-connector-python -bracex==2.6 - # via - # -r requirements/edx/base.txt - # wcmatch -bridgekeeper==0.9 - # via -r requirements/edx/base.txt -cachecontrol==0.14.4 - # via - # -r requirements/edx/base.txt - # firebase-admin -cachetools==7.1.4 - # via - # -r requirements/edx/base.txt - # edxval -camel-converter[pydantic]==5.1.0 - # via - # -r requirements/edx/base.txt - # meilisearch -casbin-django-orm-adapter==1.7.0 - # via - # -r requirements/edx/base.txt - # openedx-authz -celery==5.6.3 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # django-celery-results - # django-user-tasks - # edx-celeryutils - # edx-enterprise - # enterprise-integrated-channels - # event-tracking - # openedx-core -certifi==2026.5.20 - # via - # -r requirements/edx/base.txt - # elasticsearch - # httpcore - # httpx - # requests - # snowflake-connector-python -cffi==2.0.0 - # via - # -r requirements/edx/base.txt - # cryptography - # pynacl -chardet==7.4.3 - # via - # -r requirements/edx/base.txt - # encutils - # pysrt -charset-normalizer==3.4.7 - # via - # -r requirements/edx/base.txt - # requests - # snowflake-connector-python -chem==2.0.0 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -click==8.4.1 - # via - # -r requirements/edx/base.txt - # celery - # click-didyoumean - # click-plugins - # click-repl - # code-annotations - # edx-django-utils - # nltk -click-didyoumean==0.3.1 - # via - # -r requirements/edx/base.txt - # celery -click-plugins==1.1.1.2 - # via - # -r requirements/edx/base.txt - # celery -click-repl==0.3.0 - # via - # -r requirements/edx/base.txt - # celery -code-annotations==3.0.0 - # via - # -r requirements/edx/base.txt - # -r requirements/edx/doc.in - # edx-enterprise - # edx-toggles -codejail-includes==2.0.0 - # via -r requirements/edx/base.txt -crowdsourcehinter-xblock==1.0.1 - # via -r requirements/edx/base.txt -cryptography==49.0.0 - # via - # -r requirements/edx/base.txt - # django-fernet-fields-v2 - # edx-enterprise - # google-auth - # jwcrypto - # paramiko - # pgpy - # pyjwt - # pyopenssl - # snowflake-connector-python - # social-auth-core -cssutils==2.15.0 - # via - # -r requirements/edx/base.txt - # pynliner -deepmerge==2.0 - # via sphinxcontrib-openapi -defusedxml==0.7.1 - # via - # -r requirements/edx/base.txt - # djangorestframework-xml - # ora2 - # python3-openid - # social-auth-core - # xblocks-contrib -django==5.2.15 - # via - # -c requirements/common_constraints.txt - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # casbin-django-orm-adapter - # django-appconf - # django-autocomplete-light - # django-celery-results - # django-classy-tags - # django-config-models - # django-cors-headers - # django-crum - # django-fernet-fields-v2 - # django-filter - # django-js-asset - # django-method-override - # django-model-utils - # django-multi-email-field - # django-mysql - # django-oauth-toolkit - # django-push-notifications - # django-sekizai - # django-ses - # django-simple-history - # django-statici18n - # django-storages - # django-user-tasks - # django-waffle - # djangorestframework - # done-xblock - # drf-jwt - # drf-spectacular - # drf-yasg - # edx-ace - # edx-api-doc-tools - # edx-auth-backends - # edx-bulk-grades - # edx-celeryutils - # edx-completion - # edx-django-release-util - # edx-django-sites-extensions - # edx-django-utils - # edx-drf-extensions - # edx-enterprise - # edx-event-bus-kafka - # edx-event-bus-redis - # edx-i18n-tools - # edx-milestones - # edx-organizations - # edx-proctoring - # edx-rbac - # edx-search - # edx-submissions - # edx-toggles - # edx-when - # edxval - # enmerkar - # enmerkar-underscore - # enterprise-integrated-channels - # event-tracking - # help-tokens - # jsonfield - # lti-consumer-xblock - # openedx-authz - # openedx-core - # openedx-django-pyfs - # openedx-django-wiki - # openedx-events - # openedx-filters - # openedx-forum - # ora2 - # social-auth-app-django - # super-csv - # xblock-google-drive - # xblocks-contrib - # xss-utils -django-appconf==1.2.0 - # via - # -r requirements/edx/base.txt - # django-statici18n -django-autocomplete-light==4.0.3 - # via -r requirements/edx/base.txt -django-cache-memoize==0.2.1 - # via - # -r requirements/edx/base.txt - # edx-enterprise -django-celery-results==2.6.0 - # via -r requirements/edx/base.txt -django-classy-tags==4.1.0 - # via - # -r requirements/edx/base.txt - # django-sekizai -django-config-models==3.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels - # lti-consumer-xblock -django-cors-headers==4.9.0 - # via -r requirements/edx/base.txt -django-countries==9.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -django-crum==0.7.9 - # via - # -r requirements/edx/base.txt - # edx-django-utils - # edx-enterprise - # edx-proctoring - # edx-rbac - # edx-toggles - # openedx-authz - # super-csv -django-fernet-fields-v2==0.9 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels -django-filter==25.2 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # lti-consumer-xblock -django-ipware==7.0.1 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-proctoring -django-js-asset==4.0.1 - # via - # -r requirements/edx/base.txt - # django-mptt -django-method-override==1.0.4 - # via -r requirements/edx/base.txt -django-model-utils==5.0.0 - # via - # -r requirements/edx/base.txt - # django-user-tasks - # edx-bulk-grades - # edx-celeryutils - # edx-completion - # edx-enterprise - # edx-milestones - # edx-organizations - # edx-proctoring - # edx-rbac - # edx-submissions - # edx-when - # edxval - # enterprise-integrated-channels - # ora2 - # super-csv -django-mptt==0.18.0 - # via - # -r requirements/edx/base.txt - # openedx-django-wiki -django-multi-email-field==0.8.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -django-mysql==4.19.0 - # via -r requirements/edx/base.txt -django-oauth-toolkit==1.7.1 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels -django-object-actions==5.1.2 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels -django-pipeline==4.1.0 - # via -r requirements/edx/base.txt -django-push-notifications==3.3.0 - # via - # -r requirements/edx/base.txt - # edx-ace -django-ratelimit==4.1.0 - # via -r requirements/edx/base.txt -django-sekizai==4.1.0 - # via - # -r requirements/edx/base.txt - # openedx-django-wiki -django-ses==4.7.2 - # via -r requirements/edx/base.txt -django-simple-history==3.11.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-organizations - # edx-proctoring - # enterprise-integrated-channels - # ora2 -django-statici18n==2.7.1 - # via - # -r requirements/edx/base.txt - # lti-consumer-xblock - # xblock-drag-and-drop-v2 - # xblock-poll -django-storages==1.14.6 - # via - # -r requirements/edx/base.txt - # edxval -django-user-tasks==4.0.0 - # via -r requirements/edx/base.txt -django-waffle==5.0.0 - # via - # -r requirements/edx/base.txt - # edx-django-utils - # edx-drf-extensions - # edx-enterprise - # edx-proctoring - # edx-toggles - # openedx-authz -django-webpack-loader==3.2.4 - # via - # -r requirements/edx/base.txt - # edx-proctoring -djangorestframework==3.17.1 - # via - # -r requirements/edx/base.txt - # django-config-models - # django-user-tasks - # drf-jwt - # drf-spectacular - # drf-yasg - # edx-api-doc-tools - # edx-completion - # edx-drf-extensions - # edx-enterprise - # edx-organizations - # edx-proctoring - # edx-submissions - # openedx-authz - # openedx-core - # openedx-forum - # ora2 - # super-csv -djangorestframework-xml==2.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -dnspython==2.8.0 - # via - # -r requirements/edx/base.txt - # pymongo -docutils==0.22.4 - # via - # pydata-sphinx-theme - # sphinx - # sphinx-mdinclude -done-xblock==3.0.0 - # via -r requirements/edx/base.txt -drf-jwt==1.19.2 - # via - # -r requirements/edx/base.txt - # edx-drf-extensions -drf-spectacular==0.29.0 - # via -r requirements/edx/base.txt -drf-yasg==1.21.15 - # via - # -r requirements/edx/base.txt - # django-user-tasks - # edx-api-doc-tools -edx-ace==1.15.0 - # via -r requirements/edx/base.txt -edx-api-doc-tools==3.0.0 - # via - # -r requirements/edx/base.txt - # openedx-authz -edx-auth-backends==5.0.0 - # via -r requirements/edx/base.txt -edx-bulk-grades==2.0.0 - # via - # -r requirements/edx/base.txt - # staff-graded-xblock -edx-ccx-keys==2.0.2 - # via - # -r requirements/edx/base.txt - # lti-consumer-xblock - # openedx-authz - # openedx-events -edx-celeryutils==2.0.0 - # via - # -r requirements/edx/base.txt - # super-csv -edx-codejail==4.1.0 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -edx-completion==5.0.0 - # via -r requirements/edx/base.txt -edx-django-release-util==1.5.0 - # via - # -r requirements/edx/base.txt - # edx-submissions - # edxval -edx-django-sites-extensions==6.0.0 - # via -r requirements/edx/base.txt -edx-django-utils==8.0.1 - # via - # -r requirements/edx/base.txt - # django-config-models - # edx-ace - # edx-auth-backends - # edx-drf-extensions - # edx-enterprise - # edx-event-bus-kafka - # edx-event-bus-redis - # edx-rest-api-client - # edx-toggles - # edx-when - # enterprise-integrated-channels - # event-tracking - # openedx-authz - # openedx-events - # ora2 - # super-csv - # xblocks-contrib -edx-drf-extensions==10.6.0 - # via - # -r requirements/edx/base.txt - # edx-completion - # edx-enterprise - # edx-organizations - # edx-proctoring - # edx-rbac - # edx-when - # edxval - # enterprise-integrated-channels - # openedx-authz - # openedx-core -edx-enterprise==8.3.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt -edx-event-bus-kafka==6.1.0 - # via -r requirements/edx/base.txt -edx-event-bus-redis==1.0.0 - # via -r requirements/edx/base.txt -edx-i18n-tools==2.0.0 - # via - # -r requirements/edx/base.txt - # ora2 -edx-milestones==2.0.0 - # via -r requirements/edx/base.txt -edx-opaque-keys[django]==4.0.0 - # via - # -r requirements/edx/base.txt - # edx-bulk-grades - # edx-ccx-keys - # edx-completion - # edx-drf-extensions - # edx-enterprise - # edx-milestones - # edx-organizations - # edx-proctoring - # edx-when - # enterprise-integrated-channels - # lti-consumer-xblock - # openedx-authz - # openedx-events - # openedx-filters - # ora2 - # xblock - # xblocks-contrib -edx-organizations==8.0.0 - # via - # -r requirements/edx/base.txt - # openedx-authz - # openedx-core -edx-proctoring==5.2.0 - # via -r requirements/edx/base.txt -edx-rbac==3.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels -edx-rest-api-client==7.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-proctoring - # enterprise-integrated-channels -edx-search==5.0.1 - # via - # -r requirements/edx/base.txt - # openedx-forum -edx-sga==0.28.0 - # via -r requirements/edx/base.txt -edx-submissions==4.0.0 - # via - # -r requirements/edx/base.txt - # ora2 - # xblocks-contrib -edx-tincan-py35==2.0.0 - # via - # -r requirements/edx/base.txt - # enterprise-integrated-channels -edx-toggles==6.0.0 - # via - # -r requirements/edx/base.txt - # edx-auth-backends - # edx-completion - # edx-enterprise - # edx-event-bus-kafka - # edx-event-bus-redis - # edx-search - # edxval - # event-tracking - # ora2 - # xblocks-contrib -edx-when==4.0.0 - # via - # -r requirements/edx/base.txt - # edx-proctoring -edxval==4.0.1 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -elasticsearch==7.9.1 - # via - # -c requirements/common_constraints.txt - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-search - # openedx-forum -encutils==1.0.0 - # via - # -r requirements/edx/base.txt - # cssutils -enmerkar==0.7.1 - # via - # -r requirements/edx/base.txt - # enmerkar-underscore -enmerkar-underscore==2.4.0 - # via -r requirements/edx/base.txt -enterprise-integrated-channels==0.1.60 - # via -r requirements/edx/base.txt -event-tracking==4.0.2 - # via - # -r requirements/edx/base.txt - # edx-completion - # edx-proctoring - # edx-search -fastavro==1.12.2 - # via - # -r requirements/edx/base.txt - # openedx-events -filelock==3.29.4 - # via - # -r requirements/edx/base.txt - # snowflake-connector-python -firebase-admin==7.4.0 - # via - # -r requirements/edx/base.txt - # edx-ace -frozenlist==1.8.0 - # via - # -r requirements/edx/base.txt - # aiohttp - # aiosignal -fs==2.4.16 - # via - # -r requirements/edx/base.txt - # fs-s3fs - # openedx-django-pyfs - # xblock - # xblocks-contrib -fs-s3fs==1.1.1 - # via - # -r requirements/edx/base.txt - # openedx-django-pyfs -geoip2==5.2.0 - # via -r requirements/edx/base.txt -gitdb==4.0.12 - # via gitpython -gitpython==3.1.50 - # via -r requirements/edx/doc.in -glob2==0.7 - # via -r requirements/edx/base.txt -google-api-core[grpc]==2.31.0 - # via - # -r requirements/edx/base.txt - # firebase-admin - # google-cloud-core - # google-cloud-firestore - # google-cloud-storage -google-auth==2.55.0 - # via - # -r requirements/edx/base.txt - # google-api-core - # google-cloud-core - # google-cloud-firestore - # google-cloud-storage -google-cloud-core==2.6.0 - # via - # -r requirements/edx/base.txt - # google-cloud-firestore - # google-cloud-storage -google-cloud-firestore==2.27.0 - # via - # -r requirements/edx/base.txt - # firebase-admin -google-cloud-storage==3.12.0 - # via - # -r requirements/edx/base.txt - # firebase-admin -google-crc32c==1.8.0 - # via - # -r requirements/edx/base.txt - # google-cloud-storage - # google-resumable-media -google-resumable-media==2.10.0 - # via - # -r requirements/edx/base.txt - # google-cloud-storage -googleapis-common-protos==1.75.0 - # via - # -r requirements/edx/base.txt - # google-api-core - # grpcio-status -grpcio==1.81.1 - # via - # -r requirements/edx/base.txt - # google-api-core - # google-cloud-firestore - # grpcio-status -grpcio-status==1.81.1 - # via - # -r requirements/edx/base.txt - # google-api-core -gunicorn==26.0.0 - # via -r requirements/edx/base.txt -h11==0.16.0 - # via - # -r requirements/edx/base.txt - # httpcore -h2==4.3.0 - # via - # -r requirements/edx/base.txt - # httpx -help-tokens==4.0.0 - # via -r requirements/edx/base.txt -hpack==4.1.0 - # via - # -r requirements/edx/base.txt - # h2 -html5lib==1.1 - # via - # -r requirements/edx/base.txt - # ora2 - # xblocks-contrib -httpcore==1.0.9 - # via - # -r requirements/edx/base.txt - # httpx -httpx[http2]==0.28.1 - # via - # -r requirements/edx/base.txt - # firebase-admin - # typesense -hyperframe==6.1.0 - # via - # -r requirements/edx/base.txt - # h2 -icalendar==7.1.3 - # via -r requirements/edx/base.txt -idna==3.18 - # via - # -r requirements/edx/base.txt - # anyio - # httpx - # optimizely-sdk - # requests - # snowflake-connector-python - # yarl -imagesize==2.0.0 - # via sphinx -importlib-metadata==9.0.0 - # via -r requirements/edx/base.txt -inflection==0.5.1 - # via - # -r requirements/edx/base.txt - # drf-spectacular - # drf-yasg -invoke==3.0.3 - # via - # -r requirements/edx/base.txt - # paramiko -ipaddress==1.0.23 - # via -r requirements/edx/base.txt -isodate==0.7.2 - # via - # -r requirements/edx/base.txt - # python3-saml -jinja2==3.1.6 - # via - # -r requirements/edx/base.txt - # code-annotations - # sphinx - # sphinx-autoapi -jmespath==1.1.0 - # via - # -r requirements/edx/base.txt - # boto3 - # botocore -joblib==1.5.3 - # via - # -r requirements/edx/base.txt - # nltk -jsondiff==2.2.1 - # via - # -r requirements/edx/base.txt - # edx-enterprise -jsonfield==3.2.0 - # via - # -r requirements/edx/base.txt - # edx-celeryutils - # edx-enterprise - # edx-proctoring - # edx-submissions - # enterprise-integrated-channels - # lti-consumer-xblock - # ora2 -jsonschema==4.26.0 - # via - # -r requirements/edx/base.txt - # drf-spectacular - # optimizely-sdk - # sphinxcontrib-openapi -jsonschema-specifications==2025.9.1 - # via - # -r requirements/edx/base.txt - # jsonschema -jwcrypto==1.5.7 - # via - # -r requirements/edx/base.txt - # django-oauth-toolkit - # pylti1p3 -kombu==5.6.2 - # via - # -r requirements/edx/base.txt - # celery -laboratory==1.0.2 - # via -r requirements/edx/base.txt -lazy==1.6 - # via - # -r requirements/edx/base.txt - # acid-xblock - # lti-consumer-xblock - # ora2 - # xblock -lti-consumer-xblock==11.3.1 - # via -r requirements/edx/base.txt -lxml[html-clean]==5.3.2 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-enterprise - # edx-i18n-tools - # edxval - # lti-consumer-xblock - # lxml-html-clean - # olxcleaner - # openedx-calc - # ora2 - # python3-saml - # xblock - # xblocks-contrib - # xmlsec -lxml-html-clean==0.4.4 - # via - # -r requirements/edx/base.txt - # lxml -mailsnake==1.6.4 - # via -r requirements/edx/base.txt -mako==1.3.12 - # via - # -r requirements/edx/base.txt - # acid-xblock - # lti-consumer-xblock - # xblock - # xblock-utils -markdown==3.10.2 - # via - # -r requirements/edx/base.txt - # openedx-django-wiki - # staff-graded-xblock - # xblock-poll -markupsafe==3.0.3 - # via - # -r requirements/edx/base.txt - # chem - # jinja2 - # mako - # openedx-calc - # xblock - # xblocks-contrib -maxminddb==3.1.1 - # via - # -r requirements/edx/base.txt - # geoip2 -meilisearch==0.41.0 - # via - # -r requirements/edx/base.txt - # edx-search -mistune==3.2.1 - # via sphinx-mdinclude -mongoengine==0.29.3 - # via -r requirements/edx/base.txt -monotonic==1.6 - # via - # -r requirements/edx/base.txt - # analytics-python -more-itertools==11.1.0 - # via - # -r requirements/edx/base.txt - # cssutils -mpmath==1.3.0 - # via - # -r requirements/edx/base.txt - # sympy -msgpack==1.2.0 - # via - # -r requirements/edx/base.txt - # cachecontrol -multidict==6.7.1 - # via - # -r requirements/edx/base.txt - # aiohttp - # yarl -mysqlclient==2.2.8 - # via - # -r requirements/edx/base.txt - # openedx-forum -nh3==0.3.5 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -nltk==3.9.4 - # via - # -r requirements/edx/base.txt - # chem -nodeenv==1.10.0 - # via -r requirements/edx/base.txt -numpy==1.26.4 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # chem - # openedx-calc - # scipy - # shapely - # xblocks-contrib -oauthlib==3.3.1 - # via - # -r requirements/edx/base.txt - # django-oauth-toolkit - # lti-consumer-xblock - # requests-oauthlib - # social-auth-core - # xblocks-contrib -olxcleaner==0.3.0 - # via -r requirements/edx/base.txt -openedx-atlas==0.7.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels - # openedx-authz - # openedx-forum -openedx-authz==1.19.0 - # via -r requirements/edx/base.txt -openedx-calc==5.0.0 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -openedx-core==1.1.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt -openedx-django-pyfs==4.0.0 - # via - # -r requirements/edx/base.txt - # xblock -openedx-django-require==3.0.0 - # via -r requirements/edx/base.txt -openedx-django-wiki==3.1.2 - # via -r requirements/edx/base.txt -openedx-events==11.2.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-event-bus-kafka - # edx-event-bus-redis - # event-tracking - # lti-consumer-xblock - # openedx-authz - # openedx-core - # ora2 -openedx-filters==3.5.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # lti-consumer-xblock - # ora2 -openedx-forum==0.4.3 - # via -r requirements/edx/base.txt -optimizely-sdk==5.5.0 - # via -r requirements/edx/base.txt -ora2==7.1.0 - # via -r requirements/edx/base.txt -packaging==26.2 - # via - # -r requirements/edx/base.txt - # drf-yasg - # gunicorn - # kombu - # snowflake-connector-python - # sphinx - # wheel -paramiko==5.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -path==16.11.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-i18n-tools - # path-py - # xblocks-contrib -path-py==12.5.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # ora2 - # staff-graded-xblock -pgpy==0.6.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -picobox==4.0.0 - # via sphinxcontrib-openapi -piexif==1.1.3 - # via -r requirements/edx/base.txt -pillow==12.2.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-organizations - # edxval -platformdirs==4.10.0 - # via - # -r requirements/edx/base.txt - # snowflake-connector-python -polib==1.2.0 - # via - # -r requirements/edx/base.txt - # edx-i18n-tools -prompt-toolkit==3.0.52 - # via - # -r requirements/edx/base.txt - # click-repl -propcache==0.5.2 - # via - # -r requirements/edx/base.txt - # aiohttp - # yarl -proto-plus==1.28.0 - # via - # -r requirements/edx/base.txt - # google-api-core - # google-cloud-firestore -protobuf==7.35.1 - # via - # -r requirements/edx/base.txt - # google-api-core - # google-cloud-firestore - # googleapis-common-protos - # grpcio-status - # proto-plus -psutil==7.2.2 - # via - # -r requirements/edx/base.txt - # edx-django-utils -psycopg2-binary==2.9.12 - # via -r requirements/edx/base.txt -pyasn1==0.6.3 - # via - # -r requirements/edx/base.txt - # pgpy - # pyasn1-modules -pyasn1-modules==0.4.2 - # via - # -r requirements/edx/base.txt - # google-auth -pycasbin==2.8.0 - # via - # -r requirements/edx/base.txt - # casbin-django-orm-adapter - # openedx-authz -pycountry==26.2.16 - # via -r requirements/edx/base.txt -pycparser==3.0 - # via - # -r requirements/edx/base.txt - # cffi -pycryptodomex==3.23.0 - # via - # -r requirements/edx/base.txt - # edx-proctoring - # lti-consumer-xblock -pydantic==2.13.4 - # via - # -r requirements/edx/base.txt - # camel-converter -pydantic-core==2.46.4 - # via - # -r requirements/edx/base.txt - # pydantic -pydata-sphinx-theme==0.16.1 - # via sphinx-book-theme -pygments==2.20.0 - # via - # accessible-pygments - # pydata-sphinx-theme - # sphinx - # sphinx-mdinclude -pyjwt[crypto]==2.13.0 - # via - # -r requirements/edx/base.txt - # drf-jwt - # edx-auth-backends - # edx-drf-extensions - # edx-proctoring - # edx-rest-api-client - # firebase-admin - # lti-consumer-xblock - # pylti1p3 - # snowflake-connector-python - # social-auth-core -pylatexenc==2.10 - # via - # -r requirements/edx/base.txt - # olxcleaner -pylti1p3==2.0.0 - # via -r requirements/edx/base.txt -pymemcache==4.0.0 - # via -r requirements/edx/base.txt -pymongo==4.4.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-opaque-keys - # event-tracking - # mongoengine - # openedx-forum -pynacl==1.6.2 - # via - # -r requirements/edx/base.txt - # edx-django-utils - # paramiko -pynliner==0.8.0 - # via -r requirements/edx/base.txt -pyopenssl==26.3.0 - # via - # -r requirements/edx/base.txt - # snowflake-connector-python -pyparsing==3.3.2 - # via - # -r requirements/edx/base.txt - # chem - # openedx-calc - # xblocks-contrib -pyrsistent==0.20.0 - # via - # -r requirements/edx/base.txt - # optimizely-sdk -pysrt==1.1.2 - # via - # -r requirements/edx/base.txt - # edxval -python-dateutil==2.9.0.post0 - # via - # -r requirements/edx/base.txt - # analytics-python - # botocore - # celery - # edx-ace - # edx-enterprise - # edx-proctoring - # icalendar - # olxcleaner - # ora2 - # xblock -python-ipware==3.0.0 - # via - # -r requirements/edx/base.txt - # django-ipware -python-slugify==8.0.4 - # via - # -r requirements/edx/base.txt - # code-annotations -python-swiftclient==4.10.0 - # via - # -r requirements/edx/base.txt - # ora2 -python3-openid==3.2.0 ; python_version >= "3" - # via - # -r requirements/edx/base.txt - # social-auth-core -python3-saml==1.16.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -pytz==2026.2 - # via - # -r requirements/edx/base.txt - # drf-yasg - # edx-completion - # edx-enterprise - # edx-proctoring - # edx-submissions - # edx-tincan-py35 - # enterprise-integrated-channels - # event-tracking - # olxcleaner - # ora2 - # snowflake-connector-python - # tincan - # xblock - # xblocks-contrib -pyuca==1.2 - # via -r requirements/edx/base.txt -pyyaml==6.0.3 - # via - # -r requirements/edx/base.txt - # code-annotations - # drf-spectacular - # drf-yasg - # edx-django-release-util - # edx-i18n-tools - # jsondiff - # sphinx-autoapi - # sphinxcontrib-openapi - # xblock -random2==1.0.2 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -recommender-xblock==5.0.0 - # via -r requirements/edx/base.txt -redis==8.0.0 - # via - # -r requirements/edx/base.txt - # walrus -referencing==0.37.0 - # via - # -r requirements/edx/base.txt - # jsonschema - # jsonschema-specifications -regex==2026.5.9 - # via - # -r requirements/edx/base.txt - # nltk -requests==2.34.2 - # via - # -r requirements/edx/base.txt - # analytics-python - # cachecontrol - # django-oauth-toolkit - # edx-bulk-grades - # edx-drf-extensions - # edx-enterprise - # edx-rest-api-client - # enterprise-integrated-channels - # geoip2 - # google-api-core - # google-cloud-storage - # mailsnake - # meilisearch - # openedx-forum - # optimizely-sdk - # pylti1p3 - # python-swiftclient - # requests-oauthlib - # sailthru-client - # slumber - # snowflake-connector-python - # social-auth-core - # sphinx - # xblock-google-drive - # xblocks-contrib -requests-oauthlib==2.0.0 - # via - # -r requirements/edx/base.txt - # social-auth-core -roman-numerals==4.1.0 - # via sphinx -rpds-py==2026.5.1 - # via - # -r requirements/edx/base.txt - # jsonschema - # referencing -rules==3.5 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-proctoring - # openedx-core -s3transfer==0.18.0 - # via - # -r requirements/edx/base.txt - # boto3 -sailthru-client==2.2.3 - # via - # -r requirements/edx/base.txt - # edx-ace -scipy==1.17.1 - # via - # -r requirements/edx/base.txt - # chem -semantic-version==2.10.0 - # via - # -r requirements/edx/base.txt - # edx-drf-extensions -shapely==2.1.2 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -simpleeval==1.0.7 - # via - # -r requirements/edx/base.txt - # pycasbin -simplejson==4.1.1 - # via - # -r requirements/edx/base.txt - # sailthru-client - # super-csv - # xblock - # xblock-utils - # xblocks-contrib -six==1.17.0 - # via - # -r requirements/edx/base.txt - # analytics-python - # crowdsourcehinter-xblock - # edx-ace - # edx-auth-backends - # edx-ccx-keys - # edx-codejail - # edx-django-release-util - # edx-milestones - # edx-rbac - # event-tracking - # fs - # fs-s3fs - # html5lib - # python-dateutil -slumber==0.7.1 - # via - # -r requirements/edx/base.txt - # edx-bulk-grades - # edx-enterprise - # enterprise-integrated-channels -smmap==5.0.3 - # via gitdb -snowballstemmer==3.1.1 - # via sphinx -snowflake-connector-python==4.6.0 - # via - # -r requirements/edx/base.txt - # enterprise-integrated-channels -social-auth-app-django==5.4.1 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-auth-backends - # edx-enterprise -social-auth-core==4.9.1 - # via - # -r requirements/edx/base.txt - # edx-auth-backends - # social-auth-app-django -sorl-thumbnail==13.0.0 - # via - # -r requirements/edx/base.txt - # openedx-django-wiki -sortedcontainers==2.4.0 - # via - # -r requirements/edx/base.txt - # snowflake-connector-python -soupsieve==2.8.4 - # via - # -r requirements/edx/base.txt - # beautifulsoup4 -sphinx==9.1.0 - # via - # -r requirements/edx/doc.in - # pydata-sphinx-theme - # sphinx-autoapi - # sphinx-book-theme - # sphinx-design - # sphinx-mdinclude - # sphinx-reredirects - # sphinxcontrib-httpdomain - # sphinxcontrib-openapi - # sphinxext-rediraffe -sphinx-autoapi==3.6.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/doc.in -sphinx-book-theme==1.2.0 - # via -r requirements/edx/doc.in -sphinx-design==0.7.0 - # via -r requirements/edx/doc.in -sphinx-mdinclude==0.6.2 - # via sphinxcontrib-openapi -sphinx-reredirects==1.1.0 - # via -r requirements/edx/doc.in -sphinxcontrib-applehelp==2.0.0 - # via sphinx -sphinxcontrib-devhelp==2.0.0 - # via sphinx -sphinxcontrib-htmlhelp==2.1.0 - # via sphinx -sphinxcontrib-httpdomain==2.0.0 - # via sphinxcontrib-openapi -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-openapi==0.9.0 - # via -r requirements/edx/doc.in -sphinxcontrib-qthelp==2.0.0 - # via sphinx -sphinxcontrib-serializinghtml==2.0.0 - # via sphinx -sphinxext-rediraffe==0.3.0 - # via -r requirements/edx/doc.in -sqlparse==0.5.5 - # via - # -r requirements/edx/base.txt - # django -staff-graded-xblock==4.0.1 - # via -r requirements/edx/base.txt -stevedore==5.8.0 - # via - # -r requirements/edx/base.txt - # code-annotations - # edx-ace - # edx-django-utils - # edx-enterprise - # edx-opaque-keys -super-csv==5.0.0 - # via - # -r requirements/edx/base.txt - # edx-bulk-grades -sympy==1.14.0 - # via - # -r requirements/edx/base.txt - # openedx-calc -testfixtures==12.1.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -text-unidecode==1.3 - # via - # -r requirements/edx/base.txt - # python-slugify -tincan==1.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -tinycss2==1.5.1 - # via - # -r requirements/edx/base.txt - # bleach -tomlkit==0.15.0 - # via - # -r requirements/edx/base.txt - # openedx-core - # snowflake-connector-python -tqdm==4.68.2 - # via - # -r requirements/edx/base.txt - # nltk -typesense==2.0.0 - # via - # -r requirements/edx/base.txt - # edx-search - # openedx-forum -typing-extensions==4.15.0 - # via - # -r requirements/edx/base.txt - # aiohttp - # aiosignal - # anyio - # beautifulsoup4 - # django-countries - # edx-opaque-keys - # grpcio - # icalendar - # jwcrypto - # pydantic - # pydantic-core - # pydata-sphinx-theme - # pylti1p3 - # pyopenssl - # referencing - # snowflake-connector-python - # testfixtures - # typesense - # typing-inspection -typing-inspection==0.4.2 - # via - # -r requirements/edx/base.txt - # pydantic -tzdata==2026.2 - # via - # -r requirements/edx/base.txt - # icalendar - # kombu -tzlocal==5.4 - # via - # -r requirements/edx/base.txt - # celery -unicodecsv==0.14.1 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels -unicodeit==0.7.5 - # via -r requirements/edx/base.txt -uritemplate==4.2.0 - # via - # -r requirements/edx/base.txt - # drf-spectacular - # drf-yasg -urllib3==2.7.0 - # via - # -r requirements/edx/base.txt - # botocore - # elasticsearch - # requests -vine==5.1.0 - # via - # -r requirements/edx/base.txt - # amqp - # celery - # kombu -voluptuous==0.16.0 - # via - # -r requirements/edx/base.txt - # ora2 -walrus==0.9.8 - # via - # -r requirements/edx/base.txt - # edx-event-bus-redis -wcmatch==10.1 - # via - # -r requirements/edx/base.txt - # pycasbin -wcwidth==0.8.1 - # via - # -r requirements/edx/base.txt - # prompt-toolkit -web-fragments==4.0.0 - # via - # -r requirements/edx/base.txt - # edx-sga - # xblock-utils -webencodings==0.5.1 - # via - # -r requirements/edx/base.txt - # bleach - # html5lib - # tinycss2 -webob==1.8.10 - # via - # -r requirements/edx/base.txt - # xblock - # xblocks-contrib -wheel==0.47.0 - # via - # -r requirements/edx/base.txt - # django-pipeline -wrapt==2.2.1 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -xblock[django]==6.3.0 - # via - # -r requirements/edx/base.txt - # acid-xblock - # crowdsourcehinter-xblock - # done-xblock - # edx-completion - # edx-sga - # edx-when - # lti-consumer-xblock - # ora2 - # staff-graded-xblock - # xblock-drag-and-drop-v2 - # xblock-google-drive - # xblock-utils - # xblocks-contrib -xblock-drag-and-drop-v2==5.0.6 - # via -r requirements/edx/base.txt -xblock-google-drive==0.8.2 - # via -r requirements/edx/base.txt -xblock-poll==1.15.1 - # via -r requirements/edx/base.txt -xblock-utils==4.0.0 - # via - # -r requirements/edx/base.txt - # edx-sga - # xblock-poll -xblocks-contrib==0.17.0 - # via -r requirements/edx/base.txt -xmlsec==1.3.14 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # python3-saml -xss-utils==1.0.0 - # via -r requirements/edx/base.txt -yarl==1.24.2 - # via - # -r requirements/edx/base.txt - # aiohttp -zipp==4.1.0 - # via - # -r requirements/edx/base.txt - # importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/edx/github.in b/requirements/edx/github.in deleted file mode 100644 index 7fdb2c051ce8..000000000000 --- a/requirements/edx/github.in +++ /dev/null @@ -1,89 +0,0 @@ -# This file holds all GitHub-hosted edx-platform Python dependencies. -# Such dependencies should be added here, not to kernel.in. -# That being said.... -# -# ---->>> DON'T JUST ADD NEW DEPENDENCIES!!! <<<---- -# -# Every new GitHub-hosted dependency slows down the edx-platform build and -# subverts our continuous dependency upgrade process. This file should -# only be added to in exceptional circumstances. -# -# "I don't have time to publish my package to PyPI" is **not** an -# acceptable excuse. You can add a GitHub Action workflow to automatically -# upload your package to PyPI with the push of a button: -# -# * Go to https://github.com/openedx//actions/new -# * Find "Publish Python Package" -# * Merge the generated PR and push package. -# * You're done! Add your dependency to kernel.in, and the requirements -# bot will automatically keep it fresh in edx-platform. -# -# If you think you must add a URL to this file, read this section of OEP-18 first: -# https://docs.openedx.org/projects/openedx-proposals/en/latest/best-practices/oep-0018-bp-python-dependencies.html#installing-dependencies-from-urls -# -# If you are sure that you need to install from GitHub, then -# use this exact format: -# -# # ISSUE-LINK -# git+https://github.com/OWNER/REPO-NAME.git@TAG-OR-SHA#egg=DIST-NAME==VERSION -# -# For example: -# -# # https://github.com/openedx/foobar/issues/212 -# git+https://github.com/openedx/foobar.git@v1.3.0#egg=openedx-foobar==1.3.0 -# -# where: -# -# ISSUE-LINK = https://github.com/openedx/foobar/issues/212 -# OWNER = openedx -# REPO-NAME = foobar -# TAG-OR-SHA = v1.3.0 -# DIST-NAME = openedx-foobar -# VERSION = 1.3.0 -# -# Rules to follow: -# -# * Don't leave out any of these pieces. -# -# * ISSUE-LINK points to an item in a public issue tracker. The issue -# should be in the backlog of a particular contributor or team -# who will make sure that it is resolved. -# -# * TAG-OR-SHA is the specific commit to install. It must be a git tag, -# or a git SHA commit hash. Don't use branch names here. If OWNER is -# not openedx, then it must be a SHA. If you use a SHA, -# please make sure there is a tag associated with it, so the commit can't -# be lost during rebase. -# -# * DIST-NAME is the distribution name, the same name you'd use in a -# "pip install" command. It might be different than REPO-NAME. It must -# be the same as the package name defined in the repo's pyproject.toml -# (or setup.py for older packages). -# -# * VERSION might not be the same as TAG-OR-SHA, but if the tag names the -# version, please make it match the VERSION, but with a "v" prefix. -# VERSION must be the same as the version defined in the repo's pyproject.toml -# (or setup.py for older packages). An alternative is to use 0.0 as VERSION: -# this forces pip to re-install the package each time, and can be useful when -# working with two repos before picking a version number. Don't use 0.0 on -# master, only for tight-loop work in progress. -# -# * Don't prefix the URL with "-e". That would install the package in "editable" -# mode A.K.A "development" mode, which takes longer and does not fully respect -# the package's build configuration, making the transition back to PyPI more -# complex. -# -# * Organize the URL into one of the two categories below: - - -############################################################################## -# Release candidates being tested. -############################################################################## - -# ... add dependencies here - -############################################################################## -# Critical fixes for packages that are not yet available in a PyPI release. -############################################################################## - -# ... add dependencies here diff --git a/requirements/edx/kernel.in b/requirements/edx/kernel.in deleted file mode 100644 index 8abecd6ea77a..000000000000 --- a/requirements/edx/kernel.in +++ /dev/null @@ -1,162 +0,0 @@ -# Core dependencies for running edx-platform (LMS or Studio) - --c ../constraints.txt - --r github.in # Forks and other dependencies not yet on PyPI - -# DON'T JUST ADD NEW DEPENDENCIES!!! -# Please follow these guidelines whenever you change this file: -# -# 1. When adding a new dependency: -# * add a comment to the end of the line explaining why it is needed. -# * verify that the dependency has a license compatible with AGPLv3 -# * confirm that it has no system requirements beyond what we already install -# * run "make upgrade" to update the detailed requirements files -# 2. Do not pin exact versions unless absolutely necessary. When upgrading -# an already-pinned package to its latest release, remove the version pin. -# 3. Do not add indirect dependencies unless a version constraint is needed to -# avoid versions which have known problems. -# 4. If the package is not strictly necessary for the platform to run, add it to -# another file such as bundled.in, development.in, or testing.in instead. - -acid-xblock # This XBlock is used for unit tests as well as manual tests -analytics-python # Used for Segment analytics -attrs # Reduces boilerplate code involving class attributes -Babel # Internationalization utilities, used for date formatting in a few places -boto3 # Amazon Web Services SDK for Python -botocore # via boto3, s3transfer -bridgekeeper # Used for determining permissions for courseware. Use of django-rules is preferred. -celery # Asynchronous task execution library -chem # A helper library for chemistry calculations -codejail-includes # CodeJail manages execution of untrusted code in secure sandboxes. -cryptography # Implementations of assorted cryptography algorithms -defusedxml -Django # Web application framework -django-autocomplete-light # Enhances Django admin with single-select autocomplete dropdowns for a better user experience. -django-celery-results # Only used for the CacheBackend for celery results -django-config-models # Configuration models for Django allowing config management with auditing -django-cors-headers # Used to allow to configure CORS headers for cross-domain requests -django-countries # Country data for Django forms and model fields -django-crum # Middleware that stores the current request and user in thread local storage -django-filter # Allows users to filter Django querysets dynamically -django-ipware # Get the client's real IP address -django-method-override # Allow use of HTTP methods normally not supported by browsers via the X-HTTP-Method-Override header -django-model-utils -django-mptt -django-mysql -django-oauth-toolkit # Provides oAuth2 capabilities for Django -django-pipeline -django-ratelimit -django-sekizai -django-simple-history -django-statici18n -django-storages -django-user-tasks -django-waffle -django-webpack-loader # Used to wire webpack bundles into the django asset pipeline -djangorestframework -drf-spectacular -edx-ace -edx-api-doc-tools -edx-auth-backends # Allow Studio to use LMS SSO -edx-bulk-grades # LMS REST API for managing bulk grading operations -edx-ccx-keys -edx-celeryutils -edx-completion -edx-django-release-util # Release utils for the edx release pipeline -edx-django-sites-extensions -# Codejail 4 brings important safety improvements (no unsafe mode by default) -edx-codejail>=4.0.0 -# edx-django-utils 5.14.1 adds FrontendMonitoringMiddleware -edx-django-utils>=5.14.1 # Utilities for cache, monitoring, and plugins -edx-drf-extensions -edx-enterprise -# edx-event-bus-kafka 5.6.0 adds support for putting client ids on event producers/consumers -edx-event-bus-kafka>=5.6.0 # Kafka implementation of event bus -edx-event-bus-redis -edx-milestones -edx-opaque-keys>=2.12.0 -edx-organizations -edx-proctoring>=2.0.1 -# using hash to support django42 -edx-rest-api-client -edx-search -edx-submissions -edx-toggles # Feature toggles management -edx-when -edxval -event-tracking -enmerkar-underscore # Implements a underscore extractor for django-babel. -fs -fs-s3fs -geoip2 # Python API for the GeoIP web services and databases -glob2 # Enhanced glob module, used in openedx.core.lib.rooted_paths -gunicorn -help-tokens -html5lib # HTML parser, used for capa problems -icalendar # .ics generator, used by calendar_sync -ipaddress # Ip network support for Embargo feature -importlib_metadata # Used to access entry_points in i18n_api plugin -jsonfield # Django model field for validated JSON; used in several apps -laboratory # Library for testing that code refactors/infrastructure changes produce identical results -importlib_metadata # Used to access entry_points in i18n_api plugin -lxml[html_clean] # XML parser -lti-consumer-xblock>=11.0.0 -mako # Primary template language used for server-side page rendering -Markdown # Convert text markup to HTML; used in capa problems, forums, and course wikis -meilisearch # Library to access Meilisearch search engine (will replace ElasticSearch) -mongoengine # Object-document mapper for MongoDB, used in the LMS dashboard -mysqlclient # Driver for the default production relational database -nh3 # Python bindings to the ammonia (whitelist-based HTML sanitizing library); used for capa and LTI -nodeenv # Utility for managing Node.js environments; we use this for deployments and testing -oauthlib # OAuth specification support for authenticating via LTI or other Open edX services -olxcleaner -openedx-atlas # CLI tool to manage translations -openedx-calc # Library supporting mathematical calculations for Open edX -openedx-core -openedx-django-require -openedx-events # Open edX Events from Hooks Extension Framework (OEP-50) -openedx-filters # Open edX Filters from Hooks Extension Framework (OEP-50) -openedx-forum # Open edX forum v2 application -openedx-django-wiki -path -piexif # Exif image metadata manipulation, used in the profile_images app -Pillow # Image manipulation library; used for course assets, profile images, invoice PDFs, etc. -psutil # Library for retrieving information on running processes and system utilization -pycountry -pycryptodomex -# PyJWT 1.6.3 contains PyJWTError, which is required by Apple auth in social-auth-core -PyJWT>=1.6.3 -pylti1p3 # Required by content_libraries core library to support LTI 1.3 launches -pymemcache # Python interface to the memcached memory cache daemon -pymongo # MongoDB driver -pynliner # Inlines CSS styles into HTML for email notifications -python-dateutil -python3-openid ; python_version>='3' -python3-saml -pyuca # For more accurate sorting of translated country names in django-countries -pysrt # Support for SubRip subtitle files, used in the video XModule -pytz # Time zone information database -PyYAML # Used to parse XModule resource templates -redis # celery task broker -requests-oauthlib # Simplifies use of OAuth via the requests library, used for CCX and LTI -random2 -rules # Django extension for rules-based authorization checks -social-auth-core -simplejson -Shapely # Geometry library, used for image click regions in capa -six # Utilities for supporting Python 2 & 3 in the same codebase -slumber # The following dependency is unsupported and used by the DeprecatedRestApiClient -social-auth-app-django -sorl-thumbnail -sortedcontainers # Provides SortedKeyList, used for lists of XBlock assets -stevedore # Support for runtime plugins, used for XBlocks and edx-platform Django app plugins -unicodecsv # Easier support for CSV files with unicode text -webob -web-fragments # Provides the ability to render fragments of web pages -wrapt # Better functools.wrapped. TODO: functools has since improved, maybe we can switch? -XBlock[django] # Courseware component architecture -xss-utils # https://github.com/openedx/edx-platform/pull/20633 Fix XSS via Translations -unicodeit # Converts mathjax equation to plain text by using unicode symbols -psycopg2-binary -openedx-authz # Authorization Framework for the Open edX Ecosystem diff --git a/requirements/edx/openstack.txt b/requirements/edx/openstack.txt deleted file mode 100644 index 1d576b108216..000000000000 --- a/requirements/edx/openstack.txt +++ /dev/null @@ -1,6 +0,0 @@ -# -# Dependencies for OpenStack deployments. -# - -# OpenStack swift backend for django storage API -django-storage-swift==1.2.19 diff --git a/requirements/edx/private.readme b/requirements/edx/private.readme deleted file mode 100644 index 5600a1075bcc..000000000000 --- a/requirements/edx/private.readme +++ /dev/null @@ -1,15 +0,0 @@ -# If there are any Python packages you want to keep in your virtualenv beyond -# those listed in the official requirements files, create a "private.in" file -# and list them there. Generate the corresponding "private.txt" file pinning -# all of their indirect dependencies to specific versions as follows: - -# pip-compile private.in - -# This allows you to use "pip-sync" without removing these packages: - -# pip-sync requirements/*.txt - -# "private.in" and "private.txt" aren't checked into git to avoid merge -# conflicts, and the presence of this file allows "private.*" to be -# included in scripted pip-sync usage without requiring that those files be -# created first. diff --git a/requirements/edx/semgrep.in b/requirements/edx/semgrep.in deleted file mode 100644 index 0fc07d64532b..000000000000 --- a/requirements/edx/semgrep.in +++ /dev/null @@ -1,13 +0,0 @@ -# Requirements to run Semgrep code quality checks -# -# DON'T JUST ADD NEW DEPENDENCIES!!! -# -# If you open a pull request that adds a new dependency, you should: -# * verify that the dependency has a license compatible with AGPLv3 -# * confirm that it has no system requirements beyond what we already install -# * run "make upgrade" to update the detailed requirements files -# - --c ../constraints.txt - -semgrep # Semgrep performs structural code searches diff --git a/requirements/edx/semgrep.txt b/requirements/edx/semgrep.txt deleted file mode 100644 index f1399ba335fe..000000000000 --- a/requirements/edx/semgrep.txt +++ /dev/null @@ -1,213 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# make upgrade -# -annotated-types==0.7.0 - # via pydantic -anyio==4.14.0 - # via - # httpx - # mcp - # sse-starlette - # starlette -attrs==26.1.0 - # via - # glom - # jsonschema - # referencing - # semgrep -boltons==21.0.0 - # via - # face - # glom - # semgrep -bracex==2.6 - # via wcmatch -certifi==2026.5.20 - # via - # httpcore - # httpx - # requests -cffi==2.0.0 - # via cryptography -charset-normalizer==3.4.7 - # via requests -click==8.1.8 - # via - # click-option-group - # semgrep - # uvicorn -click-option-group==0.5.9 - # via semgrep -colorama==0.4.6 - # via semgrep -cryptography==49.0.0 - # via pyjwt -exceptiongroup==1.2.2 - # via semgrep -face==26.0.0 - # via glom -glom==25.12.0 - # via semgrep -googleapis-common-protos==1.75.0 - # via opentelemetry-exporter-otlp-proto-http -h11==0.16.0 - # via - # httpcore - # uvicorn -httpcore==1.0.9 - # via httpx -httpx==0.28.1 - # via mcp -httpx-sse==0.4.3 - # via mcp -idna==3.18 - # via - # anyio - # httpx - # requests -importlib-metadata==8.7.1 - # via opentelemetry-api -jsonschema==4.25.1 - # via - # mcp - # semgrep -jsonschema-specifications==2025.9.1 - # via jsonschema -markdown-it-py==4.2.0 - # via rich -mcp==1.23.3 - # via semgrep -mdurl==0.1.2 - # via markdown-it-py -opentelemetry-api==1.37.0 - # via - # opentelemetry-exporter-otlp-proto-http - # opentelemetry-instrumentation - # opentelemetry-instrumentation-requests - # opentelemetry-instrumentation-threading - # opentelemetry-sdk - # opentelemetry-semantic-conventions - # semgrep -opentelemetry-exporter-otlp-proto-common==1.37.0 - # via opentelemetry-exporter-otlp-proto-http -opentelemetry-exporter-otlp-proto-http==1.37.0 - # via semgrep -opentelemetry-instrumentation==0.58b0 - # via - # opentelemetry-instrumentation-requests - # opentelemetry-instrumentation-threading -opentelemetry-instrumentation-requests==0.58b0 - # via semgrep -opentelemetry-instrumentation-threading==0.58b0 - # via semgrep -opentelemetry-proto==1.37.0 - # via - # opentelemetry-exporter-otlp-proto-common - # opentelemetry-exporter-otlp-proto-http -opentelemetry-sdk==1.37.0 - # via - # opentelemetry-exporter-otlp-proto-http - # semgrep -opentelemetry-semantic-conventions==0.58b0 - # via - # opentelemetry-instrumentation - # opentelemetry-instrumentation-requests - # opentelemetry-sdk -opentelemetry-util-http==0.58b0 - # via opentelemetry-instrumentation-requests -packaging==26.2 - # via - # opentelemetry-instrumentation - # semgrep -peewee==3.19.0 - # via semgrep -protobuf==6.33.6 - # via - # googleapis-common-protos - # opentelemetry-proto -pycparser==3.0 - # via cffi -pydantic==2.13.4 - # via - # mcp - # pydantic-settings -pydantic-core==2.46.4 - # via pydantic -pydantic-settings==2.14.1 - # via mcp -pygments==2.20.0 - # via rich -pyjwt[crypto]==2.13.0 - # via - # mcp - # semgrep -python-dotenv==1.2.2 - # via pydantic-settings -python-multipart==0.0.32 - # via mcp -referencing==0.37.0 - # via - # jsonschema - # jsonschema-specifications -requests==2.34.2 - # via - # opentelemetry-exporter-otlp-proto-http - # semgrep -rich==15.0.0 - # via semgrep -rpds-py==2026.5.1 - # via - # jsonschema - # referencing -ruamel-yaml==0.19.1 - # via semgrep -ruamel-yaml-clib==0.2.15 - # via semgrep -semantic-version==2.10.0 - # via semgrep -semgrep==1.166.0 - # via -r requirements/edx/semgrep.in -sse-starlette==3.4.4 - # via mcp -starlette==1.3.1 - # via - # mcp - # sse-starlette -tomli==2.4.1 - # via semgrep -typing-extensions==4.15.0 - # via - # anyio - # mcp - # opentelemetry-api - # opentelemetry-exporter-otlp-proto-http - # opentelemetry-sdk - # opentelemetry-semantic-conventions - # pydantic - # pydantic-core - # referencing - # semgrep - # starlette - # typing-inspection -typing-inspection==0.4.2 - # via - # mcp - # pydantic - # pydantic-settings -urllib3==2.7.0 - # via - # requests - # semgrep -uvicorn==0.49.0 - # via mcp -wcmatch==8.5.2 - # via semgrep -wrapt==1.17.3 - # via - # opentelemetry-instrumentation - # opentelemetry-instrumentation-threading -zipp==4.1.0 - # via importlib-metadata diff --git a/requirements/edx/testing.in b/requirements/edx/testing.in deleted file mode 100644 index b84fd39e3cab..000000000000 --- a/requirements/edx/testing.in +++ /dev/null @@ -1,49 +0,0 @@ -# This requirements file is only for python packages that need to be installed -# for the edx-platform in testing environments. This includes: -# * Jenkins -# * devstack -# Please do not use this file for packages that are needed in production -# -# DON'T JUST ADD NEW DEPENDENCIES!!! -# -# If you open a pull request that adds a new dependency, you should: -# * verify that the dependency has a license compatible with AGPLv3 -# * confirm that it has no system requirements beyond what we already install -# * run "make upgrade" to update the detailed requirements files -# * add an appropriate pattern to scripts/dependencies/testing.py - --c ../constraints.txt - --r base.txt # Core edx-platform production dependencies --r coverage.txt # Utilities for calculating test coverage - -beautifulsoup4 # Library for extracting data from HTML and XML files -code-annotations # Perform code annotation checking, such as for PII annotations -cssselect # Used to extract HTML fragments via CSS selectors in 2 test cases and pyquery -ddt # Run a test case multiple times with different input; used in many, many of our tests -edx-lint # pylint extensions for Open edX repositories -factory-boy # Library for creating test fixtures, used in many tests -# Pinning the freezegun version because 0.3.13 is causing failures which have also been reported on the git repo by public. -freezegun # Allows tests to mock the output of assorted datetime module functions -httpretty # Library for mocking HTTP requests, used in many tests -import-linter # Tool for making assertions about which modules can import which others -mock # Deprecated alias to standard library `unittest.mock` -ruff # Fast Python linter and formatter -polib # Library for manipulating gettext translation files, used to test paver i18n commands -pyquery # jQuery-like API for retrieving fragments of HTML and XML files in tests -pytest # Testing framework -pytest-attrib # Select tests based on attributes -pytest-cov # pytest plugin for measuring code coverage -pytest-django # Django support for pytest -pytest-json-report # Output json formatted warnings after running pytest -pytest-metadata # To prevent 'make upgrade' failure, dependency of pytest-json-report -pytest-randomly # pytest plugin to randomly order tests -pytest-reportlog # Per-test timing data including setup/teardown (used for shard rebalancing) -pytest-xdist[psutil] # Parallel execution of tests on multiple CPU cores or hosts -singledispatch # Backport of functools.singledispatch from Python 3.4+, used in tests of XBlock rendering -testfixtures # Provides a LogCapture utility used by several tests -tox # virtualenv management for tests -unidiff # Required by coverage_pytest_plugin -pylint-pytest # A Pylint plugin to suppress pytest-related false positives. -pact-python # Library for contract testing -py # Needed for pytest configurations, was previously been fetched through tox diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt deleted file mode 100644 index 6743c9ac2b45..000000000000 --- a/requirements/edx/testing.txt +++ /dev/null @@ -1,1763 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# make upgrade -# -acid-xblock==0.4.1 - # via -r requirements/edx/base.txt -aiohappyeyeballs==2.6.2 - # via - # -r requirements/edx/base.txt - # aiohttp -aiohttp==3.14.1 - # via - # -r requirements/edx/base.txt - # geoip2 -aiosignal==1.4.0 - # via - # -r requirements/edx/base.txt - # aiohttp -amqp==5.3.1 - # via - # -r requirements/edx/base.txt - # kombu -analytics-python==1.4.post1 - # via -r requirements/edx/base.txt -aniso8601==10.0.1 - # via - # -r requirements/edx/base.txt - # edx-tincan-py35 - # tincan -annotated-types==0.7.0 - # via - # -r requirements/edx/base.txt - # pydantic -anyio==4.14.0 - # via - # -r requirements/edx/base.txt - # httpx -appdirs==1.4.4 - # via - # -r requirements/edx/base.txt - # fs -asgiref==3.11.1 - # via - # -r requirements/edx/base.txt - # django - # django-cors-headers - # django-countries -asn1crypto==1.5.1 - # via - # -r requirements/edx/base.txt - # snowflake-connector-python -astroid==4.0.4 - # via - # -c requirements/constraints.txt - # pylint - # pylint-celery -attrs==26.1.0 - # via - # -r requirements/edx/base.txt - # aiohttp - # edx-ace - # jsonschema - # lti-consumer-xblock - # openedx-authz - # openedx-core - # openedx-events - # referencing -babel==2.18.0 - # via - # -r requirements/edx/base.txt - # enmerkar - # enmerkar-underscore -backoff==1.10.0 - # via - # -r requirements/edx/base.txt - # analytics-python -bcrypt==5.0.0 - # via - # -r requirements/edx/base.txt - # paramiko -beautifulsoup4==4.15.0 - # via - # -r requirements/edx/base.txt - # -r requirements/edx/testing.in - # openedx-forum - # pynliner - # xblocks-contrib -billiard==4.2.4 - # via - # -r requirements/edx/base.txt - # celery -bleach[css]==6.4.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # lti-consumer-xblock - # openedx-django-wiki - # ora2 - # xblock-drag-and-drop-v2 - # xblock-poll -boto3==1.43.30 - # via - # -r requirements/edx/base.txt - # django-ses - # fs-s3fs - # ora2 - # snowflake-connector-python -botocore==1.43.30 - # via - # -r requirements/edx/base.txt - # boto3 - # s3transfer - # snowflake-connector-python -bracex==2.6 - # via - # -r requirements/edx/base.txt - # wcmatch -bridgekeeper==0.9 - # via -r requirements/edx/base.txt -cachecontrol==0.14.4 - # via - # -r requirements/edx/base.txt - # firebase-admin -cachetools==7.1.4 - # via - # -r requirements/edx/base.txt - # edxval - # tox -camel-converter[pydantic]==5.1.0 - # via - # -r requirements/edx/base.txt - # meilisearch -casbin-django-orm-adapter==1.7.0 - # via - # -r requirements/edx/base.txt - # openedx-authz -celery==5.6.3 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # django-celery-results - # django-user-tasks - # edx-celeryutils - # edx-enterprise - # enterprise-integrated-channels - # event-tracking - # openedx-core -certifi==2026.5.20 - # via - # -r requirements/edx/base.txt - # elasticsearch - # httpcore - # httpx - # requests - # snowflake-connector-python -cffi==2.0.0 - # via - # -r requirements/edx/base.txt - # cryptography - # pact-python-ffi - # pynacl -chardet==7.4.3 - # via - # -r requirements/edx/base.txt - # -r requirements/edx/coverage.txt - # diff-cover - # encutils - # pysrt -charset-normalizer==3.4.7 - # via - # -r requirements/edx/base.txt - # requests - # snowflake-connector-python -chem==2.0.0 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -click==8.4.1 - # via - # -r requirements/edx/base.txt - # celery - # click-didyoumean - # click-log - # click-plugins - # click-repl - # code-annotations - # edx-django-utils - # edx-lint - # import-linter - # nltk -click-didyoumean==0.3.1 - # via - # -r requirements/edx/base.txt - # celery -click-log==0.4.0 - # via edx-lint -click-plugins==1.1.1.2 - # via - # -r requirements/edx/base.txt - # celery -click-repl==0.3.0 - # via - # -r requirements/edx/base.txt - # celery -code-annotations==3.0.0 - # via - # -r requirements/edx/base.txt - # -r requirements/edx/testing.in - # edx-enterprise - # edx-lint - # edx-toggles -codejail-includes==2.0.0 - # via -r requirements/edx/base.txt -colorama==0.4.6 - # via tox -coverage[toml]==7.14.1 - # via - # -r requirements/edx/coverage.txt - # pytest-cov -crowdsourcehinter-xblock==1.0.1 - # via -r requirements/edx/base.txt -cryptography==49.0.0 - # via - # -r requirements/edx/base.txt - # django-fernet-fields-v2 - # edx-enterprise - # google-auth - # jwcrypto - # paramiko - # pgpy - # pyjwt - # pyopenssl - # snowflake-connector-python - # social-auth-core -cssselect==1.4.0 - # via - # -r requirements/edx/testing.in - # pyquery -cssutils==2.15.0 - # via - # -r requirements/edx/base.txt - # pynliner -ddt==1.7.2 - # via -r requirements/edx/testing.in -defusedxml==0.7.1 - # via - # -r requirements/edx/base.txt - # djangorestframework-xml - # ora2 - # python3-openid - # social-auth-core - # xblocks-contrib -diff-cover==10.3.0 - # via -r requirements/edx/coverage.txt -dill==0.4.1 - # via pylint -distlib==0.4.3 - # via virtualenv -django==5.2.15 - # via - # -c requirements/common_constraints.txt - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # casbin-django-orm-adapter - # django-appconf - # django-autocomplete-light - # django-celery-results - # django-classy-tags - # django-config-models - # django-cors-headers - # django-crum - # django-fernet-fields-v2 - # django-filter - # django-js-asset - # django-method-override - # django-model-utils - # django-multi-email-field - # django-mysql - # django-oauth-toolkit - # django-push-notifications - # django-sekizai - # django-ses - # django-simple-history - # django-statici18n - # django-storages - # django-user-tasks - # django-waffle - # djangorestframework - # done-xblock - # drf-jwt - # drf-spectacular - # drf-yasg - # edx-ace - # edx-api-doc-tools - # edx-auth-backends - # edx-bulk-grades - # edx-celeryutils - # edx-completion - # edx-django-release-util - # edx-django-sites-extensions - # edx-django-utils - # edx-drf-extensions - # edx-enterprise - # edx-event-bus-kafka - # edx-event-bus-redis - # edx-i18n-tools - # edx-milestones - # edx-organizations - # edx-proctoring - # edx-rbac - # edx-search - # edx-submissions - # edx-toggles - # edx-when - # edxval - # enmerkar - # enmerkar-underscore - # enterprise-integrated-channels - # event-tracking - # help-tokens - # jsonfield - # lti-consumer-xblock - # openedx-authz - # openedx-core - # openedx-django-pyfs - # openedx-django-wiki - # openedx-events - # openedx-filters - # openedx-forum - # ora2 - # social-auth-app-django - # super-csv - # xblock-google-drive - # xblocks-contrib - # xss-utils -django-appconf==1.2.0 - # via - # -r requirements/edx/base.txt - # django-statici18n -django-autocomplete-light==4.0.3 - # via -r requirements/edx/base.txt -django-cache-memoize==0.2.1 - # via - # -r requirements/edx/base.txt - # edx-enterprise -django-celery-results==2.6.0 - # via -r requirements/edx/base.txt -django-classy-tags==4.1.0 - # via - # -r requirements/edx/base.txt - # django-sekizai -django-config-models==3.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels - # lti-consumer-xblock -django-cors-headers==4.9.0 - # via -r requirements/edx/base.txt -django-countries==9.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -django-crum==0.7.9 - # via - # -r requirements/edx/base.txt - # edx-django-utils - # edx-enterprise - # edx-proctoring - # edx-rbac - # edx-toggles - # openedx-authz - # super-csv -django-fernet-fields-v2==0.9 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels -django-filter==25.2 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # lti-consumer-xblock -django-ipware==7.0.1 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-proctoring -django-js-asset==4.0.1 - # via - # -r requirements/edx/base.txt - # django-mptt -django-method-override==1.0.4 - # via -r requirements/edx/base.txt -django-model-utils==5.0.0 - # via - # -r requirements/edx/base.txt - # django-user-tasks - # edx-bulk-grades - # edx-celeryutils - # edx-completion - # edx-enterprise - # edx-milestones - # edx-organizations - # edx-proctoring - # edx-rbac - # edx-submissions - # edx-when - # edxval - # enterprise-integrated-channels - # ora2 - # super-csv -django-mptt==0.18.0 - # via - # -r requirements/edx/base.txt - # openedx-django-wiki -django-multi-email-field==0.8.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -django-mysql==4.19.0 - # via -r requirements/edx/base.txt -django-oauth-toolkit==1.7.1 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels -django-object-actions==5.1.2 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels -django-pipeline==4.1.0 - # via -r requirements/edx/base.txt -django-push-notifications==3.3.0 - # via - # -r requirements/edx/base.txt - # edx-ace -django-ratelimit==4.1.0 - # via -r requirements/edx/base.txt -django-sekizai==4.1.0 - # via - # -r requirements/edx/base.txt - # openedx-django-wiki -django-ses==4.7.2 - # via -r requirements/edx/base.txt -django-simple-history==3.11.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-organizations - # edx-proctoring - # enterprise-integrated-channels - # ora2 -django-statici18n==2.7.1 - # via - # -r requirements/edx/base.txt - # lti-consumer-xblock - # xblock-drag-and-drop-v2 - # xblock-poll -django-storages==1.14.6 - # via - # -r requirements/edx/base.txt - # edxval -django-user-tasks==4.0.0 - # via -r requirements/edx/base.txt -django-waffle==5.0.0 - # via - # -r requirements/edx/base.txt - # edx-django-utils - # edx-drf-extensions - # edx-enterprise - # edx-proctoring - # edx-toggles - # openedx-authz -django-webpack-loader==3.2.4 - # via - # -r requirements/edx/base.txt - # edx-proctoring -djangorestframework==3.17.1 - # via - # -r requirements/edx/base.txt - # django-config-models - # django-user-tasks - # drf-jwt - # drf-spectacular - # drf-yasg - # edx-api-doc-tools - # edx-completion - # edx-drf-extensions - # edx-enterprise - # edx-organizations - # edx-proctoring - # edx-submissions - # openedx-authz - # openedx-core - # openedx-forum - # ora2 - # super-csv -djangorestframework-xml==2.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -dnspython==2.8.0 - # via - # -r requirements/edx/base.txt - # pymongo -done-xblock==3.0.0 - # via -r requirements/edx/base.txt -drf-jwt==1.19.2 - # via - # -r requirements/edx/base.txt - # edx-drf-extensions -drf-spectacular==0.29.0 - # via -r requirements/edx/base.txt -drf-yasg==1.21.15 - # via - # -r requirements/edx/base.txt - # django-user-tasks - # edx-api-doc-tools -edx-ace==1.15.0 - # via -r requirements/edx/base.txt -edx-api-doc-tools==3.0.0 - # via - # -r requirements/edx/base.txt - # openedx-authz -edx-auth-backends==5.0.0 - # via -r requirements/edx/base.txt -edx-bulk-grades==2.0.0 - # via - # -r requirements/edx/base.txt - # staff-graded-xblock -edx-ccx-keys==2.0.2 - # via - # -r requirements/edx/base.txt - # lti-consumer-xblock - # openedx-authz - # openedx-events -edx-celeryutils==2.0.0 - # via - # -r requirements/edx/base.txt - # super-csv -edx-codejail==4.1.0 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -edx-completion==5.0.0 - # via -r requirements/edx/base.txt -edx-django-release-util==1.5.0 - # via - # -r requirements/edx/base.txt - # edx-submissions - # edxval -edx-django-sites-extensions==6.0.0 - # via -r requirements/edx/base.txt -edx-django-utils==8.0.1 - # via - # -r requirements/edx/base.txt - # django-config-models - # edx-ace - # edx-auth-backends - # edx-drf-extensions - # edx-enterprise - # edx-event-bus-kafka - # edx-event-bus-redis - # edx-rest-api-client - # edx-toggles - # edx-when - # enterprise-integrated-channels - # event-tracking - # openedx-authz - # openedx-events - # ora2 - # super-csv - # xblocks-contrib -edx-drf-extensions==10.6.0 - # via - # -r requirements/edx/base.txt - # edx-completion - # edx-enterprise - # edx-organizations - # edx-proctoring - # edx-rbac - # edx-when - # edxval - # enterprise-integrated-channels - # openedx-authz - # openedx-core -edx-enterprise==8.3.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt -edx-event-bus-kafka==6.1.0 - # via -r requirements/edx/base.txt -edx-event-bus-redis==1.0.0 - # via -r requirements/edx/base.txt -edx-i18n-tools==2.0.0 - # via - # -r requirements/edx/base.txt - # ora2 -edx-lint==6.1.0 - # via -r requirements/edx/testing.in -edx-milestones==2.0.0 - # via -r requirements/edx/base.txt -edx-opaque-keys[django]==4.0.0 - # via - # -r requirements/edx/base.txt - # edx-bulk-grades - # edx-ccx-keys - # edx-completion - # edx-drf-extensions - # edx-enterprise - # edx-milestones - # edx-organizations - # edx-proctoring - # edx-when - # enterprise-integrated-channels - # lti-consumer-xblock - # openedx-authz - # openedx-events - # openedx-filters - # ora2 - # xblock - # xblocks-contrib -edx-organizations==8.0.0 - # via - # -r requirements/edx/base.txt - # openedx-authz - # openedx-core -edx-proctoring==5.2.0 - # via -r requirements/edx/base.txt -edx-rbac==3.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels -edx-rest-api-client==7.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-proctoring - # enterprise-integrated-channels -edx-search==5.0.1 - # via - # -r requirements/edx/base.txt - # openedx-forum -edx-sga==0.28.0 - # via -r requirements/edx/base.txt -edx-submissions==4.0.0 - # via - # -r requirements/edx/base.txt - # ora2 - # xblocks-contrib -edx-tincan-py35==2.0.0 - # via - # -r requirements/edx/base.txt - # enterprise-integrated-channels -edx-toggles==6.0.0 - # via - # -r requirements/edx/base.txt - # edx-auth-backends - # edx-completion - # edx-enterprise - # edx-event-bus-kafka - # edx-event-bus-redis - # edx-search - # edxval - # event-tracking - # ora2 - # xblocks-contrib -edx-when==4.0.0 - # via - # -r requirements/edx/base.txt - # edx-proctoring -edxval==4.0.1 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -elasticsearch==7.9.1 - # via - # -c requirements/common_constraints.txt - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-search - # openedx-forum -encutils==1.0.0 - # via - # -r requirements/edx/base.txt - # cssutils -enmerkar==0.7.1 - # via - # -r requirements/edx/base.txt - # enmerkar-underscore -enmerkar-underscore==2.4.0 - # via -r requirements/edx/base.txt -enterprise-integrated-channels==0.1.60 - # via -r requirements/edx/base.txt -event-tracking==4.0.2 - # via - # -r requirements/edx/base.txt - # edx-completion - # edx-proctoring - # edx-search -execnet==2.1.2 - # via pytest-xdist -factory-boy==3.3.3 - # via -r requirements/edx/testing.in -faker==40.23.0 - # via factory-boy -fastavro==1.12.2 - # via - # -r requirements/edx/base.txt - # openedx-events -filelock==3.29.4 - # via - # -r requirements/edx/base.txt - # python-discovery - # snowflake-connector-python - # tox - # virtualenv -firebase-admin==7.4.0 - # via - # -r requirements/edx/base.txt - # edx-ace -freezegun==1.5.5 - # via -r requirements/edx/testing.in -frozenlist==1.8.0 - # via - # -r requirements/edx/base.txt - # aiohttp - # aiosignal -fs==2.4.16 - # via - # -r requirements/edx/base.txt - # fs-s3fs - # openedx-django-pyfs - # xblock - # xblocks-contrib -fs-s3fs==1.1.1 - # via - # -r requirements/edx/base.txt - # openedx-django-pyfs -geoip2==5.2.0 - # via -r requirements/edx/base.txt -glob2==0.7 - # via -r requirements/edx/base.txt -google-api-core[grpc]==2.31.0 - # via - # -r requirements/edx/base.txt - # firebase-admin - # google-cloud-core - # google-cloud-firestore - # google-cloud-storage -google-auth==2.55.0 - # via - # -r requirements/edx/base.txt - # google-api-core - # google-cloud-core - # google-cloud-firestore - # google-cloud-storage -google-cloud-core==2.6.0 - # via - # -r requirements/edx/base.txt - # google-cloud-firestore - # google-cloud-storage -google-cloud-firestore==2.27.0 - # via - # -r requirements/edx/base.txt - # firebase-admin -google-cloud-storage==3.12.0 - # via - # -r requirements/edx/base.txt - # firebase-admin -google-crc32c==1.8.0 - # via - # -r requirements/edx/base.txt - # google-cloud-storage - # google-resumable-media -google-resumable-media==2.10.0 - # via - # -r requirements/edx/base.txt - # google-cloud-storage -googleapis-common-protos==1.75.0 - # via - # -r requirements/edx/base.txt - # google-api-core - # grpcio-status -grimp==3.14 - # via import-linter -grpcio==1.81.1 - # via - # -r requirements/edx/base.txt - # google-api-core - # google-cloud-firestore - # grpcio-status -grpcio-status==1.81.1 - # via - # -r requirements/edx/base.txt - # google-api-core -gunicorn==26.0.0 - # via -r requirements/edx/base.txt -h11==0.16.0 - # via - # -r requirements/edx/base.txt - # httpcore -h2==4.3.0 - # via - # -r requirements/edx/base.txt - # httpx -help-tokens==4.0.0 - # via -r requirements/edx/base.txt -hpack==4.1.0 - # via - # -r requirements/edx/base.txt - # h2 -html5lib==1.1 - # via - # -r requirements/edx/base.txt - # ora2 - # xblocks-contrib -httpcore==1.0.9 - # via - # -r requirements/edx/base.txt - # httpx -httpretty==1.1.4 - # via -r requirements/edx/testing.in -httpx[http2]==0.28.1 - # via - # -r requirements/edx/base.txt - # firebase-admin - # typesense -hyperframe==6.1.0 - # via - # -r requirements/edx/base.txt - # h2 -icalendar==7.1.3 - # via -r requirements/edx/base.txt -idna==3.18 - # via - # -r requirements/edx/base.txt - # anyio - # httpx - # optimizely-sdk - # requests - # snowflake-connector-python - # yarl -import-linter==2.11 - # via -r requirements/edx/testing.in -importlib-metadata==9.0.0 - # via -r requirements/edx/base.txt -inflection==0.5.1 - # via - # -r requirements/edx/base.txt - # drf-spectacular - # drf-yasg -iniconfig==2.3.0 - # via pytest -invoke==3.0.3 - # via - # -r requirements/edx/base.txt - # paramiko -ipaddress==1.0.23 - # via -r requirements/edx/base.txt -isodate==0.7.2 - # via - # -r requirements/edx/base.txt - # python3-saml -isort==8.0.1 - # via pylint -jinja2==3.1.6 - # via - # -r requirements/edx/base.txt - # -r requirements/edx/coverage.txt - # code-annotations - # diff-cover -jmespath==1.1.0 - # via - # -r requirements/edx/base.txt - # boto3 - # botocore -joblib==1.5.3 - # via - # -r requirements/edx/base.txt - # nltk -jsondiff==2.2.1 - # via - # -r requirements/edx/base.txt - # edx-enterprise -jsonfield==3.2.0 - # via - # -r requirements/edx/base.txt - # edx-celeryutils - # edx-enterprise - # edx-proctoring - # edx-submissions - # enterprise-integrated-channels - # lti-consumer-xblock - # ora2 -jsonschema==4.26.0 - # via - # -r requirements/edx/base.txt - # drf-spectacular - # optimizely-sdk -jsonschema-specifications==2025.9.1 - # via - # -r requirements/edx/base.txt - # jsonschema -jwcrypto==1.5.7 - # via - # -r requirements/edx/base.txt - # django-oauth-toolkit - # pylti1p3 -kombu==5.6.2 - # via - # -r requirements/edx/base.txt - # celery -laboratory==1.0.2 - # via -r requirements/edx/base.txt -lazy==1.6 - # via - # -r requirements/edx/base.txt - # acid-xblock - # lti-consumer-xblock - # ora2 - # xblock -lti-consumer-xblock==11.3.1 - # via -r requirements/edx/base.txt -lxml[html-clean]==5.3.2 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-enterprise - # edx-i18n-tools - # edxval - # lti-consumer-xblock - # lxml-html-clean - # olxcleaner - # openedx-calc - # ora2 - # pyquery - # python3-saml - # xblock - # xblocks-contrib - # xmlsec -lxml-html-clean==0.4.4 - # via - # -r requirements/edx/base.txt - # lxml -mailsnake==1.6.4 - # via -r requirements/edx/base.txt -mako==1.3.12 - # via - # -r requirements/edx/base.txt - # acid-xblock - # lti-consumer-xblock - # xblock - # xblock-utils -markdown==3.10.2 - # via - # -r requirements/edx/base.txt - # openedx-django-wiki - # staff-graded-xblock - # xblock-poll -markdown-it-py==4.2.0 - # via rich -markupsafe==3.0.3 - # via - # -r requirements/edx/base.txt - # -r requirements/edx/coverage.txt - # chem - # jinja2 - # mako - # openedx-calc - # xblock - # xblocks-contrib -maxminddb==3.1.1 - # via - # -r requirements/edx/base.txt - # geoip2 -mccabe==0.7.0 - # via pylint -mdurl==0.1.2 - # via markdown-it-py -meilisearch==0.41.0 - # via - # -r requirements/edx/base.txt - # edx-search -mock==5.2.0 - # via -r requirements/edx/testing.in -mongoengine==0.29.3 - # via -r requirements/edx/base.txt -monotonic==1.6 - # via - # -r requirements/edx/base.txt - # analytics-python -more-itertools==11.1.0 - # via - # -r requirements/edx/base.txt - # cssutils -mpmath==1.3.0 - # via - # -r requirements/edx/base.txt - # sympy -msgpack==1.2.0 - # via - # -r requirements/edx/base.txt - # cachecontrol -multidict==6.7.1 - # via - # -r requirements/edx/base.txt - # aiohttp - # yarl -mysqlclient==2.2.8 - # via - # -r requirements/edx/base.txt - # openedx-forum -nh3==0.3.5 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -nltk==3.9.4 - # via - # -r requirements/edx/base.txt - # chem -nodeenv==1.10.0 - # via -r requirements/edx/base.txt -numpy==1.26.4 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # chem - # openedx-calc - # scipy - # shapely - # xblocks-contrib -oauthlib==3.3.1 - # via - # -r requirements/edx/base.txt - # django-oauth-toolkit - # lti-consumer-xblock - # requests-oauthlib - # social-auth-core - # xblocks-contrib -olxcleaner==0.3.0 - # via -r requirements/edx/base.txt -openedx-atlas==0.7.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels - # openedx-authz - # openedx-forum -openedx-authz==1.19.0 - # via -r requirements/edx/base.txt -openedx-calc==5.0.0 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -openedx-core==1.1.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt -openedx-django-pyfs==4.0.0 - # via - # -r requirements/edx/base.txt - # xblock -openedx-django-require==3.0.0 - # via -r requirements/edx/base.txt -openedx-django-wiki==3.1.2 - # via -r requirements/edx/base.txt -openedx-events==11.2.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-event-bus-kafka - # edx-event-bus-redis - # event-tracking - # lti-consumer-xblock - # openedx-authz - # openedx-core - # ora2 -openedx-filters==3.5.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # lti-consumer-xblock - # ora2 -openedx-forum==0.4.3 - # via -r requirements/edx/base.txt -optimizely-sdk==5.5.0 - # via -r requirements/edx/base.txt -ora2==7.1.0 - # via -r requirements/edx/base.txt -packaging==26.2 - # via - # -r requirements/edx/base.txt - # drf-yasg - # gunicorn - # kombu - # pyproject-api - # pytest - # snowflake-connector-python - # tox - # wheel -pact-python==3.4.0 - # via -r requirements/edx/testing.in -pact-python-ffi==0.5.4.0 - # via pact-python -paramiko==5.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -path==16.11.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-i18n-tools - # path-py - # xblocks-contrib -path-py==12.5.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # ora2 - # staff-graded-xblock -pgpy==0.6.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -piexif==1.1.3 - # via -r requirements/edx/base.txt -pillow==12.2.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-organizations - # edxval -platformdirs==4.10.0 - # via - # -r requirements/edx/base.txt - # pylint - # python-discovery - # snowflake-connector-python - # tox - # virtualenv -pluggy==1.6.0 - # via - # -r requirements/edx/coverage.txt - # diff-cover - # pytest - # pytest-cov - # tox -polib==1.2.0 - # via - # -r requirements/edx/base.txt - # -r requirements/edx/testing.in - # edx-i18n-tools -prompt-toolkit==3.0.52 - # via - # -r requirements/edx/base.txt - # click-repl -propcache==0.5.2 - # via - # -r requirements/edx/base.txt - # aiohttp - # yarl -proto-plus==1.28.0 - # via - # -r requirements/edx/base.txt - # google-api-core - # google-cloud-firestore -protobuf==7.35.1 - # via - # -r requirements/edx/base.txt - # google-api-core - # google-cloud-firestore - # googleapis-common-protos - # grpcio-status - # proto-plus -psutil==7.2.2 - # via - # -r requirements/edx/base.txt - # edx-django-utils - # pytest-xdist -psycopg2-binary==2.9.12 - # via -r requirements/edx/base.txt -py==1.11.0 - # via -r requirements/edx/testing.in -pyasn1==0.6.3 - # via - # -r requirements/edx/base.txt - # pgpy - # pyasn1-modules -pyasn1-modules==0.4.2 - # via - # -r requirements/edx/base.txt - # google-auth -pycasbin==2.8.0 - # via - # -r requirements/edx/base.txt - # casbin-django-orm-adapter - # openedx-authz -pycountry==26.2.16 - # via -r requirements/edx/base.txt -pycparser==3.0 - # via - # -r requirements/edx/base.txt - # cffi -pycryptodomex==3.23.0 - # via - # -r requirements/edx/base.txt - # edx-proctoring - # lti-consumer-xblock -pydantic==2.13.4 - # via - # -r requirements/edx/base.txt - # camel-converter -pydantic-core==2.46.4 - # via - # -r requirements/edx/base.txt - # pydantic -pygments==2.20.0 - # via - # -r requirements/edx/coverage.txt - # diff-cover - # rich -pyjwt[crypto]==2.13.0 - # via - # -r requirements/edx/base.txt - # drf-jwt - # edx-auth-backends - # edx-drf-extensions - # edx-proctoring - # edx-rest-api-client - # firebase-admin - # lti-consumer-xblock - # pylti1p3 - # snowflake-connector-python - # social-auth-core -pylatexenc==2.10 - # via - # -r requirements/edx/base.txt - # olxcleaner -pylint==4.0.6 - # via - # edx-lint - # pylint-celery - # pylint-django - # pylint-plugin-utils - # pylint-pytest -pylint-celery==0.3 - # via edx-lint -pylint-django==2.7.0 - # via edx-lint -pylint-plugin-utils==0.9.0 - # via - # pylint-celery - # pylint-django -pylint-pytest==1.1.8 - # via -r requirements/edx/testing.in -pylti1p3==2.0.0 - # via -r requirements/edx/base.txt -pymemcache==4.0.0 - # via -r requirements/edx/base.txt -pymongo==4.4.0 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-opaque-keys - # event-tracking - # mongoengine - # openedx-forum -pynacl==1.6.2 - # via - # -r requirements/edx/base.txt - # edx-django-utils - # paramiko -pynliner==0.8.0 - # via -r requirements/edx/base.txt -pyopenssl==26.3.0 - # via - # -r requirements/edx/base.txt - # snowflake-connector-python -pyparsing==3.3.2 - # via - # -r requirements/edx/base.txt - # chem - # openedx-calc - # xblocks-contrib -pyproject-api==1.10.1 - # via tox -pyquery==2.0.1 - # via -r requirements/edx/testing.in -pyrsistent==0.20.0 - # via - # -r requirements/edx/base.txt - # optimizely-sdk -pysrt==1.1.2 - # via - # -r requirements/edx/base.txt - # edxval -pytest==8.2.0 - # via - # -r requirements/edx/testing.in - # pylint-pytest - # pytest-attrib - # pytest-cov - # pytest-django - # pytest-json-report - # pytest-metadata - # pytest-randomly - # pytest-reportlog - # pytest-xdist -pytest-attrib==0.1.3 - # via -r requirements/edx/testing.in -pytest-cov==7.1.0 - # via -r requirements/edx/testing.in -pytest-django==4.12.0 - # via -r requirements/edx/testing.in -pytest-json-report==1.5.0 - # via -r requirements/edx/testing.in -pytest-metadata==3.1.1 - # via - # -r requirements/edx/testing.in - # pytest-json-report -pytest-randomly==4.1.0 - # via -r requirements/edx/testing.in -pytest-reportlog==1.0.0 - # via -r requirements/edx/testing.in -pytest-xdist[psutil]==3.8.0 - # via -r requirements/edx/testing.in -python-dateutil==2.9.0.post0 - # via - # -r requirements/edx/base.txt - # analytics-python - # botocore - # celery - # edx-ace - # edx-enterprise - # edx-proctoring - # freezegun - # icalendar - # olxcleaner - # ora2 - # xblock -python-discovery==1.4.2 - # via - # tox - # virtualenv -python-ipware==3.0.0 - # via - # -r requirements/edx/base.txt - # django-ipware -python-slugify==8.0.4 - # via - # -r requirements/edx/base.txt - # code-annotations -python-swiftclient==4.10.0 - # via - # -r requirements/edx/base.txt - # ora2 -python3-openid==3.2.0 ; python_version >= "3" - # via - # -r requirements/edx/base.txt - # social-auth-core -python3-saml==1.16.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -pytz==2026.2 - # via - # -r requirements/edx/base.txt - # drf-yasg - # edx-completion - # edx-enterprise - # edx-proctoring - # edx-submissions - # edx-tincan-py35 - # enterprise-integrated-channels - # event-tracking - # olxcleaner - # ora2 - # snowflake-connector-python - # tincan - # xblock - # xblocks-contrib -pyuca==1.2 - # via -r requirements/edx/base.txt -pyyaml==6.0.3 - # via - # -r requirements/edx/base.txt - # code-annotations - # drf-spectacular - # drf-yasg - # edx-django-release-util - # edx-i18n-tools - # jsondiff - # xblock -random2==1.0.2 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -recommender-xblock==5.0.0 - # via -r requirements/edx/base.txt -redis==8.0.0 - # via - # -r requirements/edx/base.txt - # walrus -referencing==0.37.0 - # via - # -r requirements/edx/base.txt - # jsonschema - # jsonschema-specifications -regex==2026.5.9 - # via - # -r requirements/edx/base.txt - # nltk -requests==2.34.2 - # via - # -r requirements/edx/base.txt - # analytics-python - # cachecontrol - # django-oauth-toolkit - # edx-bulk-grades - # edx-drf-extensions - # edx-enterprise - # edx-rest-api-client - # enterprise-integrated-channels - # geoip2 - # google-api-core - # google-cloud-storage - # mailsnake - # meilisearch - # openedx-forum - # optimizely-sdk - # pylti1p3 - # python-swiftclient - # requests-oauthlib - # sailthru-client - # slumber - # snowflake-connector-python - # social-auth-core - # xblock-google-drive - # xblocks-contrib -requests-oauthlib==2.0.0 - # via - # -r requirements/edx/base.txt - # social-auth-core -rich==15.0.0 - # via import-linter -rpds-py==2026.5.1 - # via - # -r requirements/edx/base.txt - # jsonschema - # referencing -ruff==0.15.17 - # via -r requirements/edx/testing.in -rules==3.5 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # edx-proctoring - # openedx-core -s3transfer==0.18.0 - # via - # -r requirements/edx/base.txt - # boto3 -sailthru-client==2.2.3 - # via - # -r requirements/edx/base.txt - # edx-ace -scipy==1.17.1 - # via - # -r requirements/edx/base.txt - # chem -semantic-version==2.10.0 - # via - # -r requirements/edx/base.txt - # edx-drf-extensions -shapely==2.1.2 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -simpleeval==1.0.7 - # via - # -r requirements/edx/base.txt - # pycasbin -simplejson==4.1.1 - # via - # -r requirements/edx/base.txt - # sailthru-client - # super-csv - # xblock - # xblock-utils - # xblocks-contrib -singledispatch==4.1.2 - # via -r requirements/edx/testing.in -six==1.17.0 - # via - # -r requirements/edx/base.txt - # analytics-python - # crowdsourcehinter-xblock - # edx-ace - # edx-auth-backends - # edx-ccx-keys - # edx-codejail - # edx-django-release-util - # edx-lint - # edx-milestones - # edx-rbac - # event-tracking - # fs - # fs-s3fs - # html5lib - # python-dateutil -slumber==0.7.1 - # via - # -r requirements/edx/base.txt - # edx-bulk-grades - # edx-enterprise - # enterprise-integrated-channels -snowflake-connector-python==4.6.0 - # via - # -r requirements/edx/base.txt - # enterprise-integrated-channels -social-auth-app-django==5.4.1 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # edx-auth-backends - # edx-enterprise -social-auth-core==4.9.1 - # via - # -r requirements/edx/base.txt - # edx-auth-backends - # social-auth-app-django -sorl-thumbnail==13.0.0 - # via - # -r requirements/edx/base.txt - # openedx-django-wiki -sortedcontainers==2.4.0 - # via - # -r requirements/edx/base.txt - # snowflake-connector-python -soupsieve==2.8.4 - # via - # -r requirements/edx/base.txt - # beautifulsoup4 -sqlparse==0.5.5 - # via - # -r requirements/edx/base.txt - # django -staff-graded-xblock==4.0.1 - # via -r requirements/edx/base.txt -stevedore==5.8.0 - # via - # -r requirements/edx/base.txt - # code-annotations - # edx-ace - # edx-django-utils - # edx-enterprise - # edx-opaque-keys -super-csv==5.0.0 - # via - # -r requirements/edx/base.txt - # edx-bulk-grades -sympy==1.14.0 - # via - # -r requirements/edx/base.txt - # openedx-calc -testfixtures==12.1.0 - # via - # -r requirements/edx/base.txt - # -r requirements/edx/testing.in - # edx-enterprise -text-unidecode==1.3 - # via - # -r requirements/edx/base.txt - # python-slugify -tincan==1.0.0 - # via - # -r requirements/edx/base.txt - # edx-enterprise -tinycss2==1.5.1 - # via - # -r requirements/edx/base.txt - # bleach -tomli-w==1.2.0 - # via tox -tomlkit==0.15.0 - # via - # -r requirements/edx/base.txt - # edx-lint - # openedx-core - # pylint - # snowflake-connector-python -tox==4.55.1 - # via -r requirements/edx/testing.in -tqdm==4.68.2 - # via - # -r requirements/edx/base.txt - # nltk -typesense==2.0.0 - # via - # -r requirements/edx/base.txt - # edx-search - # openedx-forum -typing-extensions==4.15.0 - # via - # -r requirements/edx/base.txt - # aiohttp - # aiosignal - # anyio - # beautifulsoup4 - # django-countries - # edx-opaque-keys - # grimp - # grpcio - # icalendar - # import-linter - # jwcrypto - # pact-python - # pydantic - # pydantic-core - # pylti1p3 - # pyopenssl - # referencing - # snowflake-connector-python - # testfixtures - # typesense - # typing-inspection -typing-inspection==0.4.2 - # via - # -r requirements/edx/base.txt - # pydantic -tzdata==2026.2 - # via - # -r requirements/edx/base.txt - # icalendar - # kombu -tzlocal==5.4 - # via - # -r requirements/edx/base.txt - # celery -unicodecsv==0.14.1 - # via - # -r requirements/edx/base.txt - # edx-enterprise - # enterprise-integrated-channels -unicodeit==0.7.5 - # via -r requirements/edx/base.txt -unidiff==0.7.5 - # via -r requirements/edx/testing.in -uritemplate==4.2.0 - # via - # -r requirements/edx/base.txt - # drf-spectacular - # drf-yasg -urllib3==2.7.0 - # via - # -r requirements/edx/base.txt - # botocore - # elasticsearch - # requests -vine==5.1.0 - # via - # -r requirements/edx/base.txt - # amqp - # celery - # kombu -virtualenv==21.5.0 - # via tox -voluptuous==0.16.0 - # via - # -r requirements/edx/base.txt - # ora2 -walrus==0.9.8 - # via - # -r requirements/edx/base.txt - # edx-event-bus-redis -wcmatch==10.1 - # via - # -r requirements/edx/base.txt - # pycasbin -wcwidth==0.8.1 - # via - # -r requirements/edx/base.txt - # prompt-toolkit -web-fragments==4.0.0 - # via - # -r requirements/edx/base.txt - # edx-sga - # xblock-utils -webencodings==0.5.1 - # via - # -r requirements/edx/base.txt - # bleach - # html5lib - # tinycss2 -webob==1.8.10 - # via - # -r requirements/edx/base.txt - # xblock - # xblocks-contrib -wheel==0.47.0 - # via - # -r requirements/edx/base.txt - # django-pipeline -wrapt==2.2.1 - # via - # -r requirements/edx/base.txt - # xblocks-contrib -xblock[django]==6.3.0 - # via - # -r requirements/edx/base.txt - # acid-xblock - # crowdsourcehinter-xblock - # done-xblock - # edx-completion - # edx-sga - # edx-when - # lti-consumer-xblock - # ora2 - # staff-graded-xblock - # xblock-drag-and-drop-v2 - # xblock-google-drive - # xblock-utils - # xblocks-contrib -xblock-drag-and-drop-v2==5.0.6 - # via -r requirements/edx/base.txt -xblock-google-drive==0.8.2 - # via -r requirements/edx/base.txt -xblock-poll==1.15.1 - # via -r requirements/edx/base.txt -xblock-utils==4.0.0 - # via - # -r requirements/edx/base.txt - # edx-sga - # xblock-poll -xblocks-contrib==0.17.0 - # via -r requirements/edx/base.txt -xmlsec==1.3.14 - # via - # -c requirements/constraints.txt - # -r requirements/edx/base.txt - # python3-saml -xss-utils==1.0.0 - # via -r requirements/edx/base.txt -yarl==1.24.2 - # via - # -r requirements/edx/base.txt - # aiohttp - # pact-python -zipp==4.1.0 - # via - # -r requirements/edx/base.txt - # importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/scripts/compile_sass.py b/scripts/compile_sass.py index 72d17edd22b1..8eb3758a5b75 100755 --- a/scripts/compile_sass.py +++ b/scripts/compile_sass.py @@ -3,7 +3,8 @@ Defines a CLI for compiling Sass (both default and themed) into CSS. Should be run from the root of edx-platform using `npm run` wrapper. -Requirements for this scripts are stored in requirements/edx/assets.in. +Requirements for this scripts are stored in the `assets` dependency group +in pyproject.toml. Get more details: @@ -12,9 +13,7 @@ Setup (Tutor and Devstack will do this for you): - python -m venv venv - . venv/bin/activate - pip install -r requirements/edx/assets.txt + uv sync --group assets Usage: diff --git a/scripts/watch_sass.sh b/scripts/watch_sass.sh index 58bc3259767d..75fd2cfde367 100755 --- a/scripts/watch_sass.sh +++ b/scripts/watch_sass.sh @@ -70,7 +70,7 @@ fi if ! type watchmedo 1>/dev/null 2>&1 ; then error "command not found: watchmedo" log "The \`watchdog\` Python package is probably not installed. You can install it with:" - log " pip install -r requirements/edx/development.txt" + log " uv sync --group dev" exit 1 fi diff --git a/tox.ini b/tox.ini index 2284f57356b9..300afddf53f9 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,7 @@ [tox] -envlist = py{312} quality +requires = + tox-uv>=1 +envlist = py{312}, quality # This is needed to prevent the lms, cms, and openedx packages inside the "Open # edX" package (defined in pyproject.toml) from getting installed into site-packages @@ -15,13 +17,10 @@ skipsdist = True toxworkdir = {homedir}/edxapp_toxenv [testenv] -# This ensures "-e ." is installed, so that a link back to the top-level -# edx-platform source directory is installed in site-packages, making -# edx-platform source code importable from python subprocesses. Child -# processes running python code do not import from the current working -# directory without hacking sys.path, but they will inherit the tox virtualenv -# and look in site-packages. -usedevelop = True +# tox-uv's runner installs the project (-e .) as part of syncing the locked +# environment below, so there's no separate "usedevelop" flag needed anymore. +runner = uv-venv-lock-runner +dependency_groups = testing setenv = PYTHONHASHSEED=0 TOXENV={envname} @@ -62,7 +61,6 @@ passenv = XDIST_WORKER_KEY_NAME XDIST_WORKER_SECURITY_GROUP XDIST_WORKER_SUBNET -commands_pre = make test-requirements allowlist_externals = /bin/bash /usr/bin/curl