diff --git a/lms/envs/common.py b/lms/envs/common.py index 045eea8ec710..b465fd6eca21 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -3695,6 +3695,18 @@ def _should_send_certificate_events(settings): # The project ID should be obtained from the Google Cloud Console when creating a reCAPTCHA RECAPTCHA_PROJECT_ID = None +# .. setting_name: OPEN_EDX_FILTERS_CONFIG +# .. setting_default: {} +# .. setting_description: Configuration dict for openedx-filters pipeline steps. +# Keys are filter type strings; values are dicts with 'fail_silently' (bool) and +# 'pipeline' (list of dotted-path strings to PipelineStep subclasses). +OPEN_EDX_FILTERS_CONFIG = { + "org.openedx.learning.account.settings.read_only_fields.requested.v1": { + "fail_silently": True, + "pipeline": ["enterprise.filters.accounts.AccountSettingsReadOnlyFieldsStep"], + }, +} + ############################## Miscellaneous ############################### # To limit the number of courses displayed on learner dashboard diff --git a/lms/envs/production.py b/lms/envs/production.py index aeccaf0c0fbf..8045bc48df5b 100644 --- a/lms/envs/production.py +++ b/lms/envs/production.py @@ -84,6 +84,7 @@ def get_env_setting(setting): 'EVENT_BUS_PRODUCER_CONFIG', 'DEFAULT_FILE_STORAGE', 'STATICFILES_STORAGE', + 'OPEN_EDX_FILTERS_CONFIG', ] }) @@ -281,6 +282,19 @@ def get_env_setting(setting): EVENT_TRACKING_SEGMENTIO_EMIT_WHITELIST ) +# Merge OPEN_EDX_FILTERS_CONFIG from YAML into the default defined in common.py. +# Pipeline steps from YAML are appended after steps defined in common.py. +# The fail_silently value from YAML takes precedence over the one in common.py. +for _filter_type, _filter_config in _YAML_TOKENS.get('OPEN_EDX_FILTERS_CONFIG', {}).items(): + if _filter_type in OPEN_EDX_FILTERS_CONFIG: + OPEN_EDX_FILTERS_CONFIG[_filter_type]['pipeline'].extend( + _filter_config.get('pipeline', []) + ) + if 'fail_silently' in _filter_config: + OPEN_EDX_FILTERS_CONFIG[_filter_type]['fail_silently'] = _filter_config['fail_silently'] + else: + OPEN_EDX_FILTERS_CONFIG[_filter_type] = _filter_config + if ENABLE_THIRD_PARTY_AUTH: AUTHENTICATION_BACKENDS = _YAML_TOKENS.get('THIRD_PARTY_AUTH_BACKENDS', [ 'social_core.backends.google.GoogleOAuth2', diff --git a/openedx/core/djangoapps/user_api/accounts/api.py b/openedx/core/djangoapps/user_api/accounts/api.py index 6970ea6f852f..9fc2b0f228bd 100644 --- a/openedx/core/djangoapps/user_api/accounts/api.py +++ b/openedx/core/djangoapps/user_api/accounts/api.py @@ -38,8 +38,8 @@ from openedx.core.djangoapps.user_authn.utils import check_pwned_password from openedx.core.djangoapps.user_authn.views.registration_form import validate_name, validate_username from openedx.core.lib.api.view_utils import add_serializer_errors -from openedx.features.enterprise_support.utils import get_enterprise_readonly_account_fields from openedx.features.name_affirmation_api.utils import is_name_affirmation_installed +from openedx_filters.learning.filters import AccountSettingsReadOnlyFieldsRequested from .serializers import AccountLegacyProfileSerializer, AccountUserSerializer, UserReadOnlySerializer, _visible_fields @@ -193,11 +193,17 @@ def update_account_settings(requesting_user, update, username=None): def _validate_read_only_fields(user, data, field_errors): # Check for fields that are not editable. Marking them read-only causes them to be ignored, but we wish to 400. + plugin_readonly_fields, __ = AccountSettingsReadOnlyFieldsRequested.run_filter( + readonly_fields=set(), + user=user, + ) + plugin_readonly_fields = plugin_readonly_fields or set() + read_only_fields = set(data.keys()).intersection( # Remove email since it is handled separately below when checking for changing_email. (set(AccountUserSerializer.get_read_only_fields()) - {"email"}) | set(AccountLegacyProfileSerializer.get_read_only_fields() or set()) | - get_enterprise_readonly_account_fields(user) + plugin_readonly_fields ) for read_only_field in read_only_fields: diff --git a/openedx/core/djangoapps/user_api/accounts/tests/test_api.py b/openedx/core/djangoapps/user_api/accounts/tests/test_api.py index b779f4bd9a4a..600d51f5ea4a 100644 --- a/openedx/core/djangoapps/user_api/accounts/tests/test_api.py +++ b/openedx/core/djangoapps/user_api/accounts/tests/test_api.py @@ -4,7 +4,6 @@ """ import datetime -import itertools import unicodedata from unittest.mock import Mock, patch @@ -18,7 +17,6 @@ from django.test.client import RequestFactory from django.urls import reverse from pytz import UTC -from social_django.models import UserSocialAuth from common.djangoapps.student.models import ( AccountRecovery, @@ -104,10 +102,12 @@ def setUp(self): self.staff_user = UserFactory(is_staff=True, password=self.password) self.reset_tracker() - enterprise_patcher = patch('openedx.features.enterprise_support.api.enterprise_customer_for_request') - enterprise_learner_patcher = enterprise_patcher.start() - enterprise_learner_patcher.return_value = {} - self.addCleanup(enterprise_learner_patcher.stop) + filter_patcher = patch( + 'openedx.core.djangoapps.user_api.accounts.api.AccountSettingsReadOnlyFieldsRequested.run_filter', + return_value=(set(), None), + ) + filter_patcher.start() + self.addCleanup(filter_patcher.stop) def test_get_username_provided(self): """Test the difference in behavior when a username is supplied to get_account_settings.""" @@ -248,73 +248,19 @@ def test_update_success_for_enterprise(self): account_settings = get_account_settings(self.default_request)[0] assert level_of_education == account_settings['level_of_education'] - @patch('openedx.features.enterprise_support.api.enterprise_customer_for_request') - @patch('openedx.features.enterprise_support.utils.third_party_auth.provider.Registry.get') - @ddt.data( - *itertools.product( - # field_name_value values - (("email", "new_email@example.com"), ("name", "new name"), ("country", "IN")), - # is_enterprise_user - (True, False), - # is_synch_learner_profile_data - (True, False), - # has `UserSocialAuth` record - (True, False), - ) + @patch( + 'openedx.core.djangoapps.user_api.accounts.api.AccountSettingsReadOnlyFieldsRequested.run_filter', + return_value=({'country'}, None), ) - @ddt.unpack - def test_update_validation_error_for_enterprise( - self, - field_name_value, - is_enterprise_user, - is_synch_learner_profile_data, - has_user_social_auth_record, - mock_auth_provider, - mock_customer, - ): - idp_backend_name = 'tpa-saml' - mock_customer.return_value = {} - if is_enterprise_user: - mock_customer.return_value.update({ - 'uuid': 'real-ent-uuid', - 'name': 'Dummy Enterprise', - 'identity_provider': 'saml-ubc', - 'identity_providers': [ - { - "provider_id": "saml-ubc", - } - ], - }) - mock_auth_provider.return_value.sync_learner_profile_data = is_synch_learner_profile_data - mock_auth_provider.return_value.backend_name = idp_backend_name - - update_data = {field_name_value[0]: field_name_value[1]} - - user_fullname_editable = False - if has_user_social_auth_record: - UserSocialAuth.objects.create( - provider=idp_backend_name, - user=self.user - ) - else: - UserSocialAuth.objects.all().delete() - # user's fullname is editable if no `UserSocialAuth` record exists - user_fullname_editable = field_name_value[0] == 'name' - - # prevent actual email change requests - with patch('openedx.core.djangoapps.user_api.accounts.api.student_views.do_email_change_request'): - # expect field un-editability only when all of the following conditions are met - if is_enterprise_user and is_synch_learner_profile_data and not user_fullname_editable: - with pytest.raises(AccountValidationError) as validation_error: - update_account_settings(self.user, update_data) - field_errors = validation_error.value.field_errors - assert 'This field is not editable via this API' == \ - field_errors[field_name_value[0]]['developer_message'] - else: - update_account_settings(self.user, update_data) - account_settings = get_account_settings(self.default_request)[0] - if field_name_value[0] != "email": - assert field_name_value[1] == account_settings[field_name_value[0]] + def test_readonly_field_from_filter_is_rejected(self, mock_run_filter): # pylint: disable=unused-argument + """ + When AccountSettingsReadOnlyFieldsRequested.run_filter returns a field as read-only, + update_account_settings should raise AccountValidationError for that field. + """ + with pytest.raises(AccountValidationError) as exc_info: + update_account_settings(self.user, {"country": "IN"}) + field_errors = exc_info.value.field_errors + assert 'This field is not editable via this API' == field_errors['country']['developer_message'] def test_update_error_validating(self): """Test that AccountValidationError is thrown if incorrect values are supplied.""" diff --git a/requirements/edx-sandbox/base.txt b/requirements/edx-sandbox/base.txt index a2013ea7485f..0bb9dbfaebec 100644 --- a/requirements/edx-sandbox/base.txt +++ b/requirements/edx-sandbox/base.txt @@ -8,7 +8,7 @@ cffi==2.0.0 # via cryptography chem==2.0.0 # via -r requirements/edx-sandbox/base.in -click==8.3.0 +click==8.3.2 # via nltk codejail-includes==2.0.0 # via -r requirements/edx-sandbox/base.in @@ -20,11 +20,11 @@ cryptography==45.0.7 # -r requirements/edx-sandbox/base.in cycler==0.12.1 # via matplotlib -fonttools==4.60.1 +fonttools==4.62.1 # via matplotlib -joblib==1.5.2 +joblib==1.5.3 # via nltk -kiwisolver==1.4.9 +kiwisolver==1.5.0 # via matplotlib lxml[html-clean]==5.3.2 # via @@ -32,19 +32,19 @@ lxml[html-clean]==5.3.2 # -r requirements/edx-sandbox/base.in # lxml-html-clean # openedx-calc -lxml-html-clean==0.4.3 +lxml-html-clean==0.4.4 # via lxml markupsafe==3.0.3 # via # chem # openedx-calc -matplotlib==3.10.6 +matplotlib==3.10.8 # via -r requirements/edx-sandbox/base.in mpmath==1.3.0 # via sympy -networkx==3.5 +networkx==3.6.1 # via -r requirements/edx-sandbox/base.in -nltk==3.9.2 +nltk==3.9.4 # via # -r requirements/edx-sandbox/base.in # chem @@ -56,15 +56,15 @@ numpy==1.26.4 # matplotlib # openedx-calc # scipy -openedx-calc==4.0.2 +openedx-calc==4.0.3 # via -r requirements/edx-sandbox/base.in -packaging==25.0 +packaging==26.0 # via matplotlib -pillow==11.3.0 +pillow==12.2.0 # via matplotlib -pycparser==2.23 +pycparser==3.0 # via cffi -pyparsing==3.2.5 +pyparsing==3.3.2 # via # -r requirements/edx-sandbox/base.in # chem @@ -74,9 +74,9 @@ python-dateutil==2.9.0.post0 # via matplotlib random2==1.0.2 # via -r requirements/edx-sandbox/base.in -regex==2025.9.18 +regex==2026.4.4 # via nltk -scipy==1.16.2 +scipy==1.17.1 # via # -r requirements/edx-sandbox/base.in # chem @@ -86,5 +86,5 @@ sympy==1.14.0 # via # -r requirements/edx-sandbox/base.in # openedx-calc -tqdm==4.67.1 +tqdm==4.67.3 # via nltk diff --git a/requirements/edx/assets.txt b/requirements/edx/assets.txt index f66289e09b21..12e66aadbf9f 100644 --- a/requirements/edx/assets.txt +++ b/requirements/edx/assets.txt @@ -4,13 +4,13 @@ # # make upgrade # -click==8.3.0 +click==8.3.2 # via -r requirements/edx/assets.in libsass==0.10.0 # via # -c requirements/constraints.txt # -r requirements/edx/assets.in -nodeenv==1.9.1 +nodeenv==1.10.0 # via -r requirements/edx/assets.in six==1.17.0 # via libsass diff --git a/requirements/edx/base.txt b/requirements/edx/base.txt index 661b72370e1c..eb0fb4a697f2 100644 --- a/requirements/edx/base.txt +++ b/requirements/edx/base.txt @@ -8,7 +8,7 @@ acid-xblock==0.4.1 # via -r requirements/edx/kernel.in aiohappyeyeballs==2.6.1 # via aiohttp -aiohttp==3.13.3 +aiohttp==3.13.5 # via geoip2 aiosignal==1.4.0 # via aiohttp @@ -22,18 +22,18 @@ aniso8601==10.0.1 # tincan annotated-types==0.7.0 # via pydantic -anyio==4.11.0 +anyio==4.13.0 # via httpx appdirs==1.4.4 # via fs -asgiref==3.10.0 +asgiref==3.11.1 # via # django # django-cors-headers # django-countries asn1crypto==1.5.1 # via snowflake-connector-python -attrs==25.4.0 +attrs==26.1.0 # via # -r requirements/edx/kernel.in # aiohttp @@ -43,7 +43,7 @@ attrs==25.4.0 # openedx-events # openedx-learning # referencing -babel==2.17.0 +babel==2.18.0 # via # -r requirements/edx/kernel.in # enmerkar @@ -52,13 +52,14 @@ backoff==1.10.0 # via analytics-python bcrypt==5.0.0 # via paramiko -beautifulsoup4==4.14.2 +beautifulsoup4==4.14.3 # via # openedx-forum # pynliner -billiard==4.2.2 + # xblocks-contrib +billiard==4.2.4 # via celery -bleach[css]==6.2.0 +bleach[css]==6.3.0 # via # edx-enterprise # lti-consumer-xblock @@ -68,14 +69,14 @@ bleach[css]==6.2.0 # xblock-poll boto==2.49.0 # via -r requirements/edx/kernel.in -boto3==1.40.46 +boto3==1.42.86 # via # -r requirements/edx/kernel.in # django-ses # fs-s3fs # ora2 # snowflake-connector-python -botocore==1.40.46 +botocore==1.42.86 # via # -r requirements/edx/kernel.in # boto3 @@ -83,15 +84,13 @@ botocore==1.40.46 # snowflake-connector-python bridgekeeper==0.9 # via -r requirements/edx/kernel.in -cachecontrol==0.14.3 +cachecontrol==0.14.4 # via firebase-admin -cachetools==6.2.0 - # via - # edxval - # google-auth -camel-converter[pydantic]==4.0.1 +cachetools==7.0.5 + # via edxval +camel-converter[pydantic]==5.1.0 # via meilisearch -celery==5.5.3 +celery==5.6.3 # via # -c requirements/constraints.txt # -r requirements/edx/kernel.in @@ -102,26 +101,28 @@ celery==5.5.3 # enterprise-integrated-channels # event-tracking # openedx-learning -certifi==2025.10.5 +certifi==2026.2.25 # via # elasticsearch # httpcore # httpx # requests # snowflake-connector-python -cffi==1.17.1 +cffi==2.0.0 # via # cryptography # pynacl -chardet==5.2.0 +chardet==7.4.1 # via pysrt -charset-normalizer==3.4.3 +charset-normalizer==3.4.7 # via # requests # snowflake-connector-python chem==2.0.0 - # via -r requirements/edx/kernel.in -click==8.3.0 + # via + # -r requirements/edx/kernel.in + # xblocks-contrib +click==8.3.2 # via # celery # click-didyoumean @@ -136,13 +137,13 @@ click-plugins==1.1.1.2 # via celery click-repl==0.3.0 # via celery -code-annotations==2.3.0 +code-annotations==2.3.2 # via # edx-enterprise # edx-toggles codejail-includes==2.0.0 # via -r requirements/edx/kernel.in -crowdsourcehinter-xblock==0.8 +crowdsourcehinter-xblock==1.0.0 # via -r requirements/edx/bundled.in cryptography==45.0.7 # via @@ -150,13 +151,13 @@ cryptography==45.0.7 # -r requirements/edx/kernel.in # django-fernet-fields-v2 # edx-enterprise + # google-auth # jwcrypto # paramiko # pgpy # pyjwt # pyopenssl # snowflake-connector-python - # social-auth-core cssutils==2.11.1 # via pynliner defusedxml==0.7.1 @@ -166,7 +167,8 @@ defusedxml==0.7.1 # ora2 # python3-openid # social-auth-core -django==4.2.28 + # xblocks-contrib +django==4.2.30 # via # -c requirements/common_constraints.txt # -c requirements/constraints.txt @@ -240,8 +242,9 @@ django==4.2.28 # social-auth-app-django # super-csv # xblock-google-drive + # xblocks-contrib # xss-utils -django-appconf==1.1.0 +django-appconf==1.2.0 # via django-statici18n django-autocomplete-light==3.12.1 # via -r requirements/edx/kernel.in @@ -251,7 +254,7 @@ django-celery-results==2.6.0 # via -r requirements/edx/kernel.in django-classy-tags==4.1.0 # via django-sekizai -django-config-models==2.9.0 +django-config-models==3.0.0 # via # -r requirements/edx/kernel.in # edx-enterprise @@ -260,7 +263,7 @@ django-config-models==2.9.0 # lti-consumer-xblock django-cors-headers==4.9.0 # via -r requirements/edx/kernel.in -django-countries==7.6.1 +django-countries==8.2.0 # via # -r requirements/edx/kernel.in # edx-enterprise @@ -330,7 +333,7 @@ django-object-actions==5.0.0 # enterprise-integrated-channels django-pipeline==4.1.0 # via -r requirements/edx/kernel.in -django-push-notifications==3.2.1 +django-push-notifications==3.3.0 # via edx-ace django-ratelimit==4.1.0 # via -r requirements/edx/kernel.in @@ -338,9 +341,9 @@ django-sekizai==4.1.0 # via # -r requirements/edx/kernel.in # openedx-django-wiki -django-ses==4.4.0 +django-ses==4.7.2 # via -r requirements/edx/bundled.in -django-simple-history==3.10.1 +django-simple-history==3.11.0 # via # -r requirements/edx/kernel.in # edx-enterprise @@ -349,18 +352,17 @@ django-simple-history==3.10.1 # edx-proctoring # enterprise-integrated-channels # ora2 -django-statici18n==2.6.0 +django-statici18n==2.7.1 # via # -r requirements/edx/kernel.in # lti-consumer-xblock # xblock-drag-and-drop-v2 # xblock-poll - # xblocks-contrib django-storages==1.14.6 # via # -r requirements/edx/kernel.in # edxval -django-user-tasks==3.4.3 +django-user-tasks==4.0.0 # via -r requirements/edx/kernel.in django-waffle==5.0.0 # via @@ -370,11 +372,11 @@ django-waffle==5.0.0 # edx-enterprise # edx-proctoring # edx-toggles -django-webpack-loader==3.2.1 +django-webpack-loader==3.2.3 # via # -r requirements/edx/kernel.in # edx-proctoring -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/edx/kernel.in # django-config-models @@ -398,25 +400,25 @@ djangorestframework-xml==2.0.0 # via edx-enterprise dnspython==2.8.0 # via pymongo -done-xblock==2.5.0 +done-xblock==3.0.0 # via -r requirements/edx/bundled.in drf-jwt==1.19.2 # via edx-drf-extensions -drf-spectacular==0.28.0 +drf-spectacular==0.29.0 # via -r requirements/edx/kernel.in -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via # django-user-tasks # edx-api-doc-tools edx-ace==1.15.0 # via -r requirements/edx/kernel.in -edx-api-doc-tools==2.1.0 +edx-api-doc-tools==3.0.0 # via # -r requirements/edx/kernel.in # edx-name-affirmation -edx-auth-backends==4.6.1 +edx-auth-backends==5.0.0 # via -r requirements/edx/kernel.in -edx-bulk-grades==1.2.0 +edx-bulk-grades==2.0.0 # via # -r requirements/edx/kernel.in # staff-graded-xblock @@ -425,21 +427,23 @@ edx-ccx-keys==2.0.2 # -r requirements/edx/kernel.in # lti-consumer-xblock # openedx-events -edx-celeryutils==1.4.0 +edx-celeryutils==2.0.0 # via # -r requirements/edx/kernel.in # edx-name-affirmation # super-csv -edx-codejail==4.0.0 - # via -r requirements/edx/kernel.in -edx-completion==4.9 +edx-codejail==4.1.0 + # via + # -r requirements/edx/kernel.in + # xblocks-contrib +edx-completion==5.0.0 # via -r requirements/edx/kernel.in edx-django-release-util==1.5.0 # via # -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 @@ -460,6 +464,7 @@ edx-django-utils==8.0.1 # openedx-events # ora2 # super-csv + # xblocks-contrib edx-drf-extensions==10.6.0 # via # -r requirements/edx/kernel.in @@ -481,16 +486,15 @@ edx-event-bus-kafka==6.1.0 # via -r requirements/edx/kernel.in edx-event-bus-redis==0.6.1 # via -r requirements/edx/kernel.in -edx-i18n-tools==1.9.0 +edx-i18n-tools==2.0.0 # via # -r requirements/edx/bundled.in # ora2 - # xblocks-contrib -edx-milestones==1.1.0 +edx-milestones==2.0.0 # via -r requirements/edx/kernel.in edx-name-affirmation==3.0.2 # via -r requirements/edx/kernel.in -edx-opaque-keys[django]==3.0.0 +edx-opaque-keys[django]==4.0.0 # via # -r requirements/edx/kernel.in # edx-bulk-grades @@ -508,33 +512,34 @@ edx-opaque-keys[django]==3.0.0 # openedx-filters # ora2 # xblocks-contrib -edx-organizations==7.3.0 +edx-organizations==8.0.0 # via -r requirements/edx/kernel.in edx-proctoring==5.2.0 # via -r requirements/edx/kernel.in -edx-rbac==2.1.0 +edx-rbac==3.0.0 # via # edx-enterprise # enterprise-integrated-channels -edx-rest-api-client==6.2.0 +edx-rest-api-client==7.0.0 # via # -r requirements/edx/kernel.in # edx-enterprise # edx-proctoring # enterprise-integrated-channels -edx-search==4.3.0 +edx-search==5.0.0 # via # -r requirements/edx/kernel.in # openedx-forum -edx-sga==0.26.0 +edx-sga==0.27.1 # via -r requirements/edx/bundled.in -edx-submissions==3.12.0 +edx-submissions==4.0.0 # via # -r requirements/edx/kernel.in # ora2 + # xblocks-contrib edx-tincan-py35==2.0.0 # via enterprise-integrated-channels -edx-toggles==5.4.1 +edx-toggles==6.0.0 # via # -r requirements/edx/kernel.in # edx-auth-backends @@ -547,12 +552,15 @@ edx-toggles==5.4.1 # edxval # event-tracking # ora2 -edx-when==3.0.0 + # xblocks-contrib +edx-when==4.0.0 # via # -r requirements/edx/kernel.in # edx-proctoring -edxval==3.1.0 - # via -r requirements/edx/kernel.in +edxval==4.0.0 + # via + # -r requirements/edx/kernel.in + # xblocks-contrib elasticsearch==7.9.1 # via # -c requirements/common_constraints.txt @@ -565,17 +573,17 @@ enmerkar-underscore==2.4.0 # via -r requirements/edx/kernel.in enterprise-integrated-channels==0.1.56 # via -r requirements/edx/bundled.in -event-tracking==3.3.0 +event-tracking==4.0.0 # via # -r requirements/edx/kernel.in # edx-completion # edx-proctoring # edx-search -fastavro==1.12.0 +fastavro==1.12.1 # via openedx-events -filelock==3.19.1 +filelock==3.25.2 # via snowflake-connector-python -firebase-admin==7.1.0 +firebase-admin==7.3.0 # via edx-ace frozenlist==1.8.0 # via @@ -587,57 +595,59 @@ fs==2.4.16 # fs-s3fs # openedx-django-pyfs # xblock + # xblocks-contrib fs-s3fs==1.1.1 # via # -r requirements/edx/kernel.in # openedx-django-pyfs -geoip2==5.1.0 +geoip2==5.2.0 # via -r requirements/edx/kernel.in glob2==0.7 # via -r requirements/edx/kernel.in -google-api-core[grpc]==2.25.2 +google-api-core[grpc]==2.30.2 # via # firebase-admin # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-auth==2.41.1 +google-auth==2.49.1 # via # google-api-core # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-cloud-core==2.4.3 +google-cloud-core==2.5.1 # via # google-cloud-firestore # google-cloud-storage -google-cloud-firestore==2.21.0 +google-cloud-firestore==2.26.0 # via firebase-admin -google-cloud-storage==3.4.0 +google-cloud-storage==3.10.1 # via firebase-admin -google-crc32c==1.7.1 +google-crc32c==1.8.0 # via # google-cloud-storage # google-resumable-media -google-resumable-media==2.7.2 +google-resumable-media==2.8.2 # via google-cloud-storage -googleapis-common-protos==1.70.0 +googleapis-common-protos==1.74.0 # via # google-api-core # grpcio-status -grpcio==1.75.1 +grpcio==1.80.0 # via # google-api-core + # google-cloud-firestore # grpcio-status -grpcio-status==1.75.1 +grpcio-status==1.80.0 # via google-api-core -gunicorn==23.0.0 +gunicorn==25.3.0 # via -r requirements/edx/kernel.in h11==0.16.0 # via httpcore h2==4.3.0 # via httpx -help-tokens==3.2.0 +help-tokens==4.0.0 # via -r requirements/edx/kernel.in hpack==4.1.0 # via h2 @@ -645,15 +655,18 @@ html5lib==1.1 # via # -r requirements/edx/kernel.in # ora2 + # xblocks-contrib httpcore==1.0.9 # via httpx httpx[http2]==0.28.1 - # via firebase-admin + # via + # firebase-admin + # typesense hyperframe==6.1.0 # via h2 -icalendar==6.3.1 +icalendar==7.0.3 # via -r requirements/edx/kernel.in -idna==3.10 +idna==3.11 # via # anyio # httpx @@ -661,13 +674,13 @@ idna==3.10 # requests # snowflake-connector-python # yarl -importlib-metadata==8.7.0 +importlib-metadata==9.0.0 # via -r requirements/edx/kernel.in inflection==0.5.1 # via # drf-spectacular # drf-yasg -invoke==2.2.0 +invoke==3.0.3 # via paramiko ipaddress==1.0.23 # via -r requirements/edx/kernel.in @@ -675,11 +688,11 @@ isodate==0.7.2 # via python3-saml jinja2==3.1.6 # via code-annotations -jmespath==1.0.1 +jmespath==1.1.0 # via # boto3 # botocore -joblib==1.5.2 +joblib==1.5.3 # via nltk jsondiff==2.2.1 # via edx-enterprise @@ -693,17 +706,17 @@ jsonfield==3.2.0 # enterprise-integrated-channels # lti-consumer-xblock # ora2 -jsonschema==4.25.1 +jsonschema==4.26.0 # via # drf-spectacular # optimizely-sdk jsonschema-specifications==2025.9.1 # via jsonschema -jwcrypto==1.5.6 +jwcrypto==1.5.7 # via # django-oauth-toolkit # pylti1p3 -kombu==5.5.4 +kombu==5.6.2 # via celery laboratory==1.0.2 # via -r requirements/edx/kernel.in @@ -713,9 +726,7 @@ lazy==1.6 # lti-consumer-xblock # ora2 # xblock -loremipsum==1.0.5 - # via ora2 -lti-consumer-xblock==9.14.2 +lti-consumer-xblock==10.0.1 # via -r requirements/edx/kernel.in lxml[html-clean]==5.3.2 # via @@ -730,8 +741,9 @@ lxml[html-clean]==5.3.2 # ora2 # python3-saml # xblock + # xblocks-contrib # xmlsec -lxml-html-clean==0.4.3 +lxml-html-clean==0.4.4 # via lxml mailsnake==1.6.4 # via -r requirements/edx/bundled.in @@ -742,7 +754,7 @@ mako==1.3.10 # lti-consumer-xblock # xblock # xblock-utils -markdown==3.9 +markdown==3.10.2 # via # -r requirements/edx/kernel.in # openedx-django-wiki @@ -755,37 +767,38 @@ markupsafe==3.0.3 # mako # openedx-calc # xblock -maxminddb==2.8.2 + # xblocks-contrib +maxminddb==3.1.1 # via geoip2 -meilisearch==0.37.0 +meilisearch==0.40.0 # via # -r requirements/edx/kernel.in # edx-search -mongoengine==0.29.1 +mongoengine==0.29.3 # via -r requirements/edx/kernel.in monotonic==1.6 # via analytics-python -more-itertools==10.8.0 +more-itertools==11.0.2 # via cssutils mpmath==1.3.0 # via sympy -msgpack==1.1.1 +msgpack==1.1.2 # via cachecontrol -multidict==6.7.0 +multidict==6.7.1 # via # aiohttp # yarl -mysqlclient==2.2.7 +mysqlclient==2.2.8 # via # -r requirements/edx/kernel.in # openedx-forum -nh3==0.3.0 +nh3==0.3.4 # via # -r requirements/edx/kernel.in # xblocks-contrib -nltk==3.9.2 +nltk==3.9.4 # via chem -nodeenv==1.9.1 +nodeenv==1.10.0 # via -r requirements/edx/kernel.in numpy==1.26.4 # via @@ -794,6 +807,7 @@ numpy==1.26.4 # openedx-calc # scipy # shapely + # xblocks-contrib oauthlib==3.3.1 # via # -r requirements/edx/kernel.in @@ -810,13 +824,12 @@ openedx-atlas==0.7.0 # edx-enterprise # enterprise-integrated-channels # openedx-forum -openedx-calc==4.0.2 - # via -r requirements/edx/kernel.in -openedx-django-pyfs==3.8.0 +openedx-calc==4.0.3 # via - # lti-consumer-xblock - # xblock + # -r requirements/edx/kernel.in # xblocks-contrib +openedx-django-pyfs==4.0.0 + # via xblock openedx-django-require==3.0.0 # via -r requirements/edx/kernel.in openedx-django-wiki==3.1.1 @@ -836,22 +849,23 @@ openedx-filters==2.1.0 # edx-enterprise # lti-consumer-xblock # ora2 -openedx-forum==0.3.8 +openedx-forum==0.4.1 # via -r requirements/edx/kernel.in openedx-learning==0.27.1 # via # -c requirements/constraints.txt # -r requirements/edx/kernel.in -optimizely-sdk==5.2.0 +optimizely-sdk==5.4.0 # via -r requirements/edx/bundled.in -ora2==6.16.4 +ora2==7.0.0 # via -r requirements/edx/bundled.in -packaging==25.0 +packaging==26.0 # via # drf-yasg # gunicorn # kombu # snowflake-connector-python + # wheel paramiko==4.0.0 # via edx-enterprise path==16.11.0 @@ -860,6 +874,7 @@ path==16.11.0 # -r requirements/edx/kernel.in # edx-i18n-tools # path-py + # xblocks-contrib path-py==12.5.0 # via # edx-enterprise @@ -869,58 +884,57 @@ pgpy==0.6.0 # via edx-enterprise piexif==1.1.3 # via -r requirements/edx/kernel.in -pillow==11.3.0 +pillow==12.2.0 # via # -r requirements/edx/kernel.in # edx-enterprise # edx-organizations # edxval -platformdirs==4.4.0 +platformdirs==4.9.6 # via snowflake-connector-python polib==1.2.0 # via edx-i18n-tools prompt-toolkit==3.0.52 # via click-repl -propcache==0.4.0 +propcache==0.4.1 # via # aiohttp # yarl -proto-plus==1.26.1 +proto-plus==1.27.2 # via # google-api-core # google-cloud-firestore -protobuf==6.32.1 +protobuf==6.33.6 # via # google-api-core # google-cloud-firestore # googleapis-common-protos # grpcio-status # proto-plus -psutil==7.1.0 +psutil==7.2.2 # via # -r requirements/edx/kernel.in # edx-django-utils -pyasn1==0.6.1 +pyasn1==0.6.3 # via # pgpy # pyasn1-modules - # rsa pyasn1-modules==0.4.2 # via google-auth -pycountry==24.6.1 +pycountry==26.2.16 # via -r requirements/edx/kernel.in -pycparser==2.23 +pycparser==3.0 # via cffi pycryptodomex==3.23.0 # via # -r requirements/edx/kernel.in # edx-proctoring # lti-consumer-xblock -pydantic==2.11.10 +pydantic==2.12.5 # via camel-converter -pydantic-core==2.33.2 +pydantic-core==2.41.5 # via pydantic -pyjwt[crypto]==2.10.1 +pyjwt[crypto]==2.12.1 # via # -r requirements/edx/kernel.in # drf-jwt @@ -947,7 +961,7 @@ pymongo==4.4.0 # event-tracking # mongoengine # openedx-forum -pynacl==1.6.0 +pynacl==1.6.2 # via # edx-django-utils # paramiko @@ -955,10 +969,11 @@ pynliner==0.8.0 # via -r requirements/edx/kernel.in pyopenssl==25.3.0 # via snowflake-connector-python -pyparsing==3.2.5 +pyparsing==3.3.2 # via # chem # openedx-calc + # xblocks-contrib pyrsistent==0.20.0 # via optimizely-sdk pysrt==1.1.2 @@ -982,7 +997,7 @@ python-ipware==3.0.0 # via django-ipware python-slugify==8.0.4 # via code-annotations -python-swiftclient==4.8.0 +python-swiftclient==4.10.0 # via ora2 python3-openid==3.2.0 ; python_version >= "3" # via @@ -990,7 +1005,7 @@ python3-openid==3.2.0 ; python_version >= "3" # social-auth-core python3-saml==1.16.0 # via -r requirements/edx/kernel.in -pytz==2025.2 +pytz==2026.1.post1 # via # -r requirements/edx/kernel.in # drf-yasg @@ -1006,6 +1021,7 @@ pytz==2025.2 # snowflake-connector-python # tincan # xblock + # xblocks-contrib pyuca==1.2 # via -r requirements/edx/kernel.in pyyaml==6.0.3 @@ -1019,20 +1035,22 @@ pyyaml==6.0.3 # jsondiff # xblock random2==1.0.2 - # via -r requirements/edx/kernel.in -recommender-xblock==3.1.0 + # via + # -r requirements/edx/kernel.in + # xblocks-contrib +recommender-xblock==5.0.0 # via -r requirements/edx/bundled.in -redis==6.4.0 +redis==7.4.0 # via # -r requirements/edx/kernel.in # walrus -referencing==0.36.2 +referencing==0.37.0 # via # jsonschema # jsonschema-specifications -regex==2025.9.18 +regex==2026.4.4 # via nltk -requests==2.32.5 +requests==2.33.1 # via # analytics-python # cachecontrol @@ -1057,32 +1075,33 @@ requests==2.32.5 # snowflake-connector-python # social-auth-core # xblock-google-drive + # xblocks-contrib requests-oauthlib==2.0.0 # via # -r requirements/edx/kernel.in # social-auth-core -rpds-py==0.27.1 +rpds-py==0.30.0 # via # jsonschema # referencing -rsa==4.9.1 - # via google-auth rules==3.5 # via # -r requirements/edx/kernel.in # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.14.0 +s3transfer==0.16.0 # via boto3 sailthru-client==2.2.3 # via edx-ace -scipy==1.16.2 +scipy==1.17.1 # via chem semantic-version==2.10.0 # via edx-drf-extensions shapely==2.1.2 - # via -r requirements/edx/kernel.in + # via + # -r requirements/edx/kernel.in + # xblocks-contrib simplejson==3.20.2 # via # -r requirements/edx/kernel.in @@ -1090,6 +1109,7 @@ simplejson==3.20.2 # super-csv # xblock # xblock-utils + # xblocks-contrib six==1.17.0 # via # -r requirements/edx/kernel.in @@ -1113,9 +1133,7 @@ slumber==0.7.1 # edx-bulk-grades # edx-enterprise # enterprise-integrated-channels -sniffio==1.3.1 - # via anyio -snowflake-connector-python==4.2.0 +snowflake-connector-python==4.3.0 # via # edx-enterprise # enterprise-integrated-channels @@ -1125,12 +1143,12 @@ social-auth-app-django==5.4.1 # -r requirements/edx/kernel.in # edx-auth-backends # edx-enterprise -social-auth-core==4.7.0 +social-auth-core==4.8.5 # via # -r requirements/edx/kernel.in # edx-auth-backends # social-auth-app-django -sorl-thumbnail==12.11.0 +sorl-thumbnail==13.0.0 # via # -r requirements/edx/kernel.in # openedx-django-wiki @@ -1138,13 +1156,13 @@ sortedcontainers==2.4.0 # via # -r requirements/edx/kernel.in # snowflake-connector-python -soupsieve==2.8 +soupsieve==2.8.3 # via beautifulsoup4 -sqlparse==0.5.3 +sqlparse==0.5.5 # via django -staff-graded-xblock==3.1.0 +staff-graded-xblock==4.0.0 # via -r requirements/edx/bundled.in -stevedore==5.5.0 +stevedore==5.7.0 # via # -r requirements/edx/kernel.in # code-annotations @@ -1152,11 +1170,11 @@ stevedore==5.5.0 # edx-django-utils # edx-enterprise # edx-opaque-keys -super-csv==4.1.0 +super-csv==5.0.0 # via edx-bulk-grades sympy==1.14.0 # via openedx-calc -testfixtures==9.1.0 +testfixtures==11.0.0 # via edx-enterprise text-unidecode==1.3 # via python-slugify @@ -1164,12 +1182,16 @@ tincan==1.0.0 # via edx-enterprise tinycss2==1.4.0 # via bleach -tomlkit==0.13.3 +tomlkit==0.14.0 # via # openedx-learning # snowflake-connector-python -tqdm==4.67.1 +tqdm==4.67.3 # via nltk +typesense==2.0.0 + # via + # edx-search + # openedx-forum typing-extensions==4.15.0 # via # aiosignal @@ -1178,6 +1200,7 @@ typing-extensions==4.15.0 # django-countries # edx-opaque-keys # grpcio + # icalendar # jwcrypto # pydantic # pydantic-core @@ -1185,13 +1208,16 @@ typing-extensions==4.15.0 # pyopenssl # referencing # snowflake-connector-python + # typesense # typing-inspection typing-inspection==0.4.2 # via pydantic -tzdata==2025.2 +tzdata==2026.1 # via # icalendar # kombu +tzlocal==5.3.1 + # via celery unicodecsv==0.14.1 # via # -r requirements/edx/kernel.in @@ -1203,7 +1229,7 @@ uritemplate==4.2.0 # via # drf-spectacular # drf-yasg -urllib3==2.5.0 +urllib3==2.6.3 # via # botocore # elasticsearch @@ -1213,13 +1239,13 @@ vine==5.1.0 # amqp # celery # kombu -voluptuous==0.15.2 +voluptuous==0.16.0 # via ora2 -walrus==0.9.5 +walrus==0.9.8 # via edx-event-bus-redis -wcwidth==0.2.14 +wcwidth==0.6.0 # via prompt-toolkit -web-fragments==3.1.0 +web-fragments==4.0.0 # via # -r requirements/edx/kernel.in # crowdsourcehinter-xblock @@ -1227,6 +1253,7 @@ web-fragments==3.1.0 # staff-graded-xblock # xblock # xblock-utils + # xblocks-contrib webencodings==0.5.1 # via # bleach @@ -1236,11 +1263,14 @@ webob==1.8.9 # via # -r requirements/edx/kernel.in # xblock -wheel==0.45.1 + # xblocks-contrib +wheel==0.46.3 # via django-pipeline -wrapt==1.17.3 - # via -r requirements/edx/kernel.in -xblock[django]==5.2.0 +wrapt==2.1.2 + # via + # -r requirements/edx/kernel.in + # xblocks-contrib +xblock[django]==6.0.0 # via # -r requirements/edx/kernel.in # acid-xblock @@ -1266,15 +1296,15 @@ xblock-utils==4.0.0 # via # edx-sga # xblock-poll -xblocks-contrib==0.6.0 +xblocks-contrib==0.13.1 # via -r requirements/edx/bundled.in xmlsec==1.3.14 # via # -c requirements/constraints.txt # python3-saml -xss-utils==0.8.0 +xss-utils==1.0.0 # via -r requirements/edx/kernel.in -yarl==1.22.0 +yarl==1.23.0 # via aiohttp zipp==3.23.0 # via importlib-metadata diff --git a/requirements/edx/coverage.txt b/requirements/edx/coverage.txt index 010306d68c45..86fcd7de4345 100644 --- a/requirements/edx/coverage.txt +++ b/requirements/edx/coverage.txt @@ -4,11 +4,11 @@ # # make upgrade # -chardet==5.2.0 +chardet==7.4.1 # via diff-cover -coverage==7.10.7 +coverage==7.13.5 # via -r requirements/edx/coverage.in -diff-cover==9.7.1 +diff-cover==10.2.0 # via -r requirements/edx/coverage.in jinja2==3.1.6 # via diff-cover @@ -16,5 +16,5 @@ markupsafe==3.0.3 # via jinja2 pluggy==1.6.0 # via diff-cover -pygments==2.19.2 +pygments==2.20.0 # via diff-cover diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index b9ab88b74b6b..a02307d33f38 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -1379,7 +1379,7 @@ openedx-events==10.5.0 # edx-name-affirmation # event-tracking # ora2 -openedx-filters==2.1.0 +openedx-filters==3.1.0 # via # -r requirements/edx/doc.txt # -r requirements/edx/testing.txt diff --git a/requirements/edx/doc.txt b/requirements/edx/doc.txt index be3d6e42bda3..1cdce6872bff 100644 --- a/requirements/edx/doc.txt +++ b/requirements/edx/doc.txt @@ -12,7 +12,7 @@ aiohappyeyeballs==2.6.1 # via # -r requirements/edx/base.txt # aiohttp -aiohttp==3.13.3 +aiohttp==3.13.5 # via # -r requirements/edx/base.txt # geoip2 @@ -37,7 +37,7 @@ annotated-types==0.7.0 # via # -r requirements/edx/base.txt # pydantic -anyio==4.11.0 +anyio==4.13.0 # via # -r requirements/edx/base.txt # httpx @@ -45,7 +45,7 @@ appdirs==1.4.4 # via # -r requirements/edx/base.txt # fs -asgiref==3.10.0 +asgiref==3.11.1 # via # -r requirements/edx/base.txt # django @@ -55,9 +55,9 @@ asn1crypto==1.5.1 # via # -r requirements/edx/base.txt # snowflake-connector-python -astroid==4.0.3 +astroid==4.1.2 # via sphinx-autoapi -attrs==25.4.0 +attrs==26.1.0 # via # -r requirements/edx/base.txt # aiohttp @@ -67,7 +67,7 @@ attrs==25.4.0 # openedx-events # openedx-learning # referencing -babel==2.17.0 +babel==2.18.0 # via # -r requirements/edx/base.txt # enmerkar @@ -82,17 +82,18 @@ bcrypt==5.0.0 # via # -r requirements/edx/base.txt # paramiko -beautifulsoup4==4.14.2 +beautifulsoup4==4.14.3 # via # -r requirements/edx/base.txt # openedx-forum # pydata-sphinx-theme # pynliner -billiard==4.2.2 + # xblocks-contrib +billiard==4.2.4 # via # -r requirements/edx/base.txt # celery -bleach[css]==6.2.0 +bleach[css]==6.3.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -103,14 +104,14 @@ bleach[css]==6.2.0 # xblock-poll boto==2.49.0 # via -r requirements/edx/base.txt -boto3==1.40.46 +boto3==1.42.86 # via # -r requirements/edx/base.txt # django-ses # fs-s3fs # ora2 # snowflake-connector-python -botocore==1.40.46 +botocore==1.42.86 # via # -r requirements/edx/base.txt # boto3 @@ -118,20 +119,19 @@ botocore==1.40.46 # snowflake-connector-python bridgekeeper==0.9 # via -r requirements/edx/base.txt -cachecontrol==0.14.3 +cachecontrol==0.14.4 # via # -r requirements/edx/base.txt # firebase-admin -cachetools==6.2.0 +cachetools==7.0.5 # via # -r requirements/edx/base.txt # edxval - # google-auth -camel-converter[pydantic]==4.0.1 +camel-converter[pydantic]==5.1.0 # via # -r requirements/edx/base.txt # meilisearch -celery==5.5.3 +celery==5.6.3 # via # -c requirements/constraints.txt # -r requirements/edx/base.txt @@ -142,7 +142,7 @@ celery==5.5.3 # enterprise-integrated-channels # event-tracking # openedx-learning -certifi==2025.10.5 +certifi==2026.2.25 # via # -r requirements/edx/base.txt # elasticsearch @@ -150,23 +150,25 @@ certifi==2025.10.5 # httpx # requests # snowflake-connector-python -cffi==1.17.1 +cffi==2.0.0 # via # -r requirements/edx/base.txt # cryptography # pynacl -chardet==5.2.0 +chardet==7.4.1 # via # -r requirements/edx/base.txt # pysrt -charset-normalizer==3.4.3 +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 -click==8.3.0 + # via + # -r requirements/edx/base.txt + # xblocks-contrib +click==8.3.2 # via # -r requirements/edx/base.txt # celery @@ -188,7 +190,7 @@ click-repl==0.3.0 # via # -r requirements/edx/base.txt # celery -code-annotations==2.3.0 +code-annotations==2.3.2 # via # -r requirements/edx/base.txt # -r requirements/edx/doc.in @@ -196,7 +198,7 @@ code-annotations==2.3.0 # edx-toggles codejail-includes==2.0.0 # via -r requirements/edx/base.txt -crowdsourcehinter-xblock==0.8 +crowdsourcehinter-xblock==1.0.0 # via -r requirements/edx/base.txt cryptography==45.0.7 # via @@ -204,13 +206,13 @@ cryptography==45.0.7 # -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.11.1 # via # -r requirements/edx/base.txt @@ -224,7 +226,8 @@ defusedxml==0.7.1 # ora2 # python3-openid # social-auth-core -django==4.2.28 + # xblocks-contrib +django==4.2.30 # via # -c requirements/common_constraints.txt # -c requirements/constraints.txt @@ -298,8 +301,9 @@ django==4.2.28 # social-auth-app-django # super-csv # xblock-google-drive + # xblocks-contrib # xss-utils -django-appconf==1.1.0 +django-appconf==1.2.0 # via # -r requirements/edx/base.txt # django-statici18n @@ -315,7 +319,7 @@ django-classy-tags==4.1.0 # via # -r requirements/edx/base.txt # django-sekizai -django-config-models==2.9.0 +django-config-models==3.0.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -324,7 +328,7 @@ django-config-models==2.9.0 # lti-consumer-xblock django-cors-headers==4.9.0 # via -r requirements/edx/base.txt -django-countries==7.6.1 +django-countries==8.2.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -400,7 +404,7 @@ django-object-actions==5.0.0 # enterprise-integrated-channels django-pipeline==4.1.0 # via -r requirements/edx/base.txt -django-push-notifications==3.2.1 +django-push-notifications==3.3.0 # via # -r requirements/edx/base.txt # edx-ace @@ -410,9 +414,9 @@ django-sekizai==4.1.0 # via # -r requirements/edx/base.txt # openedx-django-wiki -django-ses==4.4.0 +django-ses==4.7.2 # via -r requirements/edx/base.txt -django-simple-history==3.10.1 +django-simple-history==3.11.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -421,18 +425,17 @@ django-simple-history==3.10.1 # edx-proctoring # enterprise-integrated-channels # ora2 -django-statici18n==2.6.0 +django-statici18n==2.7.1 # via # -r requirements/edx/base.txt # lti-consumer-xblock # xblock-drag-and-drop-v2 # xblock-poll - # xblocks-contrib django-storages==1.14.6 # via # -r requirements/edx/base.txt # edxval -django-user-tasks==3.4.3 +django-user-tasks==4.0.0 # via -r requirements/edx/base.txt django-waffle==5.0.0 # via @@ -442,11 +445,11 @@ django-waffle==5.0.0 # edx-enterprise # edx-proctoring # edx-toggles -django-webpack-loader==3.2.1 +django-webpack-loader==3.2.3 # via # -r requirements/edx/base.txt # edx-proctoring -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/edx/base.txt # django-config-models @@ -474,33 +477,33 @@ dnspython==2.8.0 # via # -r requirements/edx/base.txt # pymongo -docutils==0.21.2 +docutils==0.22.4 # via # pydata-sphinx-theme # sphinx # sphinx-mdinclude -done-xblock==2.5.0 +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.28.0 +drf-spectacular==0.29.0 # via -r requirements/edx/base.txt -drf-yasg==1.21.11 +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==2.1.0 +edx-api-doc-tools==3.0.0 # via # -r requirements/edx/base.txt # edx-name-affirmation -edx-auth-backends==4.6.1 +edx-auth-backends==5.0.0 # via -r requirements/edx/base.txt -edx-bulk-grades==1.2.0 +edx-bulk-grades==2.0.0 # via # -r requirements/edx/base.txt # staff-graded-xblock @@ -509,21 +512,23 @@ edx-ccx-keys==2.0.2 # -r requirements/edx/base.txt # lti-consumer-xblock # openedx-events -edx-celeryutils==1.4.0 +edx-celeryutils==2.0.0 # via # -r requirements/edx/base.txt # edx-name-affirmation # super-csv -edx-codejail==4.0.0 - # via -r requirements/edx/base.txt -edx-completion==4.9 +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==5.1.0 +edx-django-sites-extensions==6.0.0 # via -r requirements/edx/base.txt edx-django-utils==8.0.1 # via @@ -544,6 +549,7 @@ edx-django-utils==8.0.1 # openedx-events # ora2 # super-csv + # xblocks-contrib edx-drf-extensions==10.6.0 # via # -r requirements/edx/base.txt @@ -565,16 +571,15 @@ edx-event-bus-kafka==6.1.0 # via -r requirements/edx/base.txt edx-event-bus-redis==0.6.1 # via -r requirements/edx/base.txt -edx-i18n-tools==1.9.0 +edx-i18n-tools==2.0.0 # via # -r requirements/edx/base.txt # ora2 - # xblocks-contrib -edx-milestones==1.1.0 +edx-milestones==2.0.0 # via -r requirements/edx/base.txt edx-name-affirmation==3.0.2 # via -r requirements/edx/base.txt -edx-opaque-keys[django]==3.0.0 +edx-opaque-keys[django]==4.0.0 # via # -r requirements/edx/base.txt # edx-bulk-grades @@ -592,36 +597,37 @@ edx-opaque-keys[django]==3.0.0 # openedx-filters # ora2 # xblocks-contrib -edx-organizations==7.3.0 +edx-organizations==8.0.0 # via -r requirements/edx/base.txt edx-proctoring==5.2.0 # via -r requirements/edx/base.txt -edx-rbac==2.1.0 +edx-rbac==3.0.0 # via # -r requirements/edx/base.txt # edx-enterprise # enterprise-integrated-channels -edx-rest-api-client==6.2.0 +edx-rest-api-client==7.0.0 # via # -r requirements/edx/base.txt # edx-enterprise # edx-proctoring # enterprise-integrated-channels -edx-search==4.3.0 +edx-search==5.0.0 # via # -r requirements/edx/base.txt # openedx-forum -edx-sga==0.26.0 +edx-sga==0.27.1 # via -r requirements/edx/base.txt -edx-submissions==3.12.0 +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==5.4.1 +edx-toggles==6.0.0 # via # -r requirements/edx/base.txt # edx-auth-backends @@ -634,12 +640,15 @@ edx-toggles==5.4.1 # edxval # event-tracking # ora2 -edx-when==3.0.0 + # xblocks-contrib +edx-when==4.0.0 # via # -r requirements/edx/base.txt # edx-proctoring -edxval==3.1.0 - # via -r requirements/edx/base.txt +edxval==4.0.0 + # via + # -r requirements/edx/base.txt + # xblocks-contrib elasticsearch==7.9.1 # via # -c requirements/common_constraints.txt @@ -655,21 +664,21 @@ enmerkar-underscore==2.4.0 # via -r requirements/edx/base.txt enterprise-integrated-channels==0.1.56 # via -r requirements/edx/base.txt -event-tracking==3.3.0 +event-tracking==4.0.0 # via # -r requirements/edx/base.txt # edx-completion # edx-proctoring # edx-search -fastavro==1.12.0 +fastavro==1.12.1 # via # -r requirements/edx/base.txt # openedx-events -filelock==3.19.1 +filelock==3.25.2 # via # -r requirements/edx/base.txt # snowflake-connector-python -firebase-admin==7.1.0 +firebase-admin==7.3.0 # via # -r requirements/edx/base.txt # edx-ace @@ -684,69 +693,71 @@ fs==2.4.16 # fs-s3fs # openedx-django-pyfs # xblock + # xblocks-contrib fs-s3fs==1.1.1 # via # -r requirements/edx/base.txt # openedx-django-pyfs -geoip2==5.1.0 +geoip2==5.2.0 # via -r requirements/edx/base.txt gitdb==4.0.12 # via gitpython -gitpython==3.1.45 +gitpython==3.1.46 # via -r requirements/edx/doc.in glob2==0.7 # via -r requirements/edx/base.txt -google-api-core[grpc]==2.25.2 +google-api-core[grpc]==2.30.2 # via # -r requirements/edx/base.txt # firebase-admin # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-auth==2.41.1 +google-auth==2.49.1 # via # -r requirements/edx/base.txt # google-api-core # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-cloud-core==2.4.3 +google-cloud-core==2.5.1 # via # -r requirements/edx/base.txt # google-cloud-firestore # google-cloud-storage -google-cloud-firestore==2.21.0 +google-cloud-firestore==2.26.0 # via # -r requirements/edx/base.txt # firebase-admin -google-cloud-storage==3.4.0 +google-cloud-storage==3.10.1 # via # -r requirements/edx/base.txt # firebase-admin -google-crc32c==1.7.1 +google-crc32c==1.8.0 # via # -r requirements/edx/base.txt # google-cloud-storage # google-resumable-media -google-resumable-media==2.7.2 +google-resumable-media==2.8.2 # via # -r requirements/edx/base.txt # google-cloud-storage -googleapis-common-protos==1.70.0 +googleapis-common-protos==1.74.0 # via # -r requirements/edx/base.txt # google-api-core # grpcio-status -grpcio==1.75.1 +grpcio==1.80.0 # via # -r requirements/edx/base.txt # google-api-core + # google-cloud-firestore # grpcio-status -grpcio-status==1.75.1 +grpcio-status==1.80.0 # via # -r requirements/edx/base.txt # google-api-core -gunicorn==23.0.0 +gunicorn==25.3.0 # via -r requirements/edx/base.txt h11==0.16.0 # via @@ -756,7 +767,7 @@ h2==4.3.0 # via # -r requirements/edx/base.txt # httpx -help-tokens==3.2.0 +help-tokens==4.0.0 # via -r requirements/edx/base.txt hpack==4.1.0 # via @@ -766,6 +777,7 @@ html5lib==1.1 # via # -r requirements/edx/base.txt # ora2 + # xblocks-contrib httpcore==1.0.9 # via # -r requirements/edx/base.txt @@ -774,13 +786,14 @@ 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==6.3.1 +icalendar==7.0.3 # via -r requirements/edx/base.txt -idna==3.10 +idna==3.11 # via # -r requirements/edx/base.txt # anyio @@ -789,16 +802,16 @@ idna==3.10 # requests # snowflake-connector-python # yarl -imagesize==1.4.1 +imagesize==2.0.0 # via sphinx -importlib-metadata==8.7.0 +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==2.2.0 +invoke==3.0.3 # via # -r requirements/edx/base.txt # paramiko @@ -814,12 +827,12 @@ jinja2==3.1.6 # code-annotations # sphinx # sphinx-autoapi -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/edx/base.txt # boto3 # botocore -joblib==1.5.2 +joblib==1.5.3 # via # -r requirements/edx/base.txt # nltk @@ -837,7 +850,7 @@ jsonfield==3.2.0 # enterprise-integrated-channels # lti-consumer-xblock # ora2 -jsonschema==4.25.1 +jsonschema==4.26.0 # via # -r requirements/edx/base.txt # drf-spectacular @@ -847,12 +860,12 @@ jsonschema-specifications==2025.9.1 # via # -r requirements/edx/base.txt # jsonschema -jwcrypto==1.5.6 +jwcrypto==1.5.7 # via # -r requirements/edx/base.txt # django-oauth-toolkit # pylti1p3 -kombu==5.5.4 +kombu==5.6.2 # via # -r requirements/edx/base.txt # celery @@ -865,11 +878,7 @@ lazy==1.6 # lti-consumer-xblock # ora2 # xblock -loremipsum==1.0.5 - # via - # -r requirements/edx/base.txt - # ora2 -lti-consumer-xblock==9.14.2 +lti-consumer-xblock==10.0.1 # via -r requirements/edx/base.txt lxml[html-clean]==5.3.2 # via @@ -884,8 +893,9 @@ lxml[html-clean]==5.3.2 # ora2 # python3-saml # xblock + # xblocks-contrib # xmlsec -lxml-html-clean==0.4.3 +lxml-html-clean==0.4.4 # via # -r requirements/edx/base.txt # lxml @@ -898,7 +908,7 @@ mako==1.3.10 # lti-consumer-xblock # xblock # xblock-utils -markdown==3.9 +markdown==3.10.2 # via # -r requirements/edx/base.txt # openedx-django-wiki @@ -912,23 +922,24 @@ markupsafe==3.0.3 # mako # openedx-calc # xblock -maxminddb==2.8.2 + # xblocks-contrib +maxminddb==3.1.1 # via # -r requirements/edx/base.txt # geoip2 -meilisearch==0.37.0 +meilisearch==0.40.0 # via # -r requirements/edx/base.txt # edx-search -mistune==3.1.4 +mistune==3.2.0 # via sphinx-mdinclude -mongoengine==0.29.1 +mongoengine==0.29.3 # via -r requirements/edx/base.txt monotonic==1.6 # via # -r requirements/edx/base.txt # analytics-python -more-itertools==10.8.0 +more-itertools==11.0.2 # via # -r requirements/edx/base.txt # cssutils @@ -936,28 +947,28 @@ mpmath==1.3.0 # via # -r requirements/edx/base.txt # sympy -msgpack==1.1.1 +msgpack==1.1.2 # via # -r requirements/edx/base.txt # cachecontrol -multidict==6.7.0 +multidict==6.7.1 # via # -r requirements/edx/base.txt # aiohttp # yarl -mysqlclient==2.2.7 +mysqlclient==2.2.8 # via # -r requirements/edx/base.txt # openedx-forum -nh3==0.3.0 +nh3==0.3.4 # via # -r requirements/edx/base.txt # xblocks-contrib -nltk==3.9.2 +nltk==3.9.4 # via # -r requirements/edx/base.txt # chem -nodeenv==1.9.1 +nodeenv==1.10.0 # via -r requirements/edx/base.txt numpy==1.26.4 # via @@ -967,6 +978,7 @@ numpy==1.26.4 # openedx-calc # scipy # shapely + # xblocks-contrib oauthlib==3.3.1 # via # -r requirements/edx/base.txt @@ -983,14 +995,14 @@ openedx-atlas==0.7.0 # edx-enterprise # enterprise-integrated-channels # openedx-forum -openedx-calc==4.0.2 - # via -r requirements/edx/base.txt -openedx-django-pyfs==3.8.0 +openedx-calc==4.0.3 # via # -r requirements/edx/base.txt - # lti-consumer-xblock - # xblock # xblocks-contrib +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.1 @@ -1010,25 +1022,25 @@ openedx-filters==2.1.0 # edx-enterprise # lti-consumer-xblock # ora2 -openedx-forum==0.3.8 +openedx-forum==0.4.1 # via -r requirements/edx/base.txt openedx-learning==0.27.1 # via # -c requirements/constraints.txt # -r requirements/edx/base.txt -optimizely-sdk==5.2.0 +optimizely-sdk==5.4.0 # via -r requirements/edx/base.txt -ora2==6.16.4 +ora2==7.0.0 # via -r requirements/edx/base.txt -packaging==25.0 +packaging==26.0 # via # -r requirements/edx/base.txt # drf-yasg # gunicorn # kombu - # pydata-sphinx-theme # snowflake-connector-python # sphinx + # wheel paramiko==4.0.0 # via # -r requirements/edx/base.txt @@ -1039,6 +1051,7 @@ path==16.11.0 # -r requirements/edx/base.txt # edx-i18n-tools # path-py + # xblocks-contrib path-py==12.5.0 # via # -r requirements/edx/base.txt @@ -1053,13 +1066,13 @@ picobox==4.0.0 # via sphinxcontrib-openapi piexif==1.1.3 # via -r requirements/edx/base.txt -pillow==11.3.0 +pillow==12.2.0 # via # -r requirements/edx/base.txt # edx-enterprise # edx-organizations # edxval -platformdirs==4.4.0 +platformdirs==4.9.6 # via # -r requirements/edx/base.txt # snowflake-connector-python @@ -1071,17 +1084,17 @@ prompt-toolkit==3.0.52 # via # -r requirements/edx/base.txt # click-repl -propcache==0.4.0 +propcache==0.4.1 # via # -r requirements/edx/base.txt # aiohttp # yarl -proto-plus==1.26.1 +proto-plus==1.27.2 # via # -r requirements/edx/base.txt # google-api-core # google-cloud-firestore -protobuf==6.32.1 +protobuf==6.33.6 # via # -r requirements/edx/base.txt # google-api-core @@ -1089,23 +1102,22 @@ protobuf==6.32.1 # googleapis-common-protos # grpcio-status # proto-plus -psutil==7.1.0 +psutil==7.2.2 # via # -r requirements/edx/base.txt # edx-django-utils -pyasn1==0.6.1 +pyasn1==0.6.3 # via # -r requirements/edx/base.txt # pgpy # pyasn1-modules - # rsa pyasn1-modules==0.4.2 # via # -r requirements/edx/base.txt # google-auth -pycountry==24.6.1 +pycountry==26.2.16 # via -r requirements/edx/base.txt -pycparser==2.23 +pycparser==3.0 # via # -r requirements/edx/base.txt # cffi @@ -1114,23 +1126,23 @@ pycryptodomex==3.23.0 # -r requirements/edx/base.txt # edx-proctoring # lti-consumer-xblock -pydantic==2.11.10 +pydantic==2.12.5 # via # -r requirements/edx/base.txt # camel-converter -pydantic-core==2.33.2 +pydantic-core==2.41.5 # via # -r requirements/edx/base.txt # pydantic -pydata-sphinx-theme==0.15.4 +pydata-sphinx-theme==0.16.1 # via sphinx-book-theme -pygments==2.19.2 +pygments==2.20.0 # via # accessible-pygments # pydata-sphinx-theme # sphinx # sphinx-mdinclude -pyjwt[crypto]==2.10.1 +pyjwt[crypto]==2.12.1 # via # -r requirements/edx/base.txt # drf-jwt @@ -1159,7 +1171,7 @@ pymongo==4.4.0 # event-tracking # mongoengine # openedx-forum -pynacl==1.6.0 +pynacl==1.6.2 # via # -r requirements/edx/base.txt # edx-django-utils @@ -1170,11 +1182,12 @@ pyopenssl==25.3.0 # via # -r requirements/edx/base.txt # snowflake-connector-python -pyparsing==3.2.5 +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 @@ -1204,7 +1217,7 @@ python-slugify==8.0.4 # via # -r requirements/edx/base.txt # code-annotations -python-swiftclient==4.8.0 +python-swiftclient==4.10.0 # via # -r requirements/edx/base.txt # ora2 @@ -1214,7 +1227,7 @@ python3-openid==3.2.0 ; python_version >= "3" # social-auth-core python3-saml==1.16.0 # via -r requirements/edx/base.txt -pytz==2025.2 +pytz==2026.1.post1 # via # -r requirements/edx/base.txt # drf-yasg @@ -1230,6 +1243,7 @@ pytz==2025.2 # snowflake-connector-python # tincan # xblock + # xblocks-contrib pyuca==1.2 # via -r requirements/edx/base.txt pyyaml==6.0.3 @@ -1245,23 +1259,25 @@ pyyaml==6.0.3 # 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 -recommender-xblock==3.1.0 - # via -r requirements/edx/base.txt -redis==6.4.0 +redis==7.4.0 # via # -r requirements/edx/base.txt # walrus -referencing==0.36.2 +referencing==0.37.0 # via # -r requirements/edx/base.txt # jsonschema # jsonschema-specifications -regex==2025.9.18 +regex==2026.4.4 # via # -r requirements/edx/base.txt # nltk -requests==2.32.5 +requests==2.33.1 # via # -r requirements/edx/base.txt # analytics-python @@ -1288,28 +1304,25 @@ requests==2.32.5 # 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-py==3.1.0 +roman-numerals==4.1.0 # via sphinx -rpds-py==0.27.1 +rpds-py==0.30.0 # via # -r requirements/edx/base.txt # jsonschema # referencing -rsa==4.9.1 - # via - # -r requirements/edx/base.txt - # google-auth rules==3.5 # via # -r requirements/edx/base.txt # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.14.0 +s3transfer==0.16.0 # via # -r requirements/edx/base.txt # boto3 @@ -1317,7 +1330,7 @@ sailthru-client==2.2.3 # via # -r requirements/edx/base.txt # edx-ace -scipy==1.16.2 +scipy==1.17.1 # via # -r requirements/edx/base.txt # chem @@ -1326,7 +1339,9 @@ semantic-version==2.10.0 # -r requirements/edx/base.txt # edx-drf-extensions shapely==2.1.2 - # via -r requirements/edx/base.txt + # via + # -r requirements/edx/base.txt + # xblocks-contrib simplejson==3.20.2 # via # -r requirements/edx/base.txt @@ -1334,6 +1349,7 @@ simplejson==3.20.2 # super-csv # xblock # xblock-utils + # xblocks-contrib six==1.17.0 # via # -r requirements/edx/base.txt @@ -1351,22 +1367,17 @@ six==1.17.0 # fs-s3fs # html5lib # python-dateutil - # sphinxcontrib-httpdomain slumber==0.7.1 # via # -r requirements/edx/base.txt # edx-bulk-grades # edx-enterprise # enterprise-integrated-channels -smmap==5.0.2 +smmap==5.0.3 # via gitdb -sniffio==1.3.1 - # via - # -r requirements/edx/base.txt - # anyio snowballstemmer==3.0.1 # via sphinx -snowflake-connector-python==4.2.0 +snowflake-connector-python==4.3.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -1377,12 +1388,12 @@ social-auth-app-django==5.4.1 # -r requirements/edx/base.txt # edx-auth-backends # edx-enterprise -social-auth-core==4.7.0 +social-auth-core==4.8.5 # via # -r requirements/edx/base.txt # edx-auth-backends # social-auth-app-django -sorl-thumbnail==12.11.0 +sorl-thumbnail==13.0.0 # via # -r requirements/edx/base.txt # openedx-django-wiki @@ -1390,11 +1401,11 @@ sortedcontainers==2.4.0 # via # -r requirements/edx/base.txt # snowflake-connector-python -soupsieve==2.8 +soupsieve==2.8.3 # via # -r requirements/edx/base.txt # beautifulsoup4 -sphinx==8.2.3 +sphinx==9.0.4 # via # -r requirements/edx/doc.in # pydata-sphinx-theme @@ -1410,13 +1421,13 @@ sphinx-autoapi==3.6.0 # via # -c requirements/constraints.txt # -r requirements/edx/doc.in -sphinx-book-theme==1.1.4 +sphinx-book-theme==1.2.0 # via -r requirements/edx/doc.in -sphinx-design==0.6.1 +sphinx-design==0.7.0 # via -r requirements/edx/doc.in sphinx-mdinclude==0.6.2 # via sphinxcontrib-openapi -sphinx-reredirects==1.0.0 +sphinx-reredirects==1.1.0 # via -r requirements/edx/doc.in sphinxcontrib-applehelp==2.0.0 # via sphinx @@ -1424,11 +1435,11 @@ sphinxcontrib-devhelp==2.0.0 # via sphinx sphinxcontrib-htmlhelp==2.1.0 # via sphinx -sphinxcontrib-httpdomain==1.8.1 +sphinxcontrib-httpdomain==2.0.0 # via sphinxcontrib-openapi sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-openapi[markdown]==0.8.4 +sphinxcontrib-openapi[markdown]==0.9.0 # via -r requirements/edx/doc.in sphinxcontrib-qthelp==2.0.0 # via sphinx @@ -1436,13 +1447,13 @@ sphinxcontrib-serializinghtml==2.0.0 # via sphinx sphinxext-rediraffe==0.3.0 # via -r requirements/edx/doc.in -sqlparse==0.5.3 +sqlparse==0.5.5 # via # -r requirements/edx/base.txt # django -staff-graded-xblock==3.1.0 +staff-graded-xblock==4.0.0 # via -r requirements/edx/base.txt -stevedore==5.5.0 +stevedore==5.7.0 # via # -r requirements/edx/base.txt # code-annotations @@ -1450,7 +1461,7 @@ stevedore==5.5.0 # edx-django-utils # edx-enterprise # edx-opaque-keys -super-csv==4.1.0 +super-csv==5.0.0 # via # -r requirements/edx/base.txt # edx-bulk-grades @@ -1458,7 +1469,7 @@ sympy==1.14.0 # via # -r requirements/edx/base.txt # openedx-calc -testfixtures==9.1.0 +testfixtures==11.0.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -1474,15 +1485,20 @@ tinycss2==1.4.0 # via # -r requirements/edx/base.txt # bleach -tomlkit==0.13.3 +tomlkit==0.14.0 # via # -r requirements/edx/base.txt # openedx-learning # snowflake-connector-python -tqdm==4.67.1 +tqdm==4.67.3 # 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 @@ -1492,6 +1508,7 @@ typing-extensions==4.15.0 # django-countries # edx-opaque-keys # grpcio + # icalendar # jwcrypto # pydantic # pydantic-core @@ -1500,16 +1517,21 @@ typing-extensions==4.15.0 # pyopenssl # referencing # snowflake-connector-python + # typesense # typing-inspection typing-inspection==0.4.2 # via # -r requirements/edx/base.txt # pydantic -tzdata==2025.2 +tzdata==2026.1 # via # -r requirements/edx/base.txt # icalendar # kombu +tzlocal==5.3.1 + # via + # -r requirements/edx/base.txt + # celery unicodecsv==0.14.1 # via # -r requirements/edx/base.txt @@ -1522,7 +1544,7 @@ uritemplate==4.2.0 # -r requirements/edx/base.txt # drf-spectacular # drf-yasg -urllib3==2.5.0 +urllib3==2.6.3 # via # -r requirements/edx/base.txt # botocore @@ -1534,19 +1556,19 @@ vine==5.1.0 # amqp # celery # kombu -voluptuous==0.15.2 +voluptuous==0.16.0 # via # -r requirements/edx/base.txt # ora2 -walrus==0.9.5 +walrus==0.9.8 # via # -r requirements/edx/base.txt # edx-event-bus-redis -wcwidth==0.2.14 +wcwidth==0.6.0 # via # -r requirements/edx/base.txt # prompt-toolkit -web-fragments==3.1.0 +web-fragments==4.0.0 # via # -r requirements/edx/base.txt # crowdsourcehinter-xblock @@ -1554,6 +1576,7 @@ web-fragments==3.1.0 # staff-graded-xblock # xblock # xblock-utils + # xblocks-contrib webencodings==0.5.1 # via # -r requirements/edx/base.txt @@ -1564,13 +1587,16 @@ webob==1.8.9 # via # -r requirements/edx/base.txt # xblock -wheel==0.45.1 + # xblocks-contrib +wheel==0.46.3 # via # -r requirements/edx/base.txt # django-pipeline -wrapt==1.17.3 - # via -r requirements/edx/base.txt -xblock[django]==5.2.0 +wrapt==2.1.2 + # via + # -r requirements/edx/base.txt + # xblocks-contrib +xblock[django]==6.0.0 # via # -r requirements/edx/base.txt # acid-xblock @@ -1597,16 +1623,16 @@ xblock-utils==4.0.0 # -r requirements/edx/base.txt # edx-sga # xblock-poll -xblocks-contrib==0.6.0 +xblocks-contrib==0.13.1 # via -r requirements/edx/base.txt xmlsec==1.3.14 # via # -c requirements/constraints.txt # -r requirements/edx/base.txt # python3-saml -xss-utils==0.8.0 +xss-utils==1.0.0 # via -r requirements/edx/base.txt -yarl==1.22.0 +yarl==1.23.0 # via # -r requirements/edx/base.txt # aiohttp diff --git a/requirements/edx/testing.txt b/requirements/edx/testing.txt index dfe552680934..b5768a571526 100644 --- a/requirements/edx/testing.txt +++ b/requirements/edx/testing.txt @@ -10,7 +10,7 @@ aiohappyeyeballs==2.6.1 # via # -r requirements/edx/base.txt # aiohttp -aiohttp==3.13.3 +aiohttp==3.13.5 # via # -r requirements/edx/base.txt # geoip2 @@ -29,11 +29,13 @@ aniso8601==10.0.1 # -r requirements/edx/base.txt # edx-tincan-py35 # tincan +annotated-doc==0.0.4 + # via fastapi annotated-types==0.7.0 # via # -r requirements/edx/base.txt # pydantic -anyio==4.11.0 +anyio==4.13.0 # via # -r requirements/edx/base.txt # httpx @@ -42,7 +44,7 @@ appdirs==1.4.4 # via # -r requirements/edx/base.txt # fs -asgiref==3.10.0 +asgiref==3.11.1 # via # -r requirements/edx/base.txt # django @@ -52,11 +54,11 @@ asn1crypto==1.5.1 # via # -r requirements/edx/base.txt # snowflake-connector-python -astroid==4.0.3 +astroid==4.0.4 # via # pylint # pylint-celery -attrs==25.4.0 +attrs==26.1.0 # via # -r requirements/edx/base.txt # aiohttp @@ -66,7 +68,7 @@ attrs==25.4.0 # openedx-events # openedx-learning # referencing -babel==2.17.0 +babel==2.18.0 # via # -r requirements/edx/base.txt # enmerkar @@ -79,17 +81,18 @@ bcrypt==5.0.0 # via # -r requirements/edx/base.txt # paramiko -beautifulsoup4==4.14.2 +beautifulsoup4==4.14.3 # via # -r requirements/edx/base.txt # -r requirements/edx/testing.in # openedx-forum # pynliner -billiard==4.2.2 + # xblocks-contrib +billiard==4.2.4 # via # -r requirements/edx/base.txt # celery -bleach[css]==6.2.0 +bleach[css]==6.3.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -100,14 +103,14 @@ bleach[css]==6.2.0 # xblock-poll boto==2.49.0 # via -r requirements/edx/base.txt -boto3==1.40.46 +boto3==1.42.86 # via # -r requirements/edx/base.txt # django-ses # fs-s3fs # ora2 # snowflake-connector-python -botocore==1.40.46 +botocore==1.42.86 # via # -r requirements/edx/base.txt # boto3 @@ -115,21 +118,20 @@ botocore==1.40.46 # snowflake-connector-python bridgekeeper==0.9 # via -r requirements/edx/base.txt -cachecontrol==0.14.3 +cachecontrol==0.14.4 # via # -r requirements/edx/base.txt # firebase-admin -cachetools==6.2.0 +cachetools==7.0.5 # via # -r requirements/edx/base.txt # edxval - # google-auth # tox -camel-converter[pydantic]==4.0.1 +camel-converter[pydantic]==5.1.0 # via # -r requirements/edx/base.txt # meilisearch -celery==5.5.3 +celery==5.6.3 # via # -c requirements/constraints.txt # -r requirements/edx/base.txt @@ -140,7 +142,7 @@ celery==5.5.3 # enterprise-integrated-channels # event-tracking # openedx-learning -certifi==2025.10.5 +certifi==2026.2.25 # via # -r requirements/edx/base.txt # elasticsearch @@ -148,27 +150,27 @@ certifi==2025.10.5 # httpx # requests # snowflake-connector-python -cffi==1.17.1 +cffi==2.0.0 # via # -r requirements/edx/base.txt # cryptography - # pact-python # pynacl -chardet==5.2.0 +chardet==7.4.1 # via # -r requirements/edx/base.txt # -r requirements/edx/coverage.txt # diff-cover # pysrt - # tox -charset-normalizer==3.4.3 +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 -click==8.3.0 + # via + # -r requirements/edx/base.txt + # xblocks-contrib +click==8.3.2 # via # -r requirements/edx/base.txt # celery @@ -197,7 +199,7 @@ click-repl==0.3.0 # via # -r requirements/edx/base.txt # celery -code-annotations==2.3.0 +code-annotations==2.3.2 # via # -r requirements/edx/base.txt # -r requirements/edx/testing.in @@ -208,11 +210,11 @@ codejail-includes==2.0.0 # via -r requirements/edx/base.txt colorama==0.4.6 # via tox -coverage[toml]==7.10.7 +coverage[toml]==7.13.5 # via # -r requirements/edx/coverage.txt # pytest-cov -crowdsourcehinter-xblock==0.8 +crowdsourcehinter-xblock==1.0.0 # via -r requirements/edx/base.txt cryptography==45.0.7 # via @@ -220,14 +222,14 @@ cryptography==45.0.7 # -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.3.0 +cssselect==1.4.0 # via # -r requirements/edx/testing.in # pyquery @@ -244,13 +246,14 @@ defusedxml==0.7.1 # ora2 # python3-openid # social-auth-core -diff-cover==9.7.1 + # xblocks-contrib +diff-cover==10.2.0 # via -r requirements/edx/coverage.txt -dill==0.4.0 +dill==0.4.1 # via pylint distlib==0.4.0 # via virtualenv -django==4.2.28 +django==4.2.30 # via # -c requirements/common_constraints.txt # -c requirements/constraints.txt @@ -324,8 +327,9 @@ django==4.2.28 # social-auth-app-django # super-csv # xblock-google-drive + # xblocks-contrib # xss-utils -django-appconf==1.1.0 +django-appconf==1.2.0 # via # -r requirements/edx/base.txt # django-statici18n @@ -341,7 +345,7 @@ django-classy-tags==4.1.0 # via # -r requirements/edx/base.txt # django-sekizai -django-config-models==2.9.0 +django-config-models==3.0.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -350,7 +354,7 @@ django-config-models==2.9.0 # lti-consumer-xblock django-cors-headers==4.9.0 # via -r requirements/edx/base.txt -django-countries==7.6.1 +django-countries==8.2.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -426,7 +430,7 @@ django-object-actions==5.0.0 # enterprise-integrated-channels django-pipeline==4.1.0 # via -r requirements/edx/base.txt -django-push-notifications==3.2.1 +django-push-notifications==3.3.0 # via # -r requirements/edx/base.txt # edx-ace @@ -436,9 +440,9 @@ django-sekizai==4.1.0 # via # -r requirements/edx/base.txt # openedx-django-wiki -django-ses==4.4.0 +django-ses==4.7.2 # via -r requirements/edx/base.txt -django-simple-history==3.10.1 +django-simple-history==3.11.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -447,18 +451,17 @@ django-simple-history==3.10.1 # edx-proctoring # enterprise-integrated-channels # ora2 -django-statici18n==2.6.0 +django-statici18n==2.7.1 # via # -r requirements/edx/base.txt # lti-consumer-xblock # xblock-drag-and-drop-v2 # xblock-poll - # xblocks-contrib django-storages==1.14.6 # via # -r requirements/edx/base.txt # edxval -django-user-tasks==3.4.3 +django-user-tasks==4.0.0 # via -r requirements/edx/base.txt django-waffle==5.0.0 # via @@ -468,11 +471,11 @@ django-waffle==5.0.0 # edx-enterprise # edx-proctoring # edx-toggles -django-webpack-loader==3.2.1 +django-webpack-loader==3.2.3 # via # -r requirements/edx/base.txt # edx-proctoring -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/edx/base.txt # django-config-models @@ -500,28 +503,28 @@ dnspython==2.8.0 # via # -r requirements/edx/base.txt # pymongo -done-xblock==2.5.0 +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.28.0 +drf-spectacular==0.29.0 # via -r requirements/edx/base.txt -drf-yasg==1.21.11 +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==2.1.0 +edx-api-doc-tools==3.0.0 # via # -r requirements/edx/base.txt # edx-name-affirmation -edx-auth-backends==4.6.1 +edx-auth-backends==5.0.0 # via -r requirements/edx/base.txt -edx-bulk-grades==1.2.0 +edx-bulk-grades==2.0.0 # via # -r requirements/edx/base.txt # staff-graded-xblock @@ -530,21 +533,23 @@ edx-ccx-keys==2.0.2 # -r requirements/edx/base.txt # lti-consumer-xblock # openedx-events -edx-celeryutils==1.4.0 +edx-celeryutils==2.0.0 # via # -r requirements/edx/base.txt # edx-name-affirmation # super-csv -edx-codejail==4.0.0 - # via -r requirements/edx/base.txt -edx-completion==4.9 +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==5.1.0 +edx-django-sites-extensions==6.0.0 # via -r requirements/edx/base.txt edx-django-utils==8.0.1 # via @@ -565,6 +570,7 @@ edx-django-utils==8.0.1 # openedx-events # ora2 # super-csv + # xblocks-contrib edx-drf-extensions==10.6.0 # via # -r requirements/edx/base.txt @@ -586,18 +592,17 @@ edx-event-bus-kafka==6.1.0 # via -r requirements/edx/base.txt edx-event-bus-redis==0.6.1 # via -r requirements/edx/base.txt -edx-i18n-tools==1.9.0 +edx-i18n-tools==2.0.0 # via # -r requirements/edx/base.txt # ora2 - # xblocks-contrib -edx-lint==5.6.0 +edx-lint==6.0.0 # via -r requirements/edx/testing.in -edx-milestones==1.1.0 +edx-milestones==2.0.0 # via -r requirements/edx/base.txt edx-name-affirmation==3.0.2 # via -r requirements/edx/base.txt -edx-opaque-keys[django]==3.0.0 +edx-opaque-keys[django]==4.0.0 # via # -r requirements/edx/base.txt # edx-bulk-grades @@ -615,36 +620,37 @@ edx-opaque-keys[django]==3.0.0 # openedx-filters # ora2 # xblocks-contrib -edx-organizations==7.3.0 +edx-organizations==8.0.0 # via -r requirements/edx/base.txt edx-proctoring==5.2.0 # via -r requirements/edx/base.txt -edx-rbac==2.1.0 +edx-rbac==3.0.0 # via # -r requirements/edx/base.txt # edx-enterprise # enterprise-integrated-channels -edx-rest-api-client==6.2.0 +edx-rest-api-client==7.0.0 # via # -r requirements/edx/base.txt # edx-enterprise # edx-proctoring # enterprise-integrated-channels -edx-search==4.3.0 +edx-search==5.0.0 # via # -r requirements/edx/base.txt # openedx-forum -edx-sga==0.26.0 +edx-sga==0.27.1 # via -r requirements/edx/base.txt -edx-submissions==3.12.0 +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==5.4.1 +edx-toggles==6.0.0 # via # -r requirements/edx/base.txt # edx-auth-backends @@ -657,12 +663,15 @@ edx-toggles==5.4.1 # edxval # event-tracking # ora2 -edx-when==3.0.0 + # xblocks-contrib +edx-when==4.0.0 # via # -r requirements/edx/base.txt # edx-proctoring -edxval==3.1.0 - # via -r requirements/edx/base.txt +edxval==4.0.0 + # via + # -r requirements/edx/base.txt + # xblocks-contrib elasticsearch==7.9.1 # via # -c requirements/common_constraints.txt @@ -678,31 +687,32 @@ enmerkar-underscore==2.4.0 # via -r requirements/edx/base.txt enterprise-integrated-channels==0.1.56 # via -r requirements/edx/base.txt -event-tracking==3.3.0 +event-tracking==4.0.0 # via # -r requirements/edx/base.txt # edx-completion # edx-proctoring # edx-search -execnet==2.1.1 +execnet==2.1.2 # via pytest-xdist factory-boy==3.3.3 # via -r requirements/edx/testing.in -faker==37.8.0 +faker==40.13.0 # via factory-boy -fastapi==0.118.0 +fastapi==0.135.3 # via pact-python -fastavro==1.12.0 +fastavro==1.12.1 # via # -r requirements/edx/base.txt # openedx-events -filelock==3.19.1 +filelock==3.25.2 # via # -r requirements/edx/base.txt + # python-discovery # snowflake-connector-python # tox # virtualenv -firebase-admin==7.1.0 +firebase-admin==7.3.0 # via # -r requirements/edx/base.txt # edx-ace @@ -719,67 +729,69 @@ fs==2.4.16 # fs-s3fs # openedx-django-pyfs # xblock + # xblocks-contrib fs-s3fs==1.1.1 # via # -r requirements/edx/base.txt # openedx-django-pyfs -geoip2==5.1.0 +geoip2==5.2.0 # via -r requirements/edx/base.txt glob2==0.7 # via -r requirements/edx/base.txt -google-api-core[grpc]==2.25.2 +google-api-core[grpc]==2.30.2 # via # -r requirements/edx/base.txt # firebase-admin # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-auth==2.41.1 +google-auth==2.49.1 # via # -r requirements/edx/base.txt # google-api-core # google-cloud-core # google-cloud-firestore # google-cloud-storage -google-cloud-core==2.4.3 +google-cloud-core==2.5.1 # via # -r requirements/edx/base.txt # google-cloud-firestore # google-cloud-storage -google-cloud-firestore==2.21.0 +google-cloud-firestore==2.26.0 # via # -r requirements/edx/base.txt # firebase-admin -google-cloud-storage==3.4.0 +google-cloud-storage==3.10.1 # via # -r requirements/edx/base.txt # firebase-admin -google-crc32c==1.7.1 +google-crc32c==1.8.0 # via # -r requirements/edx/base.txt # google-cloud-storage # google-resumable-media -google-resumable-media==2.7.2 +google-resumable-media==2.8.2 # via # -r requirements/edx/base.txt # google-cloud-storage -googleapis-common-protos==1.70.0 +googleapis-common-protos==1.74.0 # via # -r requirements/edx/base.txt # google-api-core # grpcio-status -grimp==3.11 +grimp==3.14 # via import-linter -grpcio==1.75.1 +grpcio==1.80.0 # via # -r requirements/edx/base.txt # google-api-core + # google-cloud-firestore # grpcio-status -grpcio-status==1.75.1 +grpcio-status==1.80.0 # via # -r requirements/edx/base.txt # google-api-core -gunicorn==23.0.0 +gunicorn==25.3.0 # via -r requirements/edx/base.txt h11==0.16.0 # via @@ -790,7 +802,7 @@ h2==4.3.0 # via # -r requirements/edx/base.txt # httpx -help-tokens==3.2.0 +help-tokens==4.0.0 # via -r requirements/edx/base.txt hpack==4.1.0 # via @@ -800,6 +812,7 @@ html5lib==1.1 # via # -r requirements/edx/base.txt # ora2 + # xblocks-contrib httpcore==1.0.9 # via # -r requirements/edx/base.txt @@ -810,13 +823,14 @@ 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==6.3.1 +icalendar==7.0.3 # via -r requirements/edx/base.txt -idna==3.10 +idna==3.11 # via # -r requirements/edx/base.txt # anyio @@ -825,18 +839,18 @@ idna==3.10 # requests # snowflake-connector-python # yarl -import-linter==2.5 +import-linter==2.11 # via -r requirements/edx/testing.in -importlib-metadata==8.7.0 +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.1.0 +iniconfig==2.3.0 # via pytest -invoke==2.2.0 +invoke==3.0.3 # via # -r requirements/edx/base.txt # paramiko @@ -846,7 +860,7 @@ isodate==0.7.2 # via # -r requirements/edx/base.txt # python3-saml -isort==6.1.0 +isort==8.0.1 # via # -r requirements/edx/testing.in # pylint @@ -856,12 +870,12 @@ jinja2==3.1.6 # -r requirements/edx/coverage.txt # code-annotations # diff-cover -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/edx/base.txt # boto3 # botocore -joblib==1.5.2 +joblib==1.5.3 # via # -r requirements/edx/base.txt # nltk @@ -879,7 +893,7 @@ jsonfield==3.2.0 # enterprise-integrated-channels # lti-consumer-xblock # ora2 -jsonschema==4.25.1 +jsonschema==4.26.0 # via # -r requirements/edx/base.txt # drf-spectacular @@ -888,12 +902,12 @@ jsonschema-specifications==2025.9.1 # via # -r requirements/edx/base.txt # jsonschema -jwcrypto==1.5.6 +jwcrypto==1.5.7 # via # -r requirements/edx/base.txt # django-oauth-toolkit # pylti1p3 -kombu==5.5.4 +kombu==5.6.2 # via # -r requirements/edx/base.txt # celery @@ -906,11 +920,7 @@ lazy==1.6 # lti-consumer-xblock # ora2 # xblock -loremipsum==1.0.5 - # via - # -r requirements/edx/base.txt - # ora2 -lti-consumer-xblock==9.14.2 +lti-consumer-xblock==10.0.1 # via -r requirements/edx/base.txt lxml[html-clean]==5.3.2 # via @@ -926,8 +936,9 @@ lxml[html-clean]==5.3.2 # pyquery # python3-saml # xblock + # xblocks-contrib # xmlsec -lxml-html-clean==0.4.3 +lxml-html-clean==0.4.4 # via # -r requirements/edx/base.txt # lxml @@ -940,12 +951,14 @@ mako==1.3.10 # lti-consumer-xblock # xblock # xblock-utils -markdown==3.9 +markdown==3.10.2 # via # -r requirements/edx/base.txt # openedx-django-wiki # staff-graded-xblock # xblock-poll +markdown-it-py==4.0.0 + # via rich markupsafe==3.0.3 # via # -r requirements/edx/base.txt @@ -955,25 +968,28 @@ markupsafe==3.0.3 # mako # openedx-calc # xblock -maxminddb==2.8.2 + # xblocks-contrib +maxminddb==3.1.1 # via # -r requirements/edx/base.txt # geoip2 mccabe==0.7.0 # via pylint -meilisearch==0.37.0 +mdurl==0.1.2 + # via markdown-it-py +meilisearch==0.40.0 # via # -r requirements/edx/base.txt # edx-search mock==5.2.0 # via -r requirements/edx/testing.in -mongoengine==0.29.1 +mongoengine==0.29.3 # via -r requirements/edx/base.txt monotonic==1.6 # via # -r requirements/edx/base.txt # analytics-python -more-itertools==10.8.0 +more-itertools==11.0.2 # via # -r requirements/edx/base.txt # cssutils @@ -981,28 +997,28 @@ mpmath==1.3.0 # via # -r requirements/edx/base.txt # sympy -msgpack==1.1.1 +msgpack==1.1.2 # via # -r requirements/edx/base.txt # cachecontrol -multidict==6.7.0 +multidict==6.7.1 # via # -r requirements/edx/base.txt # aiohttp # yarl -mysqlclient==2.2.7 +mysqlclient==2.2.8 # via # -r requirements/edx/base.txt # openedx-forum -nh3==0.3.0 +nh3==0.3.4 # via # -r requirements/edx/base.txt # xblocks-contrib -nltk==3.9.2 +nltk==3.9.4 # via # -r requirements/edx/base.txt # chem -nodeenv==1.9.1 +nodeenv==1.10.0 # via -r requirements/edx/base.txt numpy==1.26.4 # via @@ -1012,6 +1028,7 @@ numpy==1.26.4 # openedx-calc # scipy # shapely + # xblocks-contrib oauthlib==3.3.1 # via # -r requirements/edx/base.txt @@ -1028,14 +1045,14 @@ openedx-atlas==0.7.0 # edx-enterprise # enterprise-integrated-channels # openedx-forum -openedx-calc==4.0.2 - # via -r requirements/edx/base.txt -openedx-django-pyfs==3.8.0 +openedx-calc==4.0.3 # via # -r requirements/edx/base.txt - # lti-consumer-xblock - # xblock # xblocks-contrib +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.1 @@ -1055,17 +1072,17 @@ openedx-filters==2.1.0 # edx-enterprise # lti-consumer-xblock # ora2 -openedx-forum==0.3.8 +openedx-forum==0.4.1 # via -r requirements/edx/base.txt openedx-learning==0.27.1 # via # -c requirements/constraints.txt # -r requirements/edx/base.txt -optimizely-sdk==5.2.0 +optimizely-sdk==5.4.0 # via -r requirements/edx/base.txt -ora2==6.16.4 +ora2==7.0.0 # via -r requirements/edx/base.txt -packaging==25.0 +packaging==26.0 # via # -r requirements/edx/base.txt # drf-yasg @@ -1075,7 +1092,8 @@ packaging==25.0 # pytest # snowflake-connector-python # tox -pact-python==2.3.3 + # wheel +pact-python==1.6.0 # via # -c requirements/constraints.txt # -r requirements/edx/testing.in @@ -1089,6 +1107,7 @@ path==16.11.0 # -r requirements/edx/base.txt # edx-i18n-tools # path-py + # xblocks-contrib path-py==12.5.0 # via # -r requirements/edx/base.txt @@ -1101,16 +1120,17 @@ pgpy==0.6.0 # edx-enterprise piexif==1.1.3 # via -r requirements/edx/base.txt -pillow==11.3.0 +pillow==12.2.0 # via # -r requirements/edx/base.txt # edx-enterprise # edx-organizations # edxval -platformdirs==4.4.0 +platformdirs==4.9.6 # via # -r requirements/edx/base.txt # pylint + # python-discovery # snowflake-connector-python # tox # virtualenv @@ -1130,17 +1150,17 @@ prompt-toolkit==3.0.52 # via # -r requirements/edx/base.txt # click-repl -propcache==0.4.0 +propcache==0.4.1 # via # -r requirements/edx/base.txt # aiohttp # yarl -proto-plus==1.26.1 +proto-plus==1.27.2 # via # -r requirements/edx/base.txt # google-api-core # google-cloud-firestore -protobuf==6.32.1 +protobuf==6.33.6 # via # -r requirements/edx/base.txt # google-api-core @@ -1148,7 +1168,7 @@ protobuf==6.32.1 # googleapis-common-protos # grpcio-status # proto-plus -psutil==7.1.0 +psutil==7.2.2 # via # -r requirements/edx/base.txt # edx-django-utils @@ -1156,12 +1176,11 @@ psutil==7.1.0 # pytest-xdist py==1.11.0 # via -r requirements/edx/testing.in -pyasn1==0.6.1 +pyasn1==0.6.3 # via # -r requirements/edx/base.txt # pgpy # pyasn1-modules - # rsa pyasn1-modules==0.4.2 # via # -r requirements/edx/base.txt @@ -1170,9 +1189,9 @@ pycodestyle==2.8.0 # via # -c requirements/constraints.txt # -r requirements/edx/testing.in -pycountry==24.6.1 +pycountry==26.2.16 # via -r requirements/edx/base.txt -pycparser==2.23 +pycparser==3.0 # via # -r requirements/edx/base.txt # cffi @@ -1181,20 +1200,21 @@ pycryptodomex==3.23.0 # -r requirements/edx/base.txt # edx-proctoring # lti-consumer-xblock -pydantic==2.11.10 +pydantic==2.12.5 # via # -r requirements/edx/base.txt # camel-converter # fastapi -pydantic-core==2.33.2 +pydantic-core==2.41.5 # via # -r requirements/edx/base.txt # pydantic -pygments==2.19.2 +pygments==2.20.0 # via # -r requirements/edx/coverage.txt # diff-cover -pyjwt[crypto]==2.10.1 + # rich +pyjwt[crypto]==2.12.1 # via # -r requirements/edx/base.txt # drf-jwt @@ -1211,7 +1231,7 @@ pylatexenc==2.10 # via # -r requirements/edx/base.txt # olxcleaner -pylint==4.0.4 +pylint==4.0.5 # via # edx-lint # pylint-celery @@ -1240,7 +1260,7 @@ pymongo==4.4.0 # event-tracking # mongoengine # openedx-forum -pynacl==1.6.0 +pynacl==1.6.2 # via # -r requirements/edx/base.txt # edx-django-utils @@ -1251,12 +1271,13 @@ pyopenssl==25.3.0 # via # -r requirements/edx/base.txt # snowflake-connector-python -pyparsing==3.2.5 +pyparsing==3.3.2 # via # -r requirements/edx/base.txt # chem # openedx-calc -pyproject-api==1.9.1 + # xblocks-contrib +pyproject-api==1.10.0 # via tox pyquery==2.0.1 # via -r requirements/edx/testing.in @@ -1281,9 +1302,9 @@ pytest==8.2.0 # pytest-xdist pytest-attrib==0.1.3 # via -r requirements/edx/testing.in -pytest-cov==7.0.0 +pytest-cov==7.1.0 # via -r requirements/edx/testing.in -pytest-django==4.11.1 +pytest-django==4.12.0 # via -r requirements/edx/testing.in pytest-json-report==1.5.0 # via -r requirements/edx/testing.in @@ -1309,6 +1330,10 @@ python-dateutil==2.9.0.post0 # olxcleaner # ora2 # xblock +python-discovery==1.2.2 + # via + # tox + # virtualenv python-ipware==3.0.0 # via # -r requirements/edx/base.txt @@ -1317,7 +1342,7 @@ python-slugify==8.0.4 # via # -r requirements/edx/base.txt # code-annotations -python-swiftclient==4.8.0 +python-swiftclient==4.10.0 # via # -r requirements/edx/base.txt # ora2 @@ -1327,7 +1352,7 @@ python3-openid==3.2.0 ; python_version >= "3" # social-auth-core python3-saml==1.16.0 # via -r requirements/edx/base.txt -pytz==2025.2 +pytz==2026.1.post1 # via # -r requirements/edx/base.txt # drf-yasg @@ -1343,6 +1368,7 @@ pytz==2025.2 # snowflake-connector-python # tincan # xblock + # xblocks-contrib pyuca==1.2 # via -r requirements/edx/base.txt pyyaml==6.0.3 @@ -1356,23 +1382,25 @@ pyyaml==6.0.3 # 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 -recommender-xblock==3.1.0 - # via -r requirements/edx/base.txt -redis==6.4.0 +redis==7.4.0 # via # -r requirements/edx/base.txt # walrus -referencing==0.36.2 +referencing==0.37.0 # via # -r requirements/edx/base.txt # jsonschema # jsonschema-specifications -regex==2025.9.18 +regex==2026.4.4 # via # -r requirements/edx/base.txt # nltk -requests==2.32.5 +requests==2.33.1 # via # -r requirements/edx/base.txt # analytics-python @@ -1399,26 +1427,25 @@ requests==2.32.5 # 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 -rpds-py==0.27.1 +rich==14.3.3 + # via import-linter +rpds-py==0.30.0 # via # -r requirements/edx/base.txt # jsonschema # referencing -rsa==4.9.1 - # via - # -r requirements/edx/base.txt - # google-auth rules==3.5 # via # -r requirements/edx/base.txt # edx-enterprise # edx-proctoring # openedx-learning -s3transfer==0.14.0 +s3transfer==0.16.0 # via # -r requirements/edx/base.txt # boto3 @@ -1426,7 +1453,7 @@ sailthru-client==2.2.3 # via # -r requirements/edx/base.txt # edx-ace -scipy==1.16.2 +scipy==1.17.1 # via # -r requirements/edx/base.txt # chem @@ -1435,7 +1462,9 @@ semantic-version==2.10.0 # -r requirements/edx/base.txt # edx-drf-extensions shapely==2.1.2 - # via -r requirements/edx/base.txt + # via + # -r requirements/edx/base.txt + # xblocks-contrib simplejson==3.20.2 # via # -r requirements/edx/base.txt @@ -1443,6 +1472,7 @@ simplejson==3.20.2 # super-csv # xblock # xblock-utils + # xblocks-contrib singledispatch==4.1.2 # via -r requirements/edx/testing.in six==1.17.0 @@ -1470,11 +1500,7 @@ slumber==0.7.1 # edx-bulk-grades # edx-enterprise # enterprise-integrated-channels -sniffio==1.3.1 - # via - # -r requirements/edx/base.txt - # anyio -snowflake-connector-python==4.2.0 +snowflake-connector-python==4.3.0 # via # -r requirements/edx/base.txt # edx-enterprise @@ -1485,12 +1511,12 @@ social-auth-app-django==5.4.1 # -r requirements/edx/base.txt # edx-auth-backends # edx-enterprise -social-auth-core==4.7.0 +social-auth-core==4.8.5 # via # -r requirements/edx/base.txt # edx-auth-backends # social-auth-app-django -sorl-thumbnail==12.11.0 +sorl-thumbnail==13.0.0 # via # -r requirements/edx/base.txt # openedx-django-wiki @@ -1498,19 +1524,19 @@ sortedcontainers==2.4.0 # via # -r requirements/edx/base.txt # snowflake-connector-python -soupsieve==2.8 +soupsieve==2.8.3 # via # -r requirements/edx/base.txt # beautifulsoup4 -sqlparse==0.5.3 +sqlparse==0.5.5 # via # -r requirements/edx/base.txt # django -staff-graded-xblock==3.1.0 +staff-graded-xblock==4.0.0 # via -r requirements/edx/base.txt -starlette==0.48.0 +starlette==1.0.0 # via fastapi -stevedore==5.5.0 +stevedore==5.7.0 # via # -r requirements/edx/base.txt # code-annotations @@ -1518,7 +1544,7 @@ stevedore==5.5.0 # edx-django-utils # edx-enterprise # edx-opaque-keys -super-csv==4.1.0 +super-csv==5.0.0 # via # -r requirements/edx/base.txt # edx-bulk-grades @@ -1526,7 +1552,7 @@ sympy==1.14.0 # via # -r requirements/edx/base.txt # openedx-calc -testfixtures==9.1.0 +testfixtures==11.0.0 # via # -r requirements/edx/base.txt # -r requirements/edx/testing.in @@ -1543,18 +1569,25 @@ tinycss2==1.4.0 # via # -r requirements/edx/base.txt # bleach -tomlkit==0.13.3 +tomli-w==1.2.0 + # via tox +tomlkit==0.14.0 # via # -r requirements/edx/base.txt # openedx-learning # pylint # snowflake-connector-python -tox==4.30.3 +tox==4.52.0 # via -r requirements/edx/testing.in -tqdm==4.67.1 +tqdm==4.67.3 # 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 @@ -1566,6 +1599,7 @@ typing-extensions==4.15.0 # fastapi # grimp # grpcio + # icalendar # import-linter # jwcrypto # pydantic @@ -1575,17 +1609,22 @@ typing-extensions==4.15.0 # referencing # snowflake-connector-python # starlette + # typesense # typing-inspection typing-inspection==0.4.2 # via # -r requirements/edx/base.txt + # fastapi # pydantic -tzdata==2025.2 +tzdata==2026.1 # via # -r requirements/edx/base.txt - # faker # icalendar # kombu +tzlocal==5.3.1 + # via + # -r requirements/edx/base.txt + # celery unicodecsv==0.14.1 # via # -r requirements/edx/base.txt @@ -1600,13 +1639,14 @@ uritemplate==4.2.0 # -r requirements/edx/base.txt # drf-spectacular # drf-yasg -urllib3==2.5.0 +urllib3==2.6.3 # via # -r requirements/edx/base.txt # botocore # elasticsearch + # pact-python # requests -uvicorn==0.37.0 +uvicorn==0.44.0 # via pact-python vine==5.1.0 # via @@ -1614,21 +1654,21 @@ vine==5.1.0 # amqp # celery # kombu -virtualenv==20.34.0 +virtualenv==21.2.0 # via tox -voluptuous==0.15.2 +voluptuous==0.16.0 # via # -r requirements/edx/base.txt # ora2 -walrus==0.9.5 +walrus==0.9.8 # via # -r requirements/edx/base.txt # edx-event-bus-redis -wcwidth==0.2.14 +wcwidth==0.6.0 # via # -r requirements/edx/base.txt # prompt-toolkit -web-fragments==3.1.0 +web-fragments==4.0.0 # via # -r requirements/edx/base.txt # crowdsourcehinter-xblock @@ -1636,6 +1676,7 @@ web-fragments==3.1.0 # staff-graded-xblock # xblock # xblock-utils + # xblocks-contrib webencodings==0.5.1 # via # -r requirements/edx/base.txt @@ -1646,13 +1687,16 @@ webob==1.8.9 # via # -r requirements/edx/base.txt # xblock -wheel==0.45.1 + # xblocks-contrib +wheel==0.46.3 # via # -r requirements/edx/base.txt # django-pipeline -wrapt==1.17.3 - # via -r requirements/edx/base.txt -xblock[django]==5.2.0 +wrapt==2.1.2 + # via + # -r requirements/edx/base.txt + # xblocks-contrib +xblock[django]==6.0.0 # via # -r requirements/edx/base.txt # acid-xblock @@ -1679,20 +1723,19 @@ xblock-utils==4.0.0 # -r requirements/edx/base.txt # edx-sga # xblock-poll -xblocks-contrib==0.6.0 +xblocks-contrib==0.13.1 # via -r requirements/edx/base.txt xmlsec==1.3.14 # via # -c requirements/constraints.txt # -r requirements/edx/base.txt # python3-saml -xss-utils==0.8.0 +xss-utils==1.0.0 # via -r requirements/edx/base.txt -yarl==1.22.0 +yarl==1.23.0 # via # -r requirements/edx/base.txt # aiohttp - # pact-python zipp==3.23.0 # via # -r requirements/edx/base.txt diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index e97cb1b3d356..533332376c9f 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,19 +4,21 @@ # # make upgrade # -build==1.3.0 +build==1.4.2 # via pip-tools -click==8.3.0 +click==8.3.2 # via pip-tools -packaging==25.0 - # via build -pip-tools==7.5.1 +packaging==26.0 + # via + # build + # wheel +pip-tools==7.5.3 # via -r requirements/pip-tools.in pyproject-hooks==1.2.0 # via # build # pip-tools -wheel==0.45.1 +wheel==0.46.3 # via pip-tools # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/pip.txt b/requirements/pip.txt index dec15874f740..341a251b5cad 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,11 +4,13 @@ # # make upgrade # -wheel==0.45.1 +packaging==26.0 + # via wheel +wheel==0.46.3 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==25.2 +pip==26.0.1 # via -r requirements/pip.in -setuptools==80.9.0 +setuptools==82.0.1 # via -r requirements/pip.in