diff --git a/.github/workflows/check-consistent-dependencies.yml b/.github/workflows/check-consistent-dependencies.yml
index cef731a7d175..a84ef40bbcab 100644
--- a/.github/workflows/check-consistent-dependencies.yml
+++ b/.github/workflows/check-consistent-dependencies.yml
@@ -46,7 +46,7 @@ jobs:
- uses: actions/setup-python@v6
if: ${{ env.RELEVANT == 'true' }}
with:
- python-version: '3.11'
+ python-version: '3.12'
- name: "Recompile requirements"
if: ${{ env.RELEVANT == 'true' }}
diff --git a/.github/workflows/ci-static-analysis.yml b/.github/workflows/ci-static-analysis.yml
index a5ab117acdfc..94fb9e863d87 100644
--- a/.github/workflows/ci-static-analysis.yml
+++ b/.github/workflows/ci-static-analysis.yml
@@ -11,7 +11,7 @@ jobs:
strategy:
matrix:
python-version:
- - "3.11"
+ - "3.12"
os: ["ubuntu-24.04"]
steps:
diff --git a/.github/workflows/compile-python-requirements.yml b/.github/workflows/compile-python-requirements.yml
index 1da50b9b6bdd..fe8fdc6ff542 100644
--- a/.github/workflows/compile-python-requirements.yml
+++ b/.github/workflows/compile-python-requirements.yml
@@ -26,7 +26,7 @@ jobs:
- name: Set up Python environment
uses: actions/setup-python@v6
with:
- python-version: "3.11"
+ python-version: "3.12"
- name: Run make compile-requirements
env:
diff --git a/.github/workflows/js-tests.yml b/.github/workflows/js-tests.yml
index 69e487e06ac4..dd21d12e3d25 100644
--- a/.github/workflows/js-tests.yml
+++ b/.github/workflows/js-tests.yml
@@ -16,7 +16,7 @@ jobs:
os: [ubuntu-latest]
node-version: [20]
python-version:
- - "3.11"
+ - "3.12"
steps:
- uses: actions/checkout@v6
diff --git a/.github/workflows/lint-imports.yml b/.github/workflows/lint-imports.yml
index 2debc4cb1028..8b119d31e6b5 100644
--- a/.github/workflows/lint-imports.yml
+++ b/.github/workflows/lint-imports.yml
@@ -19,7 +19,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: "3.11"
+ python-version: "3.12"
- name: Install system requirements
run: sudo apt update && sudo apt install -y libxmlsec1-dev
diff --git a/.github/workflows/migrations-check.yml b/.github/workflows/migrations-check.yml
index c63b5ef02fba..20540fb43906 100644
--- a/.github/workflows/migrations-check.yml
+++ b/.github/workflows/migrations-check.yml
@@ -16,7 +16,7 @@ jobs:
matrix:
os: [ubuntu-24.04]
python-version:
- - "3.11"
+ - "3.12"
# 'pinned' is used to install the latest patch version of Django
# within the global constraint i.e. Django==4.2.8 in current case
# because we have global constraint of Django<4.2
diff --git a/.github/workflows/pylint-checks.yml b/.github/workflows/pylint-checks.yml
index 03160b77a7e4..21d4421b0950 100644
--- a/.github/workflows/pylint-checks.yml
+++ b/.github/workflows/pylint-checks.yml
@@ -40,7 +40,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
- python-version: 3.11
+ python-version: 3.12
- name: Get pip cache dir
id: pip-cache-dir
diff --git a/.github/workflows/quality-checks.yml b/.github/workflows/quality-checks.yml
index 77f094ba3d8d..b57b713eb93a 100644
--- a/.github/workflows/quality-checks.yml
+++ b/.github/workflows/quality-checks.yml
@@ -16,7 +16,7 @@ jobs:
matrix:
os: [ubuntu-24.04]
python-version:
- - "3.11"
+ - "3.12"
node-version: [20]
steps:
diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml
index 557ba0227c5d..c201f30aa799 100644
--- a/.github/workflows/semgrep.yml
+++ b/.github/workflows/semgrep.yml
@@ -20,7 +20,7 @@ jobs:
matrix:
os: ["ubuntu-latest"]
python-version:
- - "3.11"
+ - "3.12"
steps:
- uses: actions/checkout@v6
diff --git a/.github/workflows/static-assets-check.yml b/.github/workflows/static-assets-check.yml
index 8e83a9a46ce1..41159e3526c5 100644
--- a/.github/workflows/static-assets-check.yml
+++ b/.github/workflows/static-assets-check.yml
@@ -15,7 +15,7 @@ jobs:
matrix:
os: [ubuntu-24.04]
python-version:
- - "3.11"
+ - "3.12"
node-version: [20]
npm-version: [10.7.x]
mongo-version:
@@ -71,6 +71,13 @@ jobs:
- name: Install Limited Python Deps for Build
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
- name: Add node_modules bin to $Path
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
index 58cd39a80868..7b7b14a43e88 100644
--- a/.github/workflows/unit-tests.yml
+++ b/.github/workflows/unit-tests.yml
@@ -22,7 +22,6 @@ jobs:
strategy:
matrix:
python-version:
- - "3.11"
- "3.12"
django-version:
- "pinned"
@@ -57,18 +56,18 @@ jobs:
#
# We're testing the older version of Ubuntu and running the xmodule tests since those rely on many
# dependent complex libraries and will hopefully catch most issues quickly.
- include:
- - shard_name: "xmodule-with-cms"
- python-version: "3.11"
- django-version: "pinned"
- mongo-version: "7.0"
- os-version: "ubuntu-22.04"
- - shard_name: "xmodule-with-lms"
- python-version: "3.11"
- django-version: "pinned"
- mongo-version: "7.0"
- os-version: "ubuntu-22.04"
-
+ #
+ # include:
+ # - shard_name: "xmodule-with-cms"
+ # python-version: "3.12"
+ # django-version: "pinned"
+ # mongo-version: "7.0"
+ # os-version: "ubuntu-24.04"
+ # - shard_name: "xmodule-with-lms"
+ # python-version: "3.12"
+ # django-version: "pinned"
+ # mongo-version: "7.0"
+ # os-version: "ubuntu-24.04"
steps:
- name: checkout repo
uses: actions/checkout@v6
@@ -156,7 +155,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v6
with:
- python-version: 3.11
+ python-version: 3.12
- name: install system requirements
run: |
@@ -278,7 +277,7 @@ jobs:
strategy:
matrix:
python-version:
- - 3.11
+ - 3.12
steps:
- name: Checkout repo
uses: actions/checkout@v6
diff --git a/.github/workflows/upgrade-one-python-dependency.yml b/.github/workflows/upgrade-one-python-dependency.yml
index 36a6b361887f..fc4610baf49d 100644
--- a/.github/workflows/upgrade-one-python-dependency.yml
+++ b/.github/workflows/upgrade-one-python-dependency.yml
@@ -39,7 +39,7 @@ jobs:
- name: Set up Python environment
uses: actions/setup-python@v6
with:
- python-version: "3.11"
+ python-version: "3.12"
- name: Update any pinned dependencies
env:
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
index efd38bc796ac..fef9e3c2a9d2 100644
--- a/.readthedocs.yaml
+++ b/.readthedocs.yaml
@@ -3,7 +3,7 @@ version: 2
build:
os: "ubuntu-lts-latest"
tools:
- python: "3.11"
+ python: "3.12"
sphinx:
configuration: docs/conf.py
diff --git a/README.rst b/README.rst
index b315cdcbf2b6..8a09c9a603b5 100644
--- a/README.rst
+++ b/README.rst
@@ -78,7 +78,7 @@ OS:
Interpreters/Tools:
-* Python 3.11 or 3.12
+* Python 3.12
* Node: See the ``.nvmrc`` file in this repository.
diff --git a/cms/envs/devstack.py b/cms/envs/devstack.py
index 7eae8a892ab9..23f0c17cc531 100644
--- a/cms/envs/devstack.py
+++ b/cms/envs/devstack.py
@@ -344,9 +344,11 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
access token endpoint: `{LMS_ROOT_URL}/oauth2/access_token`.
Please see separately provided documentation.
\n - How to test: You must be logged in as course author for whatever course you want to test with.
- You can use the [Swagger UI](https://{CMS_BASE}/authoring-api/ui/) to "Try out" the API with your test course. To do this, you must select the "Local" server.
+ You can use the [Swagger UI](https://{CMS_BASE}/authoring-api/ui/) to "Try out" the API
+ with your test course. To do this, you must select the "Local" server.
\n - Public vs. Local servers: The "Public" server is where you can reach the API externally. The "Local" server is
- for development with a local edx-platform version, and for use via the [Swagger UI](https://{CMS_BASE}/authoring-api/ui/).
+ for development with a local edx-platform version, and for use via the
+ [Swagger UI](https://{CMS_BASE}/authoring-api/ui/).
\n - Swaggerfile: [Download link](https://{CMS_BASE}/authoring-api/schema/)''',
'VERSION': '0.1.0',
'SERVE_INCLUDE_SCHEMA': False,
diff --git a/cms/envs/production.py b/cms/envs/production.py
index 95f88ed23ad2..c5ce5d9f5544 100644
--- a/cms/envs/production.py
+++ b/cms/envs/production.py
@@ -409,9 +409,11 @@ def get_env_setting(setting):
access token endpoint: `{LMS_ROOT_URL}/oauth2/access_token`.
Please see separately provided documentation.
\n - How to test: You must be logged in as course author for whatever course you want to test with.
- You can use the [Swagger UI](https://{CMS_BASE}/authoring-api/ui/) to "Try out" the API with your test course. To do this, you must select the "Local" server.
+ You can use the [Swagger UI](https://{CMS_BASE}/authoring-api/ui/) to "Try out" the API
+ with your test course. To do this, you must select the "Local" server.
\n - Public vs. Local servers: The "Public" server is where you can reach the API externally. The "Local" server is
- for development with a local edx-platform version, and for use via the [Swagger UI](https://{CMS_BASE}/authoring-api/ui/).
+ for development with a local edx-platform version, and for use via the
+ [Swagger UI](https://{CMS_BASE}/authoring-api/ui/).
\n - Swaggerfile: [Download link](https://{CMS_BASE}/authoring-api/schema/)''',
'VERSION': '0.1.0',
'SERVE_INCLUDE_SCHEMA': False,
diff --git a/openedx/core/djangoapps/content_libraries/tests/test_containers.py b/openedx/core/djangoapps/content_libraries/tests/test_containers.py
index 31ac143d0640..0d72d0dfcc51 100644
--- a/openedx/core/djangoapps/content_libraries/tests/test_containers.py
+++ b/openedx/core/djangoapps/content_libraries/tests/test_containers.py
@@ -840,6 +840,7 @@ def test_copy_container(self) -> None:
# Test the actual OLX in the clipboard:
olx_data = staging_api.get_staged_content_olx(clipboard_data.content.id)
assert olx_data is not None
+ # pylint: disable=line-too-long
assert olx_data == textwrap.dedent(f"""\
@@ -858,6 +859,7 @@ def test_copy_container(self) -> None:
""")
+ # pylint: enable=line-too-long
def test_publish_subsection(self) -> None:
"""
diff --git a/pyproject.toml b/pyproject.toml
index 1e3fd6971599..85757eed7a74 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "openedx-platform"
version = "0.13"
-requires-python = ">=3.11"
+requires-python = ">=3.12"
dependencies = ["setuptools"]
[tool.setuptools]
diff --git a/requirements/edx-sandbox/base.txt b/requirements/edx-sandbox/base.txt
index b6c7e48047f7..b050ef8b6fc3 100644
--- a/requirements/edx-sandbox/base.txt
+++ b/requirements/edx-sandbox/base.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
diff --git a/requirements/edx/assets.txt b/requirements/edx/assets.txt
index 6a9f78f0bad0..36b3e1cc96e6 100644
--- a/requirements/edx/assets.txt
+++ b/requirements/edx/assets.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt
index 47c5d4cbe0e6..54038b29df40 100644
--- a/requirements/edx/base.txt
+++ b/requirements/edx/base.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
@@ -68,14 +68,14 @@ bleach[css]==6.3.0
# ora2
# xblock-drag-and-drop-v2
# xblock-poll
-boto3==1.42.64
+boto3==1.42.66
# via
# -r requirements/edx/kernel.in
# django-ses
# fs-s3fs
# ora2
# snowflake-connector-python
-botocore==1.42.64
+botocore==1.42.66
# via
# -r requirements/edx/kernel.in
# boto3
@@ -115,7 +115,7 @@ cffi==2.0.0
# via
# cryptography
# pynacl
-chardet==7.0.1
+chardet==7.1.0
# via pysrt
charset-normalizer==3.4.5
# via
@@ -417,7 +417,7 @@ edx-api-doc-tools==2.1.2
# via
# -r requirements/edx/kernel.in
# openedx-authz
-edx-auth-backends==4.6.2
+edx-auth-backends==5.0.0
# via -r requirements/edx/kernel.in
edx-bulk-grades==1.2.0
# via
@@ -443,7 +443,7 @@ edx-django-release-util==1.5.0
# -r requirements/edx/kernel.in
# edx-submissions
# edxval
-edx-django-sites-extensions==5.1.0
+edx-django-sites-extensions==6.0.0
# via -r requirements/edx/kernel.in
edx-django-utils==8.0.1
# via
@@ -484,7 +484,7 @@ edx-enterprise==6.6.9
# -r requirements/edx/kernel.in
edx-event-bus-kafka==6.1.0
# via -r requirements/edx/kernel.in
-edx-event-bus-redis==0.6.1
+edx-event-bus-redis==1.0.0
# via -r requirements/edx/kernel.in
edx-i18n-tools==2.0.0
# via
@@ -581,7 +581,7 @@ event-tracking==3.3.0
# edx-search
fastavro==1.12.1
# via openedx-events
-filelock==3.25.1
+filelock==3.25.2
# via snowflake-connector-python
firebase-admin==7.2.0
# via edx-ace
@@ -1110,7 +1110,7 @@ shapely==2.1.2
# via
# -r requirements/edx/kernel.in
# xblocks-contrib
-simpleeval==1.0.3
+simpleeval==1.0.4
# via pycasbin
simplejson==3.20.2
# via
@@ -1292,9 +1292,9 @@ xblock[django]==5.3.0
# xblock-google-drive
# xblock-utils
# xblocks-contrib
-xblock-drag-and-drop-v2==5.0.3
+xblock-drag-and-drop-v2==5.0.4
# via -r requirements/edx/bundled.in
-xblock-google-drive==0.8.1
+xblock-google-drive==0.8.2
# via -r requirements/edx/bundled.in
xblock-poll==1.15.1
# via -r requirements/edx/bundled.in
diff --git a/requirements/edx/coverage.txt b/requirements/edx/coverage.txt
index ee4975cdb4fb..25df281cfdba 100644
--- a/requirements/edx/coverage.txt
+++ b/requirements/edx/coverage.txt
@@ -1,10 +1,10 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
#
-chardet==7.0.1
+chardet==7.1.0
# via diff-cover
coverage==7.13.4
# via -r requirements/edx/coverage.in
diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt
index fc44d04de45d..c6a057308e22 100644
--- a/requirements/edx/development.txt
+++ b/requirements/edx/development.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
@@ -139,7 +139,7 @@ bleach[css]==6.3.0
# ora2
# xblock-drag-and-drop-v2
# xblock-poll
-boto3==1.42.64
+boto3==1.42.66
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -147,7 +147,7 @@ boto3==1.42.64
# fs-s3fs
# ora2
# snowflake-connector-python
-botocore==1.42.64
+botocore==1.42.66
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -215,7 +215,7 @@ cffi==2.0.0
# -r requirements/edx/testing.txt
# cryptography
# pynacl
-chardet==7.0.1
+chardet==7.1.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -684,7 +684,7 @@ edx-api-doc-tools==2.1.2
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# openedx-authz
-edx-auth-backends==4.6.2
+edx-auth-backends==5.0.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -719,7 +719,7 @@ edx-django-release-util==1.5.0
# -r requirements/edx/testing.txt
# edx-submissions
# edxval
-edx-django-sites-extensions==5.1.0
+edx-django-sites-extensions==6.0.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -767,7 +767,7 @@ edx-event-bus-kafka==6.1.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-edx-event-bus-redis==0.6.1
+edx-event-bus-redis==1.0.0
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -915,7 +915,7 @@ fastavro==1.12.1
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# openedx-events
-filelock==3.25.1
+filelock==3.25.2
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -1930,7 +1930,7 @@ shapely==2.1.2
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# xblocks-contrib
-simpleeval==1.0.3
+simpleeval==1.0.4
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
@@ -2016,7 +2016,7 @@ soupsieve==2.8.3
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
# beautifulsoup4
-sphinx==9.0.4
+sphinx==9.1.0
# via
# -r requirements/edx/doc.txt
# pydata-sphinx-theme
@@ -2314,11 +2314,11 @@ xblock[django]==5.3.0
# xblock-google-drive
# xblock-utils
# xblocks-contrib
-xblock-drag-and-drop-v2==5.0.3
+xblock-drag-and-drop-v2==5.0.4
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
-xblock-google-drive==0.8.1
+xblock-google-drive==0.8.2
# via
# -r requirements/edx/doc.txt
# -r requirements/edx/testing.txt
diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt
index dc114ed125dc..6da857c3dd57 100644
--- a/requirements/edx/doc.txt
+++ b/requirements/edx/doc.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
@@ -105,14 +105,14 @@ bleach[css]==6.3.0
# ora2
# xblock-drag-and-drop-v2
# xblock-poll
-boto3==1.42.64
+boto3==1.42.66
# via
# -r requirements/edx/base.txt
# django-ses
# fs-s3fs
# ora2
# snowflake-connector-python
-botocore==1.42.64
+botocore==1.42.66
# via
# -r requirements/edx/base.txt
# boto3
@@ -164,7 +164,7 @@ cffi==2.0.0
# -r requirements/edx/base.txt
# cryptography
# pynacl
-chardet==7.0.1
+chardet==7.1.0
# via
# -r requirements/edx/base.txt
# pysrt
@@ -508,7 +508,7 @@ edx-api-doc-tools==2.1.2
# via
# -r requirements/edx/base.txt
# openedx-authz
-edx-auth-backends==4.6.2
+edx-auth-backends==5.0.0
# via -r requirements/edx/base.txt
edx-bulk-grades==1.2.0
# via
@@ -534,7 +534,7 @@ edx-django-release-util==1.5.0
# -r requirements/edx/base.txt
# edx-submissions
# edxval
-edx-django-sites-extensions==5.1.0
+edx-django-sites-extensions==6.0.0
# via -r requirements/edx/base.txt
edx-django-utils==8.0.1
# via
@@ -575,7 +575,7 @@ edx-enterprise==6.6.9
# -r requirements/edx/base.txt
edx-event-bus-kafka==6.1.0
# via -r requirements/edx/base.txt
-edx-event-bus-redis==0.6.1
+edx-event-bus-redis==1.0.0
# via -r requirements/edx/base.txt
edx-i18n-tools==2.0.0
# via
@@ -680,7 +680,7 @@ fastavro==1.12.1
# via
# -r requirements/edx/base.txt
# openedx-events
-filelock==3.25.1
+filelock==3.25.2
# via
# -r requirements/edx/base.txt
# snowflake-connector-python
@@ -1360,7 +1360,7 @@ shapely==2.1.2
# via
# -r requirements/edx/base.txt
# xblocks-contrib
-simpleeval==1.0.3
+simpleeval==1.0.4
# via
# -r requirements/edx/base.txt
# pycasbin
@@ -1426,7 +1426,7 @@ soupsieve==2.8.3
# via
# -r requirements/edx/base.txt
# beautifulsoup4
-sphinx==9.0.4
+sphinx==9.1.0
# via
# -r requirements/edx/doc.in
# pydata-sphinx-theme
@@ -1631,9 +1631,9 @@ xblock[django]==5.3.0
# xblock-google-drive
# xblock-utils
# xblocks-contrib
-xblock-drag-and-drop-v2==5.0.3
+xblock-drag-and-drop-v2==5.0.4
# via -r requirements/edx/base.txt
-xblock-google-drive==0.8.1
+xblock-google-drive==0.8.2
# via -r requirements/edx/base.txt
xblock-poll==1.15.1
# via -r requirements/edx/base.txt
diff --git a/requirements/edx/semgrep.txt b/requirements/edx/semgrep.txt
index 393db1185f34..da6b28c32ac4 100644
--- a/requirements/edx/semgrep.txt
+++ b/requirements/edx/semgrep.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
@@ -170,7 +170,7 @@ ruamel-yaml-clib==0.2.14
# via semgrep
semantic-version==2.10.0
# via semgrep
-semgrep==1.154.0
+semgrep==1.155.0
# via -r requirements/edx/semgrep.in
sse-starlette==3.3.2
# via mcp
diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt
index c63109e3906a..0590f316164d 100644
--- a/requirements/edx/testing.txt
+++ b/requirements/edx/testing.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
@@ -103,14 +103,14 @@ bleach[css]==6.3.0
# ora2
# xblock-drag-and-drop-v2
# xblock-poll
-boto3==1.42.64
+boto3==1.42.66
# via
# -r requirements/edx/base.txt
# django-ses
# fs-s3fs
# ora2
# snowflake-connector-python
-botocore==1.42.64
+botocore==1.42.66
# via
# -r requirements/edx/base.txt
# boto3
@@ -163,7 +163,7 @@ cffi==2.0.0
# -r requirements/edx/base.txt
# cryptography
# pynacl
-chardet==7.0.1
+chardet==7.1.0
# via
# -r requirements/edx/base.txt
# -r requirements/edx/coverage.txt
@@ -528,7 +528,7 @@ edx-api-doc-tools==2.1.2
# via
# -r requirements/edx/base.txt
# openedx-authz
-edx-auth-backends==4.6.2
+edx-auth-backends==5.0.0
# via -r requirements/edx/base.txt
edx-bulk-grades==1.2.0
# via
@@ -554,7 +554,7 @@ edx-django-release-util==1.5.0
# -r requirements/edx/base.txt
# edx-submissions
# edxval
-edx-django-sites-extensions==5.1.0
+edx-django-sites-extensions==6.0.0
# via -r requirements/edx/base.txt
edx-django-utils==8.0.1
# via
@@ -595,7 +595,7 @@ edx-enterprise==6.6.9
# -r requirements/edx/base.txt
edx-event-bus-kafka==6.1.0
# via -r requirements/edx/base.txt
-edx-event-bus-redis==0.6.1
+edx-event-bus-redis==1.0.0
# via -r requirements/edx/base.txt
edx-i18n-tools==2.0.0
# via
@@ -710,7 +710,7 @@ fastavro==1.12.1
# via
# -r requirements/edx/base.txt
# openedx-events
-filelock==3.25.1
+filelock==3.25.2
# via
# -r requirements/edx/base.txt
# python-discovery
@@ -1478,7 +1478,7 @@ shapely==2.1.2
# via
# -r requirements/edx/base.txt
# xblocks-contrib
-simpleeval==1.0.3
+simpleeval==1.0.4
# via
# -r requirements/edx/base.txt
# pycasbin
@@ -1726,9 +1726,9 @@ xblock[django]==5.3.0
# xblock-google-drive
# xblock-utils
# xblocks-contrib
-xblock-drag-and-drop-v2==5.0.3
+xblock-drag-and-drop-v2==5.0.4
# via -r requirements/edx/base.txt
-xblock-google-drive==0.8.1
+xblock-google-drive==0.8.2
# via -r requirements/edx/base.txt
xblock-poll==1.15.1
# via -r requirements/edx/base.txt
diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt
index c363fb01b278..957dbd358acf 100644
--- a/requirements/pip-tools.txt
+++ b/requirements/pip-tools.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
diff --git a/scripts/structures_pruning/README.rst b/scripts/structures_pruning/README.rst
index 77bc6bfbf0c8..9939a09747e1 100644
--- a/scripts/structures_pruning/README.rst
+++ b/scripts/structures_pruning/README.rst
@@ -1,7 +1,7 @@
Structures Pruning Scripts
==========================
-`This `_ directory contains mongo db structures pruning script that is migrated from the
+`This `_ directory contains mongo db structures pruning script that is migrated from the
`tubular `_ repository.
@@ -29,11 +29,11 @@ To download the scripts, you can perform a partial clone of the edx-platform rep
Create Python Virtual Environment
---------------------------------
-Create a Python virtual environment using Python 3.11:
+Create a Python virtual environment using Python 3.12:
.. code-block:: bash
- python3.11 -m venv ../venv
+ python3.12 -m venv ../venv
source ../venv/bin/activate
Install Pip Packages
diff --git a/scripts/structures_pruning/requirements/base.txt b/scripts/structures_pruning/requirements/base.txt
index b8371831ac8f..7a64f07ddf49 100644
--- a/scripts/structures_pruning/requirements/base.txt
+++ b/scripts/structures_pruning/requirements/base.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
diff --git a/scripts/structures_pruning/requirements/testing.txt b/scripts/structures_pruning/requirements/testing.txt
index 8f5880dbe024..4f562ea0bdc4 100644
--- a/scripts/structures_pruning/requirements/testing.txt
+++ b/scripts/structures_pruning/requirements/testing.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
diff --git a/scripts/user_retirement/README.rst b/scripts/user_retirement/README.rst
index 380a2489108b..806305dcf86b 100644
--- a/scripts/user_retirement/README.rst
+++ b/scripts/user_retirement/README.rst
@@ -28,11 +28,11 @@ To download the scripts, you can perform a partial clone of the edx-platform rep
Create Python Virtual Environment
---------------------------------
-Create a Python virtual environment using Python 3.11:
+Create a Python virtual environment using Python 3.12:
.. code-block:: bash
- python3.11 -m venv ../venv
+ python3.12 -m venv ../venv
source ../venv/bin/activate
Install Pip Packages
diff --git a/scripts/user_retirement/requirements/base.txt b/scripts/user_retirement/requirements/base.txt
index 2339e39a0330..1cba7550a3bb 100644
--- a/scripts/user_retirement/requirements/base.txt
+++ b/scripts/user_retirement/requirements/base.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
@@ -10,9 +10,9 @@ attrs==25.4.0
# via zeep
backoff==2.2.1
# via -r scripts/user_retirement/requirements/base.in
-boto3==1.42.64
+boto3==1.42.66
# via -r scripts/user_retirement/requirements/base.in
-botocore==1.42.64
+botocore==1.42.66
# via
# boto3
# s3transfer
diff --git a/scripts/user_retirement/requirements/testing.txt b/scripts/user_retirement/requirements/testing.txt
index 43b2bf2ffce8..d0b5260f7271 100644
--- a/scripts/user_retirement/requirements/testing.txt
+++ b/scripts/user_retirement/requirements/testing.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
@@ -14,11 +14,11 @@ attrs==25.4.0
# zeep
backoff==2.2.1
# via -r scripts/user_retirement/requirements/base.txt
-boto3==1.42.64
+boto3==1.42.66
# via
# -r scripts/user_retirement/requirements/base.txt
# moto
-botocore==1.42.64
+botocore==1.42.66
# via
# -r scripts/user_retirement/requirements/base.txt
# boto3
diff --git a/scripts/xblock/requirements.txt b/scripts/xblock/requirements.txt
index 8ea90a592b33..f9d56f6a0557 100644
--- a/scripts/xblock/requirements.txt
+++ b/scripts/xblock/requirements.txt
@@ -1,5 +1,5 @@
#
-# This file is autogenerated by pip-compile with Python 3.11
+# This file is autogenerated by pip-compile with Python 3.12
# by the following command:
#
# make upgrade
diff --git a/tox.ini b/tox.ini
index c129fb8cf0d4..2284f57356b9 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py{311} quality
+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