diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f43ca0207..8d7caf6a68 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: matrix: os: [ubuntu-latest] python-version: ["3.12"] - toxenv: [quality, js, django42, django52] + toxenv: [quality, js, django52] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -48,7 +48,7 @@ jobs: run: tox - name: Run Coverage - if: matrix.python-version == '3.12' && matrix.toxenv=='django42' + if: matrix.python-version == '3.12' && matrix.toxenv=='django52' uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1 with: flags: unittests diff --git a/openassessment/__init__.py b/openassessment/__init__.py index 6ff7201b92..5b1bce621d 100644 --- a/openassessment/__init__.py +++ b/openassessment/__init__.py @@ -2,4 +2,4 @@ Initialization Information for Open Assessment Module """ -__version__ = '7.1.1' +__version__ = '7.2' diff --git a/openassessment/assessment/test/test_serializers.py b/openassessment/assessment/test/test_serializers.py index aea175674d..3959a86044 100644 --- a/openassessment/assessment/test/test_serializers.py +++ b/openassessment/assessment/test/test_serializers.py @@ -75,10 +75,10 @@ def test_missing_options(self): self.assertEqual( criteria_exception_message.exception.errors, { - 'criteria': [ - {'options': ['This field is required.']}, - {} # No errors in second criterion - ] + 'criteria': { + 0: {'options': ['This field is required.']}, + # missing dict means no errors in second criterion + } } ) diff --git a/pylintrc b/pylintrc index 0f1f4a91a1..63e9ff81e6 100644 --- a/pylintrc +++ b/pylintrc @@ -64,7 +64,7 @@ # SERIOUSLY. # # ------------------------------ -# Generated by edx-lint version: 5.4.1 +# Generated by edx-lint version: 6.2.0 # ------------------------------ [MASTER] ignore = .git, .tox, migrations, acceptance @@ -257,6 +257,8 @@ enable = deprecated-pragma, unrecognized-inline-option, useless-suppression, + + pii-invalid-no-pii-annotation, disable = bad-indentation, broad-exception-raised, @@ -396,4 +398,9 @@ int-import-graph = [EXCEPTIONS] overgeneral-exceptions = builtins.Exception -# 277a3b24a7413d64d2bb3186d6b0eae7fba4186e +[PII] +pii-terms = + email, + username + +# b87d620b0f4d418cc3c9a16b247248a292d9100f diff --git a/requirements/base.txt b/requirements/base.txt index b99ab78edf..63e3ec0006 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -6,25 +6,25 @@ # appdirs==1.4.4 # via fs -asgiref==3.11.1 +asgiref==3.12.1 # via django attrs==26.1.0 # via openedx-events -bleach==6.3.0 +bleach==6.4.0 # via -r requirements/base.in -boto3==1.43.22 +boto3==1.43.105 # via -r requirements/base.in -botocore==1.43.22 +botocore==1.43.105 # via # boto3 # s3transfer -certifi==2026.5.20 +certifi==2026.7.22 # via requests -cffi==2.0.0 +cffi==2.1.1 # via pynacl -charset-normalizer==3.4.7 +charset-normalizer==3.5.1 # via requests -click==8.4.1 +click==8.5.0 # via # code-annotations # edx-django-utils @@ -32,7 +32,7 @@ code-annotations==3.0.0 # via edx-toggles defusedxml==0.7.1 # via -r requirements/base.in -django==5.2.15 +django==5.2.17 # via # -c requirements/common_constraints.txt # -r requirements/base.in @@ -57,13 +57,13 @@ django-model-utils==5.0.0 # via # -r requirements/base.in # edx-submissions -django-simple-history==3.11.0 +django-simple-history==3.13.0 # via -r requirements/base.in django-waffle==5.0.0 # via # edx-django-utils # edx-toggles -djangorestframework==3.17.1 +djangorestframework==3.18.1 # via # -r requirements/base.in # edx-submissions @@ -73,7 +73,7 @@ edx-ccx-keys==2.0.2 # via openedx-events edx-django-release-util==1.5.0 # via edx-submissions -edx-django-utils==8.0.1 +edx-django-utils==8.0.2 # via # -r requirements/base.in # edx-toggles @@ -86,7 +86,8 @@ edx-opaque-keys[django]==4.0.0 # edx-ccx-keys # openedx-events # openedx-filters -edx-submissions==4.0.0 + # xblock +edx-submissions==4.0.2 # via -r requirements/base.in edx-toggles==6.0.0 # via -r requirements/base.in @@ -96,7 +97,7 @@ fs==2.4.16 # via xblock html5lib==1.1 # via -r requirements/base.in -idna==3.18 +idna==3.20 # via requests jinja2==3.1.6 # via code-annotations @@ -108,9 +109,9 @@ jsonfield==3.2.0 # via # -r requirements/base.in # edx-submissions -lazy==1.6 +lazy==2.0 # via -r requirements/base.in -lxml[html-clean]==6.1.1 +lxml[html-clean]==6.1.3 # via # -r requirements/base.in # edx-i18n-tools @@ -118,7 +119,7 @@ lxml[html-clean]==6.1.1 # xblock lxml-html-clean==0.4.5 # via lxml -mako==1.3.12 +mako==1.4.3 # via xblock markupsafe==3.0.3 # via @@ -127,7 +128,7 @@ markupsafe==3.0.3 # xblock openedx-events==11.2.0 # via -r requirements/base.in -openedx-filters==3.4.1 +openedx-filters==3.14.0 # via -r requirements/base.in path==16.16.0 # via @@ -141,7 +142,7 @@ psutil==7.2.2 # via edx-django-utils pycparser==3.0 # via cffi -pymongo==4.17.0 +pymongo==4.18.2 # via edx-opaque-keys pynacl==1.6.2 # via edx-django-utils @@ -150,11 +151,11 @@ python-dateutil==2.9.0.post0 # -r requirements/base.in # botocore # xblock -python-slugify==8.0.4 +python-slugify==9.1.2 # via code-annotations -python-swiftclient==4.10.0 +python-swiftclient==4.11.0 # via -r requirements/base.in -pytz==2026.2 +pytz==2026.4 # via # -r requirements/base.in # edx-submissions @@ -167,9 +168,9 @@ pyyaml==6.0.3 # xblock requests==2.34.2 # via python-swiftclient -s3transfer==0.18.0 +s3transfer==0.19.2 # via boto3 -simplejson==4.1.1 +simplejson==4.1.2 # via xblock six==1.17.0 # via @@ -178,36 +179,34 @@ six==1.17.0 # fs # html5lib # python-dateutil -sqlparse==0.5.5 +sqlparse==0.6.0 # via django -stevedore==5.8.0 +stevedore==5.9.1 # via # code-annotations # edx-django-utils # edx-opaque-keys text-unidecode==1.3 # via python-slugify -typing-extensions==4.15.0 +typing-extensions==4.16.0 # via edx-opaque-keys -urllib3==2.7.0 +urllib3==2.8.0 # via # botocore # requests voluptuous==0.16.0 # via -r requirements/base.in -web-fragments==4.0.0 - # via xblock -webencodings==0.5.1 +webencodings==0.6.1 # via # bleach # html5lib -webob==1.8.10 +webob==1.8.11 # via xblock -xblock==6.1.0 +xblock==6.3.3 # via -r requirements/base.in # The following packages are considered to be unsafe in a requirements file: -setuptools==82.0.1 +setuptools==84.0.0 # via # fs # openedx-events diff --git a/requirements/ci.txt b/requirements/ci.txt index 97e21a5bd9..56d75ec53c 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -4,62 +4,62 @@ # # make upgrade # -annotated-doc==0.0.4 +annotated-doc==0.0.5 # via typer -cachetools==7.1.4 +cachetools==7.2.0 # via # -r requirements/tox.txt # tox -certifi==2026.5.20 +certifi==2026.7.22 # via requests -charset-normalizer==3.4.7 +charset-normalizer==3.5.1 # via requests colorama==0.4.6 # via # -r requirements/tox.txt # tox -coverage[toml]==7.14.1 +coverage[toml]==7.16.2 # via coveralls coveralls==4.1.0 # via -r requirements/ci.in -distlib==0.4.1 +distlib==0.4.3 # via # -r requirements/tox.txt # virtualenv -filelock==3.29.1 +filelock==4.0.7 # via # -r requirements/tox.txt # python-discovery # tox # virtualenv -idna==3.18 +idna==3.20 # via requests markdown-it-py==4.2.0 # via rich mdurl==0.1.2 # via markdown-it-py -packaging==26.2 +packaging==26.3 # via # -r requirements/tox.txt # pyproject-api # tox -platformdirs==4.10.0 + # virtualenv +platformdirs==4.12.2 # via # -r requirements/tox.txt - # python-discovery # tox # virtualenv pluggy==1.6.0 # via # -r requirements/tox.txt # tox -pygments==2.20.0 +pygments==2.21.0 # via rich -pyproject-api==1.10.1 +pyproject-api==1.11.2 # via # -r requirements/tox.txt # tox -python-discovery==1.4.0 +python-discovery==1.6.1 # via # -r requirements/tox.txt # tox @@ -74,17 +74,21 @@ tomli-w==1.2.0 # via # -r requirements/tox.txt # tox -tox==4.55.1 +tox==4.64.5 # via -r requirements/tox.txt -typer==0.26.7 +typer==0.27.2 # via coveralls -urllib3==2.7.0 +typing-extensions==4.16.0 + # via + # -r requirements/tox.txt + # tox +urllib3==2.8.0 # via requests -virtualenv==21.4.2 +virtualenv==21.14.1 # via # -r requirements/tox.txt # tox # The following packages are considered to be unsafe in a requirements file: -setuptools==82.0.1 +setuptools==84.0.0 # via -r requirements/ci.in diff --git a/requirements/common_constraints.txt b/requirements/common_constraints.txt index 367be40f06..a3e0f2d54f 100644 --- a/requirements/common_constraints.txt +++ b/requirements/common_constraints.txt @@ -19,3 +19,26 @@ Django<6.0 # elastic search changelog: https://www.elastic.co/guide/en/enterprise-search/master/release-notes-7.14.0.html # See https://github.com/openedx/edx-platform/issues/35126 for more info elasticsearch<7.14.0 + +# 2026-07-06: Constrain social-auth-* packages to the latest version compatible with +# edx-drf-extensions<=10.6.0. (Newer versions require a POST instead of a GET.) +# Tracking issue: https://github.com/openedx/edx-drf-extensions/issues/561 +social-auth-app-django<6.0.0 +social-auth-core<5.0.0 + +# 2026-08-11: pip-tools is only tested against the latest pip released at the time +# pip-tools was released; also, pip-tools package dependencies are extremely permissive +# about the pip version required, so the dependency resolver will not prevent an unwanted +# pip upgrade which would break pip-tools. The end result is that pip MUST be constrained +# by all pip-tools users in order to avoid potentially weeks-long lapses in pip <-> +# pip-tools compatibility. We've constrained pip here in common_constraints.txt in the +# past, but always removed it once the issue was "fixed". Removing this constraint was +# always a mistake. +# +# This is a semi-permanent constraint and should be manually bumped after each pip-tools +# release. +# +# Exceptional conditions for removal: +# - We stop using pip-tools, OR +# - We migrate to the proposed `pip-tools[stable]` extra: https://github.com/jazzband/pip-tools/pull/2257 +pip<26.2.1 # Known to work with pip-tools==7.6.1 diff --git a/requirements/docs.txt b/requirements/docs.txt index e367323ff9..ca72f378c2 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -8,7 +8,7 @@ accessible-pygments==0.0.5 # via pydata-sphinx-theme alabaster==1.0.0 # via sphinx -anyio==4.13.0 +anyio==4.15.1 # via # starlette # watchfiles @@ -16,13 +16,13 @@ babel==2.18.0 # via # pydata-sphinx-theme # sphinx -beautifulsoup4==4.14.3 +beautifulsoup4==4.15.0 # via pydata-sphinx-theme -certifi==2026.5.20 +certifi==2026.7.22 # via requests -charset-normalizer==3.4.7 +charset-normalizer==3.5.1 # via requests -click==8.4.1 +click==8.5.0 # via uvicorn colorama==0.4.6 # via sphinx-autobuild @@ -32,23 +32,24 @@ docutils==0.22.4 # sphinx h11==0.16.0 # via uvicorn -idna==3.18 +idna==3.20 # via # anyio # requests -imagesize==2.0.0 +imagesize==2.0.1 # via sphinx jinja2==3.1.6 # via + # pydata-sphinx-theme # sphinx # sphinxcontrib-mermaid markupsafe==3.0.3 # via jinja2 -packaging==26.2 +packaging==26.3 # via sphinx -pydata-sphinx-theme==0.16.1 +pydata-sphinx-theme==0.20.0 # via sphinx-book-theme -pygments==2.20.0 +pygments==2.21.0 # via # accessible-pygments # pydata-sphinx-theme @@ -56,12 +57,14 @@ pygments==2.20.0 pyyaml==6.0.3 # via sphinxcontrib-mermaid requests==2.34.2 - # via sphinx + # via + # pydata-sphinx-theme + # sphinx roman-numerals==4.1.0 # via sphinx snowballstemmer==3.1.1 # via sphinx -soupsieve==2.8.4 +soupsieve==2.10 # via beautifulsoup4 sphinx==9.1.0 # via @@ -73,7 +76,7 @@ sphinx==9.1.0 # sphinxcontrib-mermaid sphinx-autobuild==2025.8.25 # via -r requirements/docs.in -sphinx-book-theme==1.2.0 +sphinx-book-theme==1.4.0 # via -r requirements/docs.in sphinx-copybutton==0.5.2 # via -r requirements/docs.in @@ -85,25 +88,24 @@ sphinxcontrib-htmlhelp==2.1.0 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-mermaid==2.0.2 +sphinxcontrib-mermaid==2.1.1 # via -r requirements/docs.in sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx -starlette==1.2.1 +starlette==1.7.0 # via sphinx-autobuild -typing-extensions==4.15.0 +typing-extensions==4.16.0 # via # anyio # beautifulsoup4 - # pydata-sphinx-theme # starlette -urllib3==2.7.0 +urllib3==2.8.0 # via requests -uvicorn==0.49.0 +uvicorn==0.54.0 # via sphinx-autobuild -watchfiles==1.2.0 +watchfiles==1.3.0 # via sphinx-autobuild -websockets==16.0 +websockets==17.1 # via sphinx-autobuild diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index ae6076a05e..df8bedd695 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,21 +4,21 @@ # # make upgrade # -build==1.5.0 +build==1.6.1 # via pip-tools -click==8.4.1 +click==8.5.0 # via pip-tools -packaging==26.2 +packaging==26.3 # via # build # wheel -pip-tools==7.5.3 +pip-tools==7.6.1 # via -r requirements/pip-tools.in -pyproject-hooks==1.2.0 +pyproject-hooks==1.3.3 # via # build # pip-tools -wheel==0.47.0 +wheel==0.48.0 # 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 f3c1555080..582d6205a0 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,13 +4,15 @@ # # make upgrade # -packaging==26.2 +packaging==26.3 # via wheel -wheel==0.47.0 +wheel==0.48.0 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==26.1.2 - # via -r requirements/pip.in -setuptools==82.0.1 +pip==26.2 + # via + # -c requirements/common_constraints.txt + # -r requirements/pip.in +setuptools==84.0.0 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index e03c9bd915..705d6ee0a2 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -4,7 +4,7 @@ # # make upgrade # -amqp==5.3.1 +amqp==5.4.0 # via # -r requirements/test.txt # kombu @@ -16,7 +16,7 @@ arrow==1.4.0 # via # -r requirements/test.txt # cookiecutter -asgiref==3.11.1 +asgiref==3.12.1 # via # -r requirements/test.txt # django @@ -28,7 +28,7 @@ attrs==26.1.0 # via # -r requirements/test.txt # openedx-events -billiard==4.2.4 +billiard==4.3.0 # via # -r requirements/test.txt # celery @@ -36,39 +36,39 @@ binaryornot==0.6.0 # via # -r requirements/test.txt # cookiecutter -bleach==6.3.0 +bleach==6.4.0 # via -r requirements/test.txt -boto3==1.43.22 +boto3==1.43.105 # via # -r requirements/test.txt # fs-s3fs # moto -botocore==1.43.22 +botocore==1.43.105 # via # -r requirements/test.txt # boto3 # moto # s3transfer -cachetools==7.1.4 +cachetools==7.2.0 # via # -r requirements/test.txt # tox celery==5.6.3 # via -r requirements/test.txt -certifi==2026.5.20 +certifi==2026.7.22 # via # -r requirements/test.txt # requests -cffi==2.0.0 +cffi==2.1.1 # via # -r requirements/test.txt # cryptography # pynacl -charset-normalizer==3.4.7 +charset-normalizer==3.5.1 # via # -r requirements/test.txt # requests -click==8.4.1 +click==8.5.0 # via # -r requirements/test.txt # celery @@ -90,7 +90,7 @@ click-plugins==1.1.1.2 # via # -r requirements/test.txt # celery -click-repl==0.3.0 +click-repl==0.4.0 # via # -r requirements/test.txt # celery @@ -107,11 +107,11 @@ cookiecutter==2.7.1 # via # -r requirements/test.txt # xblock-sdk -coverage[toml]==7.14.1 +coverage[toml]==7.16.2 # via # -r requirements/test.txt # pytest-cov -cryptography==48.0.0 +cryptography==50.0.1 # via # -r requirements/test.txt # moto @@ -123,11 +123,11 @@ defusedxml==0.7.1 # via -r requirements/test.txt dill==0.4.1 # via pylint -distlib==0.4.1 +distlib==0.4.3 # via # -r requirements/test.txt # virtualenv -django==5.2.15 +django==5.2.17 # via # -c requirements/common_constraints.txt # -r requirements/test.txt @@ -142,6 +142,7 @@ django==5.2.15 # edx-submissions # edx-toggles # jsonfield + # openedx-django-pyfs # openedx-events # openedx-filters # xblock-sdk @@ -154,14 +155,14 @@ django-model-utils==5.0.0 # via # -r requirements/test.txt # edx-submissions -django-simple-history==3.11.0 +django-simple-history==3.13.0 # via -r requirements/test.txt django-waffle==5.0.0 # via # -r requirements/test.txt # edx-django-utils # edx-toggles -djangorestframework==3.17.1 +djangorestframework==3.18.1 # via # -r requirements/test.txt # edx-submissions @@ -177,14 +178,14 @@ edx-django-release-util==1.5.0 # via # -r requirements/test.txt # edx-submissions -edx-django-utils==8.0.1 +edx-django-utils==8.0.2 # via # -r requirements/test.txt # edx-toggles # openedx-events edx-i18n-tools==2.0.0 # via -r requirements/test.txt -edx-lint==6.1.0 +edx-lint==6.2.0 # via -r requirements/quality.in edx-opaque-keys[django]==4.0.0 # via @@ -192,13 +193,14 @@ edx-opaque-keys[django]==4.0.0 # edx-ccx-keys # openedx-events # openedx-filters -edx-submissions==4.0.0 + # xblock +edx-submissions==4.0.2 # via -r requirements/test.txt edx-toggles==6.0.0 # via -r requirements/test.txt factory-boy==3.3.3 # via -r requirements/test.txt -faker==40.21.0 +faker==40.40.0 # via # -r requirements/test.txt # factory-boy @@ -206,7 +208,7 @@ fastavro==1.12.2 # via # -r requirements/test.txt # openedx-events -filelock==3.29.1 +filelock==4.0.7 # via # -r requirements/test.txt # python-discovery @@ -220,14 +222,16 @@ fs==2.4.16 # via # -r requirements/test.txt # fs-s3fs + # openedx-django-pyfs # xblock fs-s3fs==1.1.1 # via # -r requirements/test.txt + # openedx-django-pyfs # xblock-sdk html5lib==1.1 # via -r requirements/test.txt -idna==3.18 +idna==3.20 # via # -r requirements/test.txt # requests @@ -256,9 +260,11 @@ kombu==5.6.2 # via # -r requirements/test.txt # celery -lazy==1.6 - # via -r requirements/test.txt -lxml[html-clean]==6.1.1 +lazy==2.0 + # via + # -r requirements/test.txt + # xblock +lxml[html-clean]==6.1.3 # via # -r requirements/test.txt # edx-i18n-tools @@ -269,7 +275,7 @@ lxml-html-clean==0.4.5 # via # -r requirements/test.txt # lxml -mako==1.3.12 +mako==1.4.3 # via # -r requirements/test.txt # xblock @@ -298,17 +304,22 @@ moto==4.2.14 # via # -c requirements/constraints.txt # -r requirements/test.txt +openedx-django-pyfs==4.0.0 + # via + # -r requirements/test.txt + # xblock openedx-events==11.2.0 # via -r requirements/test.txt -openedx-filters==3.4.1 +openedx-filters==3.14.0 # via -r requirements/test.txt -packaging==26.2 +packaging==26.3 # via # -r requirements/test.txt # kombu # pyproject-api # pytest # tox + # virtualenv path==16.16.0 # via # -r requirements/test.txt @@ -316,11 +327,10 @@ path==16.16.0 # path-py path-py==12.5.0 # via -r requirements/test.txt -platformdirs==4.10.0 +platformdirs==4.12.2 # via # -r requirements/test.txt # pylint - # python-discovery # tox # virtualenv pluggy==1.6.0 @@ -333,7 +343,7 @@ polib==1.2.0 # via # -r requirements/test.txt # edx-i18n-tools -prompt-toolkit==3.0.52 +prompt-toolkit==3.0.53 # via # -r requirements/test.txt # click-repl @@ -341,13 +351,13 @@ psutil==7.2.2 # via # -r requirements/test.txt # edx-django-utils -pycodestyle==2.14.0 +pycodestyle==2.15.0 # via -r requirements/quality.in pycparser==3.0 # via # -r requirements/test.txt # cffi -pygments==2.20.0 +pygments==2.21.0 # via # -r requirements/test.txt # pytest @@ -368,7 +378,7 @@ pylint-plugin-utils==0.9.0 # via # pylint-celery # pylint-django -pymongo==4.17.0 +pymongo==4.18.2 # via # -r requirements/test.txt # edx-opaque-keys @@ -380,18 +390,18 @@ pypng==0.20220715.0 # via # -r requirements/test.txt # xblock-sdk -pyproject-api==1.10.1 +pyproject-api==1.11.2 # via # -r requirements/test.txt # tox -pytest==9.0.3 +pytest==9.1.1 # via # -r requirements/test.txt # pytest-cov # pytest-django pytest-cov==7.1.0 # via -r requirements/test.txt -pytest-django==4.12.0 +pytest-django==4.14.0 # via -r requirements/test.txt python-dateutil==2.9.0.post0 # via @@ -402,19 +412,19 @@ python-dateutil==2.9.0.post0 # freezegun # moto # xblock -python-discovery==1.4.0 +python-discovery==1.6.1 # via # -r requirements/test.txt # tox # virtualenv -python-slugify==8.0.4 +python-slugify==9.1.2 # via # -r requirements/test.txt # code-annotations # cookiecutter -python-swiftclient==4.10.0 +python-swiftclient==4.11.0 # via -r requirements/test.txt -pytz==2026.2 +pytz==2026.4 # via # -r requirements/test.txt # edx-submissions @@ -436,7 +446,7 @@ requests==2.34.2 # python-swiftclient # responses # xblock-sdk -responses==0.26.1 +responses==0.26.3 # via # -r requirements/test.txt # moto @@ -444,11 +454,11 @@ rich==15.0.0 # via # -r requirements/test.txt # cookiecutter -s3transfer==0.18.0 +s3transfer==0.19.2 # via # -r requirements/test.txt # boto3 -simplejson==4.1.1 +simplejson==4.1.2 # via # -r requirements/test.txt # xblock @@ -464,17 +474,17 @@ six==1.17.0 # fs-s3fs # html5lib # python-dateutil -sqlparse==0.5.5 +sqlparse==0.6.0 # via # -r requirements/test.txt # django -stevedore==5.8.0 +stevedore==5.9.1 # via # -r requirements/test.txt # code-annotations # edx-django-utils # edx-opaque-keys -testfixtures==12.0.0 +testfixtures==12.3.0 # via -r requirements/test.txt text-unidecode==1.3 # via @@ -484,26 +494,29 @@ tomli-w==1.2.0 # via # -r requirements/test.txt # tox -tomlkit==0.15.0 +tomlkit==0.15.1 # via # edx-lint # pylint -tox==4.55.1 +tox==4.64.5 # via -r requirements/test.txt -typing-extensions==4.15.0 +typing-extensions==4.16.0 # via # -r requirements/test.txt + # click-repl # edx-opaque-keys -tzdata==2026.2 + # testfixtures + # tox +tzdata==2026.4 # via # -r requirements/test.txt # arrow # kombu -tzlocal==5.3.1 +tzlocal==5.4.4 # via # -r requirements/test.txt # celery -urllib3==2.7.0 +urllib3==2.8.0 # via # -r requirements/test.txt # botocore @@ -515,40 +528,39 @@ vine==5.1.0 # amqp # celery # kombu -virtualenv==21.4.2 +virtualenv==21.14.1 # via # -r requirements/test.txt # tox voluptuous==0.16.0 # via -r requirements/test.txt -wcwidth==0.7.0 +wcwidth==0.9.1 # via # -r requirements/test.txt # prompt-toolkit web-fragments==4.0.0 # via # -r requirements/test.txt - # xblock # xblock-sdk -webencodings==0.5.1 +webencodings==0.6.1 # via # -r requirements/test.txt # bleach # html5lib -webob==1.8.10 +webob==1.8.11 # via # -r requirements/test.txt # xblock # xblock-sdk -werkzeug==3.1.8 +werkzeug==3.1.9 # via # -r requirements/test.txt # moto -xblock==6.1.0 +xblock[django]==6.3.3 # via # -r requirements/test.txt # xblock-sdk -xblock-sdk==0.14.0 +xblock-sdk==0.15.2 # via -r requirements/test.txt xmltodict==1.0.4 # via @@ -556,7 +568,7 @@ xmltodict==1.0.4 # moto # The following packages are considered to be unsafe in a requirements file: -setuptools==82.0.1 +setuptools==84.0.0 # via # fs # openedx-events diff --git a/requirements/test-acceptance.txt b/requirements/test-acceptance.txt index c5d69c5b32..4750cd3376 100644 --- a/requirements/test-acceptance.txt +++ b/requirements/test-acceptance.txt @@ -4,7 +4,7 @@ # # make upgrade # -amqp==5.3.1 +amqp==5.4.0 # via # -r requirements/test.txt # kombu @@ -16,7 +16,7 @@ arrow==1.4.0 # via # -r requirements/test.txt # cookiecutter -asgiref==3.11.1 +asgiref==3.12.1 # via # -r requirements/test.txt # django @@ -24,7 +24,7 @@ attrs==26.1.0 # via # -r requirements/test.txt # openedx-events -billiard==4.2.4 +billiard==4.3.0 # via # -r requirements/test.txt # celery @@ -32,39 +32,39 @@ binaryornot==0.6.0 # via # -r requirements/test.txt # cookiecutter -bleach==6.3.0 +bleach==6.4.0 # via -r requirements/test.txt -boto3==1.43.22 +boto3==1.43.105 # via # -r requirements/test.txt # fs-s3fs # moto -botocore==1.43.22 +botocore==1.43.105 # via # -r requirements/test.txt # boto3 # moto # s3transfer -cachetools==7.1.4 +cachetools==7.2.0 # via # -r requirements/test.txt # tox celery==5.6.3 # via -r requirements/test.txt -certifi==2026.5.20 +certifi==2026.7.22 # via # -r requirements/test.txt # requests -cffi==2.0.0 +cffi==2.1.1 # via # -r requirements/test.txt # cryptography # pynacl -charset-normalizer==3.4.7 +charset-normalizer==3.5.1 # via # -r requirements/test.txt # requests -click==8.4.1 +click==8.5.0 # via # -r requirements/test.txt # celery @@ -82,7 +82,7 @@ click-plugins==1.1.1.2 # via # -r requirements/test.txt # celery -click-repl==0.3.0 +click-repl==0.4.0 # via # -r requirements/test.txt # celery @@ -98,11 +98,11 @@ cookiecutter==2.7.1 # via # -r requirements/test.txt # xblock-sdk -coverage[toml]==7.14.1 +coverage[toml]==7.16.2 # via # -r requirements/test.txt # pytest-cov -cryptography==48.0.0 +cryptography==50.0.1 # via # -r requirements/test.txt # moto @@ -113,11 +113,11 @@ ddt==1.0.0 # -r requirements/test.txt defusedxml==0.7.1 # via -r requirements/test.txt -distlib==0.4.1 +distlib==0.4.3 # via # -r requirements/test.txt # virtualenv -django==5.2.15 +django==5.2.17 # via # -c requirements/common_constraints.txt # -r requirements/test.txt @@ -132,6 +132,7 @@ django==5.2.15 # edx-submissions # edx-toggles # jsonfield + # openedx-django-pyfs # openedx-events # openedx-filters # xblock-sdk @@ -144,14 +145,14 @@ django-model-utils==5.0.0 # via # -r requirements/test.txt # edx-submissions -django-simple-history==3.11.0 +django-simple-history==3.13.0 # via -r requirements/test.txt django-waffle==5.0.0 # via # -r requirements/test.txt # edx-django-utils # edx-toggles -djangorestframework==3.17.1 +djangorestframework==3.18.1 # via # -r requirements/test.txt # edx-submissions @@ -167,7 +168,7 @@ edx-django-release-util==1.5.0 # via # -r requirements/test.txt # edx-submissions -edx-django-utils==8.0.1 +edx-django-utils==8.0.2 # via # -r requirements/test.txt # edx-toggles @@ -180,13 +181,14 @@ edx-opaque-keys[django]==4.0.0 # edx-ccx-keys # openedx-events # openedx-filters -edx-submissions==4.0.0 + # xblock +edx-submissions==4.0.2 # via -r requirements/test.txt edx-toggles==6.0.0 # via -r requirements/test.txt factory-boy==3.3.3 # via -r requirements/test.txt -faker==40.21.0 +faker==40.40.0 # via # -r requirements/test.txt # factory-boy @@ -194,7 +196,7 @@ fastavro==1.12.2 # via # -r requirements/test.txt # openedx-events -filelock==3.29.1 +filelock==4.0.7 # via # -r requirements/test.txt # python-discovery @@ -208,14 +210,16 @@ fs==2.4.16 # via # -r requirements/test.txt # fs-s3fs + # openedx-django-pyfs # xblock fs-s3fs==1.1.1 # via # -r requirements/test.txt + # openedx-django-pyfs # xblock-sdk html5lib==1.1 # via -r requirements/test.txt -idna==3.18 +idna==3.20 # via # -r requirements/test.txt # requests @@ -242,9 +246,11 @@ kombu==5.6.2 # via # -r requirements/test.txt # celery -lazy==1.6 - # via -r requirements/test.txt -lxml[html-clean]==6.1.1 +lazy==2.0 + # via + # -r requirements/test.txt + # xblock +lxml[html-clean]==6.1.3 # via # -r requirements/test.txt # edx-i18n-tools @@ -255,7 +261,7 @@ lxml-html-clean==0.4.5 # via # -r requirements/test.txt # lxml -mako==1.3.12 +mako==1.4.3 # via # -r requirements/test.txt # xblock @@ -282,17 +288,22 @@ moto==4.2.14 # via # -c requirements/constraints.txt # -r requirements/test.txt +openedx-django-pyfs==4.0.0 + # via + # -r requirements/test.txt + # xblock openedx-events==11.2.0 # via -r requirements/test.txt -openedx-filters==3.4.1 +openedx-filters==3.14.0 # via -r requirements/test.txt -packaging==26.2 +packaging==26.3 # via # -r requirements/test.txt # kombu # pyproject-api # pytest # tox + # virtualenv path==16.16.0 # via # -r requirements/test.txt @@ -300,10 +311,9 @@ path==16.16.0 # path-py path-py==12.5.0 # via -r requirements/test.txt -platformdirs==4.10.0 +platformdirs==4.12.2 # via # -r requirements/test.txt - # python-discovery # tox # virtualenv pluggy==1.6.0 @@ -316,7 +326,7 @@ polib==1.2.0 # via # -r requirements/test.txt # edx-i18n-tools -prompt-toolkit==3.0.52 +prompt-toolkit==3.0.53 # via # -r requirements/test.txt # click-repl @@ -328,14 +338,14 @@ pycparser==3.0 # via # -r requirements/test.txt # cffi -pygments==2.20.0 +pygments==2.21.0 # via # -r requirements/test.txt # pytest # rich -pyinstrument==5.1.2 +pyinstrument==5.1.3 # via -r requirements/test-acceptance.in -pymongo==4.17.0 +pymongo==4.18.2 # via # -r requirements/test.txt # edx-opaque-keys @@ -347,11 +357,11 @@ pypng==0.20220715.0 # via # -r requirements/test.txt # xblock-sdk -pyproject-api==1.10.1 +pyproject-api==1.11.2 # via # -r requirements/test.txt # tox -pytest==9.0.3 +pytest==9.1.1 # via # -r requirements/test-acceptance.in # -r requirements/test.txt @@ -359,7 +369,7 @@ pytest==9.0.3 # pytest-django pytest-cov==7.1.0 # via -r requirements/test.txt -pytest-django==4.12.0 +pytest-django==4.14.0 # via -r requirements/test.txt python-dateutil==2.9.0.post0 # via @@ -370,19 +380,19 @@ python-dateutil==2.9.0.post0 # freezegun # moto # xblock -python-discovery==1.4.0 +python-discovery==1.6.1 # via # -r requirements/test.txt # tox # virtualenv -python-slugify==8.0.4 +python-slugify==9.1.2 # via # -r requirements/test.txt # code-annotations # cookiecutter -python-swiftclient==4.10.0 +python-swiftclient==4.11.0 # via -r requirements/test.txt -pytz==2026.2 +pytz==2026.4 # via # -r requirements/test.txt # edx-submissions @@ -404,7 +414,7 @@ requests==2.34.2 # python-swiftclient # responses # xblock-sdk -responses==0.26.1 +responses==0.26.3 # via # -r requirements/test.txt # moto @@ -412,11 +422,11 @@ rich==15.0.0 # via # -r requirements/test.txt # cookiecutter -s3transfer==0.18.0 +s3transfer==0.19.2 # via # -r requirements/test.txt # boto3 -simplejson==4.1.1 +simplejson==4.1.2 # via # -r requirements/test.txt # xblock @@ -431,17 +441,17 @@ six==1.17.0 # fs-s3fs # html5lib # python-dateutil -sqlparse==0.5.5 +sqlparse==0.6.0 # via # -r requirements/test.txt # django -stevedore==5.8.0 +stevedore==5.9.1 # via # -r requirements/test.txt # code-annotations # edx-django-utils # edx-opaque-keys -testfixtures==12.0.0 +testfixtures==12.3.0 # via -r requirements/test.txt text-unidecode==1.3 # via @@ -451,22 +461,25 @@ tomli-w==1.2.0 # via # -r requirements/test.txt # tox -tox==4.55.1 +tox==4.64.5 # via -r requirements/test.txt -typing-extensions==4.15.0 +typing-extensions==4.16.0 # via # -r requirements/test.txt + # click-repl # edx-opaque-keys -tzdata==2026.2 + # testfixtures + # tox +tzdata==2026.4 # via # -r requirements/test.txt # arrow # kombu -tzlocal==5.3.1 +tzlocal==5.4.4 # via # -r requirements/test.txt # celery -urllib3==2.7.0 +urllib3==2.8.0 # via # -r requirements/test.txt # botocore @@ -478,40 +491,39 @@ vine==5.1.0 # amqp # celery # kombu -virtualenv==21.4.2 +virtualenv==21.14.1 # via # -r requirements/test.txt # tox voluptuous==0.16.0 # via -r requirements/test.txt -wcwidth==0.7.0 +wcwidth==0.9.1 # via # -r requirements/test.txt # prompt-toolkit web-fragments==4.0.0 # via # -r requirements/test.txt - # xblock # xblock-sdk -webencodings==0.5.1 +webencodings==0.6.1 # via # -r requirements/test.txt # bleach # html5lib -webob==1.8.10 +webob==1.8.11 # via # -r requirements/test.txt # xblock # xblock-sdk -werkzeug==3.1.8 +werkzeug==3.1.9 # via # -r requirements/test.txt # moto -xblock==6.1.0 +xblock[django]==6.3.3 # via # -r requirements/test.txt # xblock-sdk -xblock-sdk==0.14.0 +xblock-sdk==0.15.2 # via -r requirements/test.txt xmltodict==1.0.4 # via diff --git a/requirements/test.txt b/requirements/test.txt index 30a92ce417..552c0a812b 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -4,7 +4,7 @@ # # make upgrade # -amqp==5.3.1 +amqp==5.4.0 # via kombu appdirs==1.4.4 # via @@ -12,7 +12,7 @@ appdirs==1.4.4 # fs arrow==1.4.0 # via cookiecutter -asgiref==3.11.1 +asgiref==3.12.1 # via # -r requirements/base.txt # django @@ -20,41 +20,41 @@ attrs==26.1.0 # via # -r requirements/base.txt # openedx-events -billiard==4.2.4 +billiard==4.3.0 # via celery binaryornot==0.6.0 # via cookiecutter -bleach==6.3.0 +bleach==6.4.0 # via -r requirements/base.txt -boto3==1.43.22 +boto3==1.43.105 # via # -r requirements/base.txt # fs-s3fs # moto -botocore==1.43.22 +botocore==1.43.105 # via # -r requirements/base.txt # boto3 # moto # s3transfer -cachetools==7.1.4 +cachetools==7.2.0 # via tox celery==5.6.3 # via -r requirements/test.in -certifi==2026.5.20 +certifi==2026.7.22 # via # -r requirements/base.txt # requests -cffi==2.0.0 +cffi==2.1.1 # via # -r requirements/base.txt # cryptography # pynacl -charset-normalizer==3.4.7 +charset-normalizer==3.5.1 # via # -r requirements/base.txt # requests -click==8.4.1 +click==8.5.0 # via # -r requirements/base.txt # celery @@ -68,7 +68,7 @@ click-didyoumean==0.3.1 # via celery click-plugins==1.1.1.2 # via celery -click-repl==0.3.0 +click-repl==0.4.0 # via celery code-annotations==3.0.0 # via @@ -78,11 +78,11 @@ colorama==0.4.6 # via tox cookiecutter==2.7.1 # via xblock-sdk -coverage[toml]==7.14.1 +coverage[toml]==7.16.2 # via # -r requirements/test.in # pytest-cov -cryptography==48.0.0 +cryptography==50.0.1 # via moto ddt==1.0.0 # via @@ -90,7 +90,7 @@ ddt==1.0.0 # -r requirements/test.in defusedxml==0.7.1 # via -r requirements/base.txt -distlib==0.4.1 +distlib==0.4.3 # via virtualenv # via # -c requirements/common_constraints.txt @@ -106,6 +106,7 @@ distlib==0.4.1 # edx-submissions # edx-toggles # jsonfield + # openedx-django-pyfs # openedx-events # openedx-filters # xblock-sdk @@ -118,14 +119,14 @@ django-model-utils==5.0.0 # via # -r requirements/base.txt # edx-submissions -django-simple-history==3.11.0 +django-simple-history==3.13.0 # via -r requirements/base.txt django-waffle==5.0.0 # via # -r requirements/base.txt # edx-django-utils # edx-toggles -djangorestframework==3.17.1 +djangorestframework==3.18.1 # via # -r requirements/base.txt # edx-submissions @@ -141,7 +142,7 @@ edx-django-release-util==1.5.0 # via # -r requirements/base.txt # edx-submissions -edx-django-utils==8.0.1 +edx-django-utils==8.0.2 # via # -r requirements/base.txt # edx-toggles @@ -154,19 +155,20 @@ edx-opaque-keys[django]==4.0.0 # edx-ccx-keys # openedx-events # openedx-filters -edx-submissions==4.0.0 + # xblock +edx-submissions==4.0.2 # via -r requirements/base.txt edx-toggles==6.0.0 # via -r requirements/base.txt factory-boy==3.3.3 # via -r requirements/test.in -faker==40.21.0 +faker==40.40.0 # via factory-boy fastavro==1.12.2 # via # -r requirements/base.txt # openedx-events -filelock==3.29.1 +filelock==4.0.7 # via # python-discovery # tox @@ -179,12 +181,15 @@ fs==2.4.16 # via # -r requirements/base.txt # fs-s3fs + # openedx-django-pyfs # xblock fs-s3fs==1.1.1 - # via xblock-sdk + # via + # openedx-django-pyfs + # xblock-sdk html5lib==1.1 # via -r requirements/base.txt -idna==3.18 +idna==3.20 # via # -r requirements/base.txt # requests @@ -207,9 +212,11 @@ jsonfield==3.2.0 # edx-submissions kombu==5.6.2 # via celery -lazy==1.6 - # via -r requirements/base.txt -lxml[html-clean]==6.1.1 +lazy==2.0 + # via + # -r requirements/base.txt + # xblock +lxml[html-clean]==6.1.3 # via # -r requirements/base.txt # edx-i18n-tools @@ -220,7 +227,7 @@ lxml-html-clean==0.4.5 # via # -r requirements/base.txt # lxml -mako==1.3.12 +mako==1.4.3 # via # -r requirements/base.txt # xblock @@ -243,16 +250,19 @@ moto==4.2.14 # via # -c requirements/constraints.txt # -r requirements/test.in +openedx-django-pyfs==4.0.0 + # via xblock openedx-events==11.2.0 # via -r requirements/base.txt -openedx-filters==3.4.1 +openedx-filters==3.14.0 # via -r requirements/base.txt -packaging==26.2 +packaging==26.3 # via # kombu # pyproject-api # pytest # tox + # virtualenv path==16.16.0 # via # -r requirements/base.txt @@ -260,9 +270,8 @@ path==16.16.0 # path-py path-py==12.5.0 # via -r requirements/base.txt -platformdirs==4.10.0 +platformdirs==4.12.2 # via - # python-discovery # tox # virtualenv pluggy==1.6.0 @@ -274,7 +283,7 @@ polib==1.2.0 # via # -r requirements/base.txt # edx-i18n-tools -prompt-toolkit==3.0.52 +prompt-toolkit==3.0.53 # via click-repl psutil==7.2.2 # via @@ -284,11 +293,11 @@ pycparser==3.0 # via # -r requirements/base.txt # cffi -pygments==2.20.0 +pygments==2.21.0 # via # pytest # rich -pymongo==4.17.0 +pymongo==4.18.2 # via # -r requirements/base.txt # edx-opaque-keys @@ -298,16 +307,16 @@ pynacl==1.6.2 # edx-django-utils pypng==0.20220715.0 # via xblock-sdk -pyproject-api==1.10.1 +pyproject-api==1.11.2 # via tox -pytest==9.0.3 +pytest==9.1.1 # via # -r requirements/test.in # pytest-cov # pytest-django pytest-cov==7.1.0 # via -r requirements/test.in -pytest-django==4.12.0 +pytest-django==4.14.0 # via -r requirements/test.in python-dateutil==2.9.0.post0 # via @@ -318,18 +327,18 @@ python-dateutil==2.9.0.post0 # freezegun # moto # xblock -python-discovery==1.4.0 +python-discovery==1.6.1 # via # tox # virtualenv -python-slugify==8.0.4 +python-slugify==9.1.2 # via # -r requirements/base.txt # code-annotations # cookiecutter -python-swiftclient==4.10.0 +python-swiftclient==4.11.0 # via -r requirements/base.txt -pytz==2026.2 +pytz==2026.4 # via # -r requirements/base.txt # edx-submissions @@ -351,15 +360,15 @@ requests==2.34.2 # python-swiftclient # responses # xblock-sdk -responses==0.26.1 +responses==0.26.3 # via moto rich==15.0.0 # via cookiecutter -s3transfer==0.18.0 +s3transfer==0.19.2 # via # -r requirements/base.txt # boto3 -simplejson==4.1.1 +simplejson==4.1.2 # via # -r requirements/base.txt # xblock @@ -374,17 +383,17 @@ six==1.17.0 # fs-s3fs # html5lib # python-dateutil -sqlparse==0.5.5 +sqlparse==0.6.0 # via # -r requirements/base.txt # django -stevedore==5.8.0 +stevedore==5.9.1 # via # -r requirements/base.txt # code-annotations # edx-django-utils # edx-opaque-keys -testfixtures==12.0.0 +testfixtures==12.3.0 # via -r requirements/test.in text-unidecode==1.3 # via @@ -392,19 +401,22 @@ text-unidecode==1.3 # python-slugify tomli-w==1.2.0 # via tox -tox==4.55.1 +tox==4.64.5 # via -r requirements/test.in -typing-extensions==4.15.0 +typing-extensions==4.16.0 # via # -r requirements/base.txt + # click-repl # edx-opaque-keys -tzdata==2026.2 + # testfixtures + # tox +tzdata==2026.4 # via # arrow # kombu -tzlocal==5.3.1 +tzlocal==5.4.4 # via celery -urllib3==2.7.0 +urllib3==2.8.0 # via # -r requirements/base.txt # botocore @@ -415,34 +427,31 @@ vine==5.1.0 # amqp # celery # kombu -virtualenv==21.4.2 +virtualenv==21.14.1 # via tox voluptuous==0.16.0 # via -r requirements/base.txt -wcwidth==0.7.0 +wcwidth==0.9.1 # via prompt-toolkit web-fragments==4.0.0 - # via - # -r requirements/base.txt - # xblock - # xblock-sdk -webencodings==0.5.1 + # via xblock-sdk +webencodings==0.6.1 # via # -r requirements/base.txt # bleach # html5lib -webob==1.8.10 +webob==1.8.11 # via # -r requirements/base.txt # xblock # xblock-sdk -werkzeug==3.1.8 +werkzeug==3.1.9 # via moto -xblock==6.1.0 +xblock[django]==6.3.3 # via # -r requirements/base.txt # xblock-sdk -xblock-sdk==0.14.0 +xblock-sdk==0.15.2 # via -r requirements/test.in xmltodict==1.0.4 # via moto diff --git a/requirements/tox.txt b/requirements/tox.txt index 4edefbdee9..064a4e50e1 100644 --- a/requirements/tox.txt +++ b/requirements/tox.txt @@ -4,37 +4,39 @@ # # make upgrade # -cachetools==7.1.4 +cachetools==7.2.0 # via tox colorama==0.4.6 # via tox -distlib==0.4.1 +distlib==0.4.3 # via virtualenv -filelock==3.29.1 +filelock==4.0.7 # via # python-discovery # tox # virtualenv -packaging==26.2 +packaging==26.3 # via # pyproject-api # tox -platformdirs==4.10.0 + # virtualenv +platformdirs==4.12.2 # via - # python-discovery # tox # virtualenv pluggy==1.6.0 # via tox -pyproject-api==1.10.1 +pyproject-api==1.11.2 # via tox -python-discovery==1.4.0 +python-discovery==1.6.1 # via # tox # virtualenv tomli-w==1.2.0 # via tox -tox==4.55.1 +tox==4.64.5 # via -r requirements/tox.in -virtualenv==21.4.2 +typing-extensions==4.16.0 + # via tox +virtualenv==21.14.1 # via tox diff --git a/tox.ini b/tox.ini index 0c45f1f174..750eee6b51 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,12 @@ [tox] -envlist = py{311, 312}-django{42,52}, js, quality +envlist = py{312}-django{52}, js, quality [testenv] +setenv = + # tests use moto to fake CreateBucket; breaks in local dev envs configured with a different region + AWS_DEFAULT_REGION = us-east-1 deps = -rrequirements/test.txt - django42: Django>=4.2,<5.0 django52: Django>=5.2,<5.3 commands =