From 0337f716fc82aacdfdcd4534731bcdca61444284 Mon Sep 17 00:00:00 2001 From: edX requirements bot Date: Sun, 31 May 2026 21:12:05 -0400 Subject: [PATCH 1/2] chore: Upgrade Python requirements --- requirements/base.txt | 10 ++++----- requirements/ci.txt | 12 +++++------ requirements/dev.txt | 42 +++++++++++++++++++------------------- requirements/doc.txt | 22 ++++++++++---------- requirements/pip-tools.txt | 2 +- requirements/pip.txt | 2 +- requirements/quality.txt | 26 +++++++++++------------ requirements/test.txt | 18 ++++++++-------- 8 files changed, 67 insertions(+), 67 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 7c8e479b5..5a1b5c3c6 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -16,7 +16,7 @@ billiard==4.2.4 # via celery celery==5.6.3 # via -r requirements/base.in -certifi==2026.4.22 +certifi==2026.5.20 # via requests cffi==2.0.0 # via @@ -24,7 +24,7 @@ cffi==2.0.0 # pynacl charset-normalizer==3.4.7 # via requests -click==8.4.0 +click==8.4.1 # via # celery # click-didyoumean @@ -93,7 +93,7 @@ edx-organizations==8.0.0 # via -r requirements/base.in fastavro==1.12.2 # via openedx-events -idna==3.15 +idna==3.17 # via requests kombu==5.6.2 # via celery @@ -109,7 +109,7 @@ psutil==7.2.2 # via edx-django-utils pycparser==3.0 # via cffi -pyjwt[crypto]==2.12.1 +pyjwt[crypto]==2.13.0 # via # drf-jwt # edx-drf-extensions @@ -131,7 +131,7 @@ six==1.17.0 # python-dateutil sqlparse==0.5.5 # via django -stevedore==5.7.0 +stevedore==5.8.0 # via # edx-django-utils # edx-opaque-keys diff --git a/requirements/ci.txt b/requirements/ci.txt index 4453c8dfe..f1f1cc814 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -4,7 +4,7 @@ # # make upgrade # -cachetools==7.1.2 +cachetools==7.1.4 # via tox colorama==0.4.6 # via tox @@ -19,22 +19,22 @@ packaging==26.2 # via # pyproject-api # tox -platformdirs==4.9.6 +platformdirs==4.10.0 # via # python-discovery # tox # virtualenv pluggy==1.6.0 # via tox -pyproject-api==1.10.0 +pyproject-api==1.10.1 # via tox -python-discovery==1.3.1 +python-discovery==1.4.0 # via # tox # virtualenv tomli-w==1.2.0 # via tox -tox==4.54.0 +tox==4.55.0 # via -r requirements/ci.in -virtualenv==21.3.3 +virtualenv==21.4.2 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index 5f2c6138b..ce910d3c9 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -33,13 +33,13 @@ build==1.5.0 # via # -r requirements/pip-tools.txt # pip-tools -cachetools==7.1.2 +cachetools==7.1.4 # via # -r requirements/ci.txt # tox celery==5.6.3 # via -r requirements/quality.txt -certifi==2026.4.22 +certifi==2026.5.20 # via # -r requirements/quality.txt # requests @@ -54,7 +54,7 @@ charset-normalizer==3.4.7 # via # -r requirements/quality.txt # requests -click==8.4.0 +click==8.4.1 # via # -r requirements/pip-tools.txt # -r requirements/quality.txt @@ -92,7 +92,7 @@ colorama==0.4.6 # via # -r requirements/ci.txt # tox -coverage[toml]==7.14.0 +coverage[toml]==7.14.1 # via # -r requirements/quality.txt # pytest-cov @@ -103,7 +103,7 @@ cryptography==48.0.0 # secretstorage ddt==1.7.2 # via -r requirements/quality.txt -diff-cover==10.2.0 +diff-cover==10.3.0 # via -r requirements/dev.in dill==0.4.1 # via @@ -147,11 +147,11 @@ django-simple-history==3.11.0 # via # -r requirements/quality.txt # edx-organizations -django-stubs==6.0.4 +django-stubs==6.0.5 # via # -r requirements/quality.txt # djangorestframework-stubs -django-stubs-ext==6.0.4 +django-stubs-ext==6.0.5 # via # -r requirements/quality.txt # django-stubs @@ -172,7 +172,7 @@ dnspython==2.8.0 # via # -r requirements/quality.txt # pymongo -docutils==0.22.4 +docutils==0.23 # via # -r requirements/quality.txt # readme-renderer @@ -226,7 +226,7 @@ id==1.6.1 # via # -r requirements/quality.txt # twine -idna==3.15 +idna==3.17 # via # -r requirements/quality.txt # requests @@ -274,11 +274,11 @@ librt==0.11.0 # via # -r requirements/quality.txt # mypy -lxml[html-clean]==6.1.0 +lxml[html-clean]==6.1.1 # via # edx-i18n-tools # lxml-html-clean -lxml-html-clean==0.4.4 +lxml-html-clean==0.4.5 # via lxml markdown-it-py==4.2.0 # via @@ -298,7 +298,7 @@ mdurl==0.1.2 # markdown-it-py mock==5.2.0 # via -r requirements/quality.txt -more-itertools==11.0.2 +more-itertools==11.1.0 # via # -r requirements/quality.txt # jaraco-classes @@ -341,7 +341,7 @@ pillow==12.2.0 # edx-organizations pip-tools==7.5.3 # via -r requirements/pip-tools.txt -platformdirs==4.9.6 +platformdirs==4.10.0 # via # -r requirements/ci.txt # -r requirements/quality.txt @@ -382,7 +382,7 @@ pygments==2.20.0 # pytest # readme-renderer # rich -pyjwt[crypto]==2.12.1 +pyjwt[crypto]==2.13.0 # via # -r requirements/quality.txt # drf-jwt @@ -415,7 +415,7 @@ pynacl==1.6.2 # via # -r requirements/quality.txt # edx-django-utils -pyproject-api==1.10.0 +pyproject-api==1.10.1 # via # -r requirements/ci.txt # tox @@ -438,7 +438,7 @@ python-dateutil==2.9.0.post0 # -r requirements/quality.txt # celery # freezegun -python-discovery==1.3.1 +python-discovery==1.4.0 # via # -r requirements/ci.txt # tox @@ -491,7 +491,7 @@ six==1.17.0 # edx-ccx-keys # edx-lint # python-dateutil -snowballstemmer==3.0.1 +snowballstemmer==3.1.0 # via # -r requirements/quality.txt # pydocstyle @@ -500,7 +500,7 @@ sqlparse==0.5.5 # -r requirements/quality.txt # django # django-debug-toolbar -stevedore==5.7.0 +stevedore==5.8.0 # via # -r requirements/quality.txt # code-annotations @@ -519,11 +519,11 @@ tomlkit==0.15.0 # -r requirements/quality.txt # edx-lint # pylint -tox==4.54.0 +tox==4.55.0 # via -r requirements/ci.txt twine==6.2.0 # via -r requirements/quality.txt -types-pyyaml==6.0.12.20260510 +types-pyyaml==6.0.12.20260518 # via # -r requirements/quality.txt # django-stubs @@ -558,7 +558,7 @@ vine==5.1.0 # amqp # celery # kombu -virtualenv==21.3.3 +virtualenv==21.4.2 # via # -r requirements/ci.txt # tox diff --git a/requirements/doc.txt b/requirements/doc.txt index c679ac18d..a9beb39de 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -36,7 +36,7 @@ billiard==4.2.4 # celery celery==5.6.3 # via -r requirements/test.txt -certifi==2026.4.22 +certifi==2026.5.20 # via # -r requirements/test.txt # requests @@ -49,7 +49,7 @@ charset-normalizer==3.4.7 # via # -r requirements/test.txt # requests -click==8.4.0 +click==8.4.1 # via # -r requirements/test.txt # celery @@ -73,7 +73,7 @@ click-repl==0.3.0 # celery code-annotations==3.0.0 # via -r requirements/test.txt -coverage[toml]==7.14.0 +coverage[toml]==7.14.1 # via # -r requirements/test.txt # pytest-cov @@ -115,11 +115,11 @@ django-simple-history==3.11.0 # via # -r requirements/test.txt # edx-organizations -django-stubs==6.0.4 +django-stubs==6.0.5 # via # -r requirements/test.txt # djangorestframework-stubs -django-stubs-ext==6.0.4 +django-stubs-ext==6.0.5 # via # -r requirements/test.txt # django-stubs @@ -185,7 +185,7 @@ grimp==3.14 # via # -r requirements/test.txt # import-linter -idna==3.15 +idna==3.17 # via # -r requirements/test.txt # requests @@ -281,7 +281,7 @@ pygments==2.20.0 # readme-renderer # rich # sphinx -pyjwt[crypto]==2.12.1 +pyjwt[crypto]==2.13.0 # via # -r requirements/test.txt # drf-jwt @@ -342,9 +342,9 @@ six==1.17.0 # -r requirements/test.txt # edx-ccx-keys # python-dateutil -snowballstemmer==3.0.1 +snowballstemmer==3.1.0 # via sphinx -soupsieve==2.8.3 +soupsieve==2.8.4 # via beautifulsoup4 sphinx==9.1.0 # via @@ -373,7 +373,7 @@ sqlparse==0.5.5 # -r requirements/test.txt # django # django-debug-toolbar -stevedore==5.7.0 +stevedore==5.8.0 # via # -r requirements/test.txt # code-annotations @@ -386,7 +386,7 @@ text-unidecode==1.3 # python-slugify tomlkit==0.15.0 # via -r requirements/test.txt -types-pyyaml==6.0.12.20260510 +types-pyyaml==6.0.12.20260518 # via # -r requirements/test.txt # django-stubs diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index c8ad45213..ae6076a05 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -6,7 +6,7 @@ # build==1.5.0 # via pip-tools -click==8.4.0 +click==8.4.1 # via pip-tools packaging==26.2 # via diff --git a/requirements/pip.txt b/requirements/pip.txt index 26c818977..f3c155508 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -10,7 +10,7 @@ wheel==0.47.0 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==26.1.1 +pip==26.1.2 # via -r requirements/pip.in setuptools==82.0.1 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index 54029599c..4ae8ef620 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -30,7 +30,7 @@ billiard==4.2.4 # celery celery==5.6.3 # via -r requirements/test.txt -certifi==2026.4.22 +certifi==2026.5.20 # via # -r requirements/test.txt # requests @@ -43,7 +43,7 @@ charset-normalizer==3.4.7 # via # -r requirements/test.txt # requests -click==8.4.0 +click==8.4.1 # via # -r requirements/test.txt # celery @@ -73,7 +73,7 @@ code-annotations==3.0.0 # via # -r requirements/test.txt # edx-lint -coverage[toml]==7.14.0 +coverage[toml]==7.14.1 # via # -r requirements/test.txt # pytest-cov @@ -117,11 +117,11 @@ django-simple-history==3.11.0 # via # -r requirements/test.txt # edx-organizations -django-stubs==6.0.4 +django-stubs==6.0.5 # via # -r requirements/test.txt # djangorestframework-stubs -django-stubs-ext==6.0.4 +django-stubs-ext==6.0.5 # via # -r requirements/test.txt # django-stubs @@ -142,7 +142,7 @@ dnspython==2.8.0 # via # -r requirements/test.txt # pymongo -docutils==0.22.4 +docutils==0.23 # via readme-renderer drf-jwt==1.19.2 # via @@ -184,7 +184,7 @@ grimp==3.14 # import-linter id==1.6.1 # via twine -idna==3.15 +idna==3.17 # via # -r requirements/test.txt # requests @@ -238,7 +238,7 @@ mdurl==0.1.2 # markdown-it-py mock==5.2.0 # via -r requirements/test.txt -more-itertools==11.0.2 +more-itertools==11.1.0 # via # jaraco-classes # jaraco-functools @@ -270,7 +270,7 @@ pillow==12.2.0 # via # -r requirements/test.txt # edx-organizations -platformdirs==4.9.6 +platformdirs==4.10.0 # via pylint pluggy==1.6.0 # via @@ -299,7 +299,7 @@ pygments==2.20.0 # pytest # readme-renderer # rich -pyjwt[crypto]==2.12.1 +pyjwt[crypto]==2.13.0 # via # -r requirements/test.txt # drf-jwt @@ -379,14 +379,14 @@ six==1.17.0 # edx-ccx-keys # edx-lint # python-dateutil -snowballstemmer==3.0.1 +snowballstemmer==3.1.0 # via pydocstyle sqlparse==0.5.5 # via # -r requirements/test.txt # django # django-debug-toolbar -stevedore==5.7.0 +stevedore==5.8.0 # via # -r requirements/test.txt # code-annotations @@ -403,7 +403,7 @@ tomlkit==0.15.0 # pylint twine==6.2.0 # via -r requirements/quality.in -types-pyyaml==6.0.12.20260510 +types-pyyaml==6.0.12.20260518 # via # -r requirements/test.txt # django-stubs diff --git a/requirements/test.txt b/requirements/test.txt index 711d8b710..17c4ecc0c 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -24,7 +24,7 @@ billiard==4.2.4 # celery celery==5.6.3 # via -r requirements/base.txt -certifi==2026.4.22 +certifi==2026.5.20 # via # -r requirements/base.txt # requests @@ -37,7 +37,7 @@ charset-normalizer==3.4.7 # via # -r requirements/base.txt # requests -click==8.4.0 +click==8.4.1 # via # -r requirements/base.txt # celery @@ -61,7 +61,7 @@ click-repl==0.3.0 # celery code-annotations==3.0.0 # via -r requirements/test.in -coverage[toml]==7.14.0 +coverage[toml]==7.14.1 # via # -r requirements/test.in # pytest-cov @@ -101,11 +101,11 @@ django-simple-history==3.11.0 # via # -r requirements/base.txt # edx-organizations -django-stubs==6.0.4 +django-stubs==6.0.5 # via # -r requirements/test.in # djangorestframework-stubs -django-stubs-ext==6.0.4 +django-stubs-ext==6.0.5 # via django-stubs django-waffle==5.0.0 # via @@ -158,7 +158,7 @@ freezegun==1.5.5 # via -r requirements/test.in grimp==3.14 # via import-linter -idna==3.15 +idna==3.17 # via # -r requirements/base.txt # requests @@ -221,7 +221,7 @@ pygments==2.20.0 # via # pytest # rich -pyjwt[crypto]==2.12.1 +pyjwt[crypto]==2.13.0 # via # -r requirements/base.txt # drf-jwt @@ -274,7 +274,7 @@ sqlparse==0.5.5 # -r requirements/base.txt # django # django-debug-toolbar -stevedore==5.7.0 +stevedore==5.8.0 # via # -r requirements/base.txt # code-annotations @@ -284,7 +284,7 @@ text-unidecode==1.3 # via python-slugify tomlkit==0.15.0 # via -r requirements/base.txt -types-pyyaml==6.0.12.20260510 +types-pyyaml==6.0.12.20260518 # via # django-stubs # djangorestframework-stubs From fa3559a28a34322afb91e3234357e4d1345c3764 Mon Sep 17 00:00:00 2001 From: Farhan Khan Date: Mon, 1 Jun 2026 14:00:39 +0500 Subject: [PATCH 2/2] fix: resolve mypy quality check failures from upgraded dependencies --- src/openedx_content/applets/collections/tasks.py | 5 ++++- src/openedx_tagging/models/base.py | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/openedx_content/applets/collections/tasks.py b/src/openedx_content/applets/collections/tasks.py index 6b5a43d9e..fb3538cae 100644 --- a/src/openedx_content/applets/collections/tasks.py +++ b/src/openedx_content/applets/collections/tasks.py @@ -30,7 +30,10 @@ def emit_collections_changed_for_entity_changes_task( Triggered by ENTITIES_DRAFT_CHANGED. New entities (old_version_id=None, new_version_id is not None) that aren't in any collection result in a no-op. """ - all_entity_ids = list(set(removed_entity_ids) | set(added_entity_ids)) + all_entity_ids: list[PublishableEntity.ID] = [ + PublishableEntity.PublishableEntityID(x) + for x in set(removed_entity_ids) | set(added_entity_ids) + ] if not all_entity_ids: return 0 diff --git a/src/openedx_tagging/models/base.py b/src/openedx_tagging/models/base.py index 7957a45df..bf9c64c27 100644 --- a/src/openedx_tagging/models/base.py +++ b/src/openedx_tagging/models/base.py @@ -6,7 +6,7 @@ import logging import re -from typing import List, Self +from typing import List, Self, cast from django.core.exceptions import ValidationError from django.db import models @@ -562,11 +562,11 @@ def _get_filtered_tags_deep( ) if excluded_values: matching_tags = matching_tags.exclude(value__in=excluded_values) - matching_ids = [] + matching_ids: list[int] = [] for row in matching_tags: for pk in row.values(): if pk is not None: - matching_ids.append(pk) + matching_ids.append(cast(int, pk)) next_ancestor_id = row["parent__parent__parent_id"] while next_ancestor_id: # If there are even deeper ancestors, add them (inefficiently): next_ancestor_id = Tag.objects.get(pk=next_ancestor_id).parent_id