From 2a48f6a4fef2b21cca9fde37bf814bdbc5eb2029 Mon Sep 17 00:00:00 2001 From: Jose Ignacio Palma Date: Fri, 26 Jun 2026 10:14:26 -0400 Subject: [PATCH] feat: add Verawood (June 2026) support - Drop Python 3.11 support (Verawood requires Python 3.12+) - Drop Django 4.2 support (Verawood requires Django 5.2+) - Update test matrix to py312-django52 only - Bump version to 2.3.0 --- .github/workflows/ci.yml | 7 +- CHANGELOG.rst | 10 +++ README.rst | 6 +- mindmap/__init__.py | 2 +- requirements/base.txt | 58 +++++++------ requirements/ci.txt | 62 +++++++------- requirements/dev.txt | 166 ++++++++++++++++++++----------------- requirements/django42.txt | 1 - requirements/django52.txt | 2 +- requirements/doc.txt | 143 +++++++++++++++++--------------- requirements/pip-tools.txt | 16 ++-- requirements/pip.txt | 10 ++- requirements/quality.txt | 98 +++++++++++++--------- requirements/test.txt | 84 +++++++++++-------- setup.py | 4 +- tox.ini | 3 - 16 files changed, 372 insertions(+), 300 deletions(-) delete mode 100644 requirements/django42.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7255173..f681354 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,11 +15,8 @@ jobs: strategy: matrix: os: [ubuntu-22.04 - python-version: ['3.11', '3.12'] - toxenv: [quality, docs, django42, django52] - exclude: - - python-version: '3.12' - toxenv: 'django42' + python-version: ['3.12'] + toxenv: [quality, docs, django52] steps: - uses: actions/checkout@v5 diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 21fb4c9..b24f6e1 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,6 +14,16 @@ Change Log Unreleased ********** +2.3.0 - 2026-06-26 +********************************************** + +Added +===== + +* Add support for Verawood release. +* Drop support for Python 3.11 (Verawood requires Python 3.12+). +* Drop support for Django 4.2 (Verawood requires Django 5.2+). + 2.2.0 - 2025-10-14 ********************************************** diff --git a/README.rst b/README.rst index 181cd0d..ace2dff 100644 --- a/README.rst +++ b/README.rst @@ -32,8 +32,12 @@ Compatibility Notes +------------------+------------------+ | Teak | >= 2.1.0 | +------------------+------------------+ +| Ulmo | >= 2.2.0 | ++------------------+------------------+ +| Verawood | >= 2.3.0 | ++------------------+------------------+ -To ensure better maintainability and performance, **Python 3.11 or newer** is now required. +To ensure better maintainability and performance, **Python 3.12 or newer** is now required. The settings can be changed in ``mindmap/settings/common.py`` or, for example, in tutor configurations. diff --git a/mindmap/__init__.py b/mindmap/__init__.py index cfa0129..791141e 100644 --- a/mindmap/__init__.py +++ b/mindmap/__init__.py @@ -4,4 +4,4 @@ from .mindmap import MindMapXBlock -__version__ = '2.2.0' +__version__ = '2.3.0' diff --git a/requirements/base.txt b/requirements/base.txt index db8ae66..bf5f41e 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,20 +1,20 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # appdirs==1.4.4 # via fs -asgiref==3.10.0 +asgiref==3.11.1 # via django -boto3==1.40.51 +boto3==1.43.36 # via fs-s3fs -botocore==1.40.51 +botocore==1.43.36 # via # boto3 # s3transfer -django==5.2.7 +django==5.2.15 # via # -c requirements/constraints.txt # django-appconf @@ -26,19 +26,23 @@ django==5.2.7 # edx-submissions # jsonfield # openedx-django-pyfs -django-appconf==1.1.0 +django-appconf==1.2.0 # via django-statici18n django-model-utils==5.0.0 # via edx-submissions -django-statici18n==2.6.0 +django-statici18n==2.7.1 # via -r requirements/base.in -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via edx-submissions +dnspython==2.8.0 + # via pymongo edx-django-release-util==1.5.0 # via edx-submissions -edx-i18n-tools==1.9.0 +edx-i18n-tools==2.0.0 # via -r requirements/base.in -edx-submissions==3.12.0 +edx-opaque-keys==4.0.0 + # via xblock +edx-submissions==4.0.0 # via -r requirements/base.in fs==2.4.16 # via @@ -47,7 +51,7 @@ fs==2.4.16 # xblock fs-s3fs==1.1.1 # via openedx-django-pyfs -jmespath==1.0.1 +jmespath==1.1.0 # via # boto3 # botocore @@ -55,14 +59,14 @@ jsonfield==3.2.0 # via edx-submissions lazy==1.6 # via xblock -lxml[html-clean]==6.0.2 +lxml[html-clean]==6.1.1 # via # edx-i18n-tools # lxml-html-clean # xblock -lxml-html-clean==0.4.3 +lxml-html-clean==0.4.5 # via lxml -mako==1.3.10 +mako==1.3.12 # via # -r requirements/base.in # xblock @@ -71,17 +75,19 @@ markupsafe==3.0.3 # via # mako # xblock -openedx-django-pyfs==3.8.0 +openedx-django-pyfs==4.0.0 # via xblock path==16.16.0 # via edx-i18n-tools polib==1.2.0 # via edx-i18n-tools +pymongo==4.17.0 + # via edx-opaque-keys python-dateutil==2.9.0.post0 # via # botocore # xblock -pytz==2025.2 +pytz==2026.2 # via # edx-submissions # xblock @@ -90,9 +96,9 @@ pyyaml==6.0.3 # edx-django-release-util # edx-i18n-tools # xblock -s3transfer==0.14.0 +s3transfer==0.19.0 # via boto3 -simplejson==3.20.2 +simplejson==4.1.1 # via # xblock # xblock-utils @@ -102,19 +108,21 @@ six==1.17.0 # fs # fs-s3fs # python-dateutil -sqlparse==0.5.3 +sqlparse==0.5.5 # via django +stevedore==5.8.0 + # via edx-opaque-keys +typing-extensions==4.15.0 + # via edx-opaque-keys urllib3==2.2.3 # via # -c requirements/constraints.txt # botocore -web-fragments==3.1.0 - # via - # xblock - # xblock-utils -webob==1.8.9 +web-fragments==4.0.0 + # via xblock-utils +webob==1.8.10 # via xblock -xblock[django]==5.2.0 +xblock[django]==6.3.0 # via # -r requirements/base.in # xblock-utils diff --git a/requirements/ci.txt b/requirements/ci.txt index a1970be..5b437d3 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,88 +1,89 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # -backports-tarfile==1.2.0 - # via jaraco-context -certifi==2025.10.5 +certifi==2026.6.17 # via requests cffi==2.0.0 # via cryptography -charset-normalizer==3.4.4 +charset-normalizer==3.4.7 # via requests -cryptography==46.0.2 +cryptography==49.0.0 # via secretstorage -distlib==0.4.0 +distlib==0.4.3 # via virtualenv -docutils==0.22.2 +docutils==0.23 # via readme-renderer -filelock==3.20.0 +filelock==3.29.4 # via + # python-discovery # tox # virtualenv -id==1.5.0 +id==1.6.1 # via twine -idna==3.11 +idna==3.18 # via requests -importlib-metadata==8.7.0 - # via keyring jaraco-classes==3.4.0 # via keyring -jaraco-context==6.0.1 +jaraco-context==6.1.2 # via keyring -jaraco-functools==4.3.0 +jaraco-functools==4.5.0 # via keyring jeepney==0.9.0 # via # keyring # secretstorage -keyring==25.6.0 +keyring==25.7.0 # via twine -markdown-it-py==4.0.0 +markdown-it-py==4.2.0 # via rich mdurl==0.1.2 # via markdown-it-py -more-itertools==10.8.0 +more-itertools==11.1.0 # via # jaraco-classes # jaraco-functools -nh3==0.3.1 +nh3==0.3.6 # via readme-renderer -packaging==25.0 +packaging==26.2 # via # pyproject-api # tox # twine -platformdirs==4.5.0 +platformdirs==4.10.0 # via + # python-discovery # tox # virtualenv pluggy==1.6.0 # via tox py==1.11.0 # via tox -pycparser==2.23 +pycparser==3.0 # via cffi -pygments==2.19.2 +pygments==2.20.0 # via # readme-renderer # rich -readme-renderer==44.0 +python-discovery==1.4.2 + # via + # tox + # virtualenv +readme-renderer==45.0 # via twine -requests==2.32.5 +requests==2.34.2 # via - # id # requests-toolbelt # twine requests-toolbelt==1.0.0 # via twine rfc3986==2.0.0 # via twine -rich==14.2.0 +rich==15.0.0 # via twine -secretstorage==3.4.0 +secretstorage==3.5.0 # via keyring six==1.17.0 # via tox @@ -97,9 +98,8 @@ twine==6.2.0 urllib3==2.2.3 # via # -c requirements/constraints.txt + # id # requests # twine -virtualenv==20.35.3 +virtualenv==21.5.1 # via tox -zipp==3.23.0 - # via importlib-metadata diff --git a/requirements/dev.txt b/requirements/dev.txt index 84724cd..281b3cd 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -8,7 +8,7 @@ appdirs==1.4.4 # via # -r requirements/quality.txt # fs -asgiref==3.10.0 +asgiref==3.11.1 # via # -r requirements/quality.txt # django @@ -17,24 +17,20 @@ astroid==3.3.11 # -r requirements/quality.txt # pylint # pylint-celery -backports-tarfile==1.2.0 - # via - # -r requirements/ci.txt - # jaraco-context -boto3==1.40.51 +boto3==1.43.36 # via # -r requirements/quality.txt # fs-s3fs -botocore==1.40.51 +botocore==1.43.36 # via # -r requirements/quality.txt # boto3 # s3transfer -build==1.3.0 +build==1.5.0 # via # -r requirements/pip-tools.txt # pip-tools -certifi==2025.10.5 +certifi==2026.6.17 # via # -r requirements/ci.txt # requests @@ -42,13 +38,13 @@ cffi==2.0.0 # via # -r requirements/ci.txt # cryptography -chardet==5.2.0 +chardet==7.4.3 # via diff-cover -charset-normalizer==3.4.4 +charset-normalizer==3.4.7 # via # -r requirements/ci.txt # requests -click==8.3.0 +click==8.4.2 # via # -r requirements/pip-tools.txt # -r requirements/quality.txt @@ -60,31 +56,31 @@ click-log==0.4.0 # via # -r requirements/quality.txt # edx-lint -code-annotations==2.3.0 +code-annotations==3.0.0 # via # -r requirements/quality.txt # edx-lint -coverage[toml]==7.10.7 +coverage[toml]==7.14.3 # via # -r requirements/quality.txt # pytest-cov -cryptography==46.0.2 +cryptography==49.0.0 # via # -r requirements/ci.txt # secretstorage ddt==1.7.2 # via -r requirements/quality.txt -diff-cover==9.7.1 +diff-cover==10.3.0 # via -r requirements/dev.in -dill==0.4.0 +dill==0.4.1 # via # -r requirements/quality.txt # pylint -distlib==0.4.0 +distlib==0.4.3 # via # -r requirements/ci.txt # virtualenv -django==5.2.7 +django==5.2.15 # via # -c requirements/constraints.txt # -r requirements/quality.txt @@ -97,7 +93,7 @@ django==5.2.7 # edx-submissions # jsonfield # openedx-django-pyfs -django-appconf==1.1.0 +django-appconf==1.2.0 # via # -r requirements/quality.txt # django-statici18n @@ -105,13 +101,17 @@ django-model-utils==5.0.0 # via # -r requirements/quality.txt # edx-submissions -django-statici18n==2.6.0 +django-statici18n==2.7.1 # via -r requirements/quality.txt -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/quality.txt # edx-submissions -docutils==0.22.2 +dnspython==2.8.0 + # via + # -r requirements/quality.txt + # pymongo +docutils==0.23 # via # -r requirements/ci.txt # readme-renderer @@ -119,17 +119,22 @@ edx-django-release-util==1.5.0 # via # -r requirements/quality.txt # edx-submissions -edx-i18n-tools==1.9.0 +edx-i18n-tools==2.0.0 # via # -r requirements/dev.in # -r requirements/quality.txt -edx-lint==5.6.0 +edx-lint==6.1.0 # via -r requirements/quality.txt -edx-submissions==3.12.0 +edx-opaque-keys==4.0.0 + # via + # -r requirements/quality.txt + # xblock +edx-submissions==4.0.0 # via -r requirements/quality.txt -filelock==3.20.0 +filelock==3.29.4 # via # -r requirements/ci.txt + # python-discovery # tox # virtualenv fs==2.4.16 @@ -142,19 +147,15 @@ fs-s3fs==1.1.1 # via # -r requirements/quality.txt # openedx-django-pyfs -id==1.5.0 +id==1.6.1 # via # -r requirements/ci.txt # twine -idna==3.11 +idna==3.18 # via # -r requirements/ci.txt # requests -importlib-metadata==8.7.0 - # via - # -r requirements/ci.txt - # keyring -iniconfig==2.1.0 +iniconfig==2.3.0 # via # -r requirements/quality.txt # pytest @@ -166,11 +167,11 @@ jaraco-classes==3.4.0 # via # -r requirements/ci.txt # keyring -jaraco-context==6.0.1 +jaraco-context==6.1.2 # via # -r requirements/ci.txt # keyring -jaraco-functools==4.3.0 +jaraco-functools==4.5.0 # via # -r requirements/ci.txt # keyring @@ -184,7 +185,7 @@ jinja2==3.1.6 # -r requirements/quality.txt # code-annotations # diff-cover -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/quality.txt # boto3 @@ -193,7 +194,7 @@ jsonfield==3.2.0 # via # -r requirements/quality.txt # edx-submissions -keyring==25.6.0 +keyring==25.7.0 # via # -r requirements/ci.txt # twine @@ -201,22 +202,22 @@ lazy==1.6 # via # -r requirements/quality.txt # xblock -lxml[html-clean]==6.0.2 +lxml[html-clean]==6.1.1 # via # -r requirements/quality.txt # edx-i18n-tools # lxml-html-clean # xblock -lxml-html-clean==0.4.3 +lxml-html-clean==0.4.5 # via # -r requirements/quality.txt # lxml -mako==1.3.10 +mako==1.3.12 # via # -r requirements/quality.txt # xblock # xblock-utils -markdown-it-py==4.0.0 +markdown-it-py==4.2.0 # via # -r requirements/ci.txt # rich @@ -234,20 +235,20 @@ mdurl==0.1.2 # via # -r requirements/ci.txt # markdown-it-py -more-itertools==10.8.0 +more-itertools==11.1.0 # via # -r requirements/ci.txt # jaraco-classes # jaraco-functools -nh3==0.3.1 +nh3==0.3.6 # via # -r requirements/ci.txt # readme-renderer -openedx-django-pyfs==3.8.0 +openedx-django-pyfs==4.0.0 # via # -r requirements/quality.txt # xblock -packaging==25.0 +packaging==26.2 # via # -r requirements/ci.txt # -r requirements/pip-tools.txt @@ -256,17 +257,19 @@ packaging==25.0 # pytest # tox # twine + # wheel path==16.16.0 # via # -r requirements/quality.txt # edx-i18n-tools -pip-tools==7.5.1 +pip-tools==7.5.3 # via -r requirements/pip-tools.txt -platformdirs==4.5.0 +platformdirs==4.10.0 # via # -r requirements/ci.txt # -r requirements/quality.txt # pylint + # python-discovery # virtualenv pluggy==1.6.0 # via @@ -286,13 +289,13 @@ py==1.11.0 # tox pycodestyle==2.14.0 # via -r requirements/quality.txt -pycparser==2.23 +pycparser==3.0 # via # -r requirements/ci.txt # cffi pydocstyle==6.3.0 # via -r requirements/quality.txt -pygments==2.19.2 +pygments==2.20.0 # via # -r requirements/ci.txt # -r requirements/quality.txt @@ -312,7 +315,7 @@ pylint-celery==0.3 # via # -r requirements/quality.txt # edx-lint -pylint-django==2.6.1 +pylint-django==2.7.0 # via # -r requirements/quality.txt # edx-lint @@ -321,30 +324,38 @@ pylint-plugin-utils==0.9.0 # -r requirements/quality.txt # pylint-celery # pylint-django +pymongo==4.17.0 + # via + # -r requirements/quality.txt + # edx-opaque-keys pyproject-hooks==1.2.0 # via # -r requirements/pip-tools.txt # build # pip-tools -pytest==8.4.2 +pytest==9.1.1 # via # -r requirements/quality.txt # pytest-cov # pytest-django -pytest-cov==7.0.0 +pytest-cov==7.1.0 # via -r requirements/quality.txt -pytest-django==4.11.1 +pytest-django==4.12.0 # via -r requirements/quality.txt python-dateutil==2.9.0.post0 # via # -r requirements/quality.txt # botocore # xblock +python-discovery==1.4.2 + # via + # -r requirements/ci.txt + # virtualenv python-slugify==8.0.4 # via # -r requirements/quality.txt # code-annotations -pytz==2025.2 +pytz==2026.2 # via # -r requirements/quality.txt # edx-submissions @@ -356,14 +367,13 @@ pyyaml==6.0.3 # edx-django-release-util # edx-i18n-tools # xblock -readme-renderer==44.0 +readme-renderer==45.0 # via # -r requirements/ci.txt # twine -requests==2.32.5 +requests==2.34.2 # via # -r requirements/ci.txt - # id # requests-toolbelt # twine requests-toolbelt==1.0.0 @@ -374,19 +384,19 @@ rfc3986==2.0.0 # via # -r requirements/ci.txt # twine -rich==14.2.0 +rich==15.0.0 # via # -r requirements/ci.txt # twine -s3transfer==0.14.0 +s3transfer==0.19.0 # via # -r requirements/quality.txt # boto3 -secretstorage==3.4.0 +secretstorage==3.5.0 # via # -r requirements/ci.txt # keyring -simplejson==3.20.2 +simplejson==4.1.1 # via # -r requirements/quality.txt # xblock @@ -401,25 +411,27 @@ six==1.17.0 # fs-s3fs # python-dateutil # tox -snowballstemmer==3.0.1 +snowballstemmer==3.1.1 # via # -r requirements/quality.txt # pydocstyle -sqlparse==0.5.3 +sqlparse==0.5.5 # via # -r requirements/quality.txt # django -stevedore==5.5.0 +stevedore==5.8.0 # via # -r requirements/quality.txt # code-annotations + # edx-opaque-keys text-unidecode==1.3 # via # -r requirements/quality.txt # python-slugify -tomlkit==0.13.3 +tomlkit==0.15.0 # via # -r requirements/quality.txt + # edx-lint # pylint tox==3.28.0 # via @@ -429,41 +441,41 @@ tox-battery==0.6.2 # via -r requirements/ci.txt twine==6.2.0 # via -r requirements/ci.txt +typing-extensions==4.15.0 + # via + # -r requirements/quality.txt + # edx-opaque-keys urllib3==2.2.3 # via # -c requirements/constraints.txt # -r requirements/ci.txt # -r requirements/quality.txt # botocore + # id # requests # twine -virtualenv==20.35.3 +virtualenv==21.5.1 # via # -r requirements/ci.txt # tox -web-fragments==3.1.0 +web-fragments==4.0.0 # via # -r requirements/quality.txt - # xblock # xblock-utils -webob==1.8.9 +webob==1.8.10 # via # -r requirements/quality.txt # xblock -wheel==0.45.1 +wheel==0.47.0 # via # -r requirements/pip-tools.txt # pip-tools -xblock[django]==5.2.0 +xblock[django]==6.3.0 # via # -r requirements/quality.txt # xblock-utils xblock-utils==4.0.0 # via -r requirements/quality.txt -zipp==3.23.0 - # via - # -r requirements/ci.txt - # importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/django42.txt b/requirements/django42.txt deleted file mode 100644 index bb879a5..0000000 --- a/requirements/django42.txt +++ /dev/null @@ -1 +0,0 @@ -django==4.2.23 \ No newline at end of file diff --git a/requirements/django52.txt b/requirements/django52.txt index 9109eb2..f480bed 100644 --- a/requirements/django52.txt +++ b/requirements/django52.txt @@ -1 +1 @@ -django==5.2.7 +django==5.2.15 diff --git a/requirements/doc.txt b/requirements/doc.txt index 30a6ef7..8f099a3 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -12,50 +12,48 @@ appdirs==1.4.4 # via # -r requirements/test.txt # fs -asgiref==3.10.0 +asgiref==3.11.1 # via # -r requirements/test.txt # django -babel==2.17.0 +babel==2.18.0 # via # pydata-sphinx-theme # sphinx -backports-tarfile==1.2.0 - # via jaraco-context -beautifulsoup4==4.14.2 +beautifulsoup4==4.15.0 # via pydata-sphinx-theme -boto3==1.40.51 +boto3==1.43.36 # via # -r requirements/test.txt # fs-s3fs -botocore==1.40.51 +botocore==1.43.36 # via # -r requirements/test.txt # boto3 # s3transfer -build==1.3.0 +build==1.5.0 # via -r requirements/doc.in -certifi==2025.10.5 +certifi==2026.6.17 # via requests cffi==2.0.0 # via cryptography -charset-normalizer==3.4.4 +charset-normalizer==3.4.7 # via requests -click==8.3.0 +click==8.4.2 # via # -r requirements/test.txt # code-annotations -code-annotations==2.3.0 +code-annotations==3.0.0 # via -r requirements/test.txt -coverage[toml]==7.10.7 +coverage[toml]==7.14.3 # via # -r requirements/test.txt # pytest-cov -cryptography==46.0.2 +cryptography==49.0.0 # via secretstorage ddt==1.7.2 # via -r requirements/test.txt -django==5.2.7 +django==5.2.15 # via # -c requirements/constraints.txt # -r requirements/test.txt @@ -68,7 +66,7 @@ django==5.2.7 # edx-submissions # jsonfield # openedx-django-pyfs -django-appconf==1.1.0 +django-appconf==1.2.0 # via # -r requirements/test.txt # django-statici18n @@ -76,12 +74,16 @@ django-model-utils==5.0.0 # via # -r requirements/test.txt # edx-submissions -django-statici18n==2.6.0 +django-statici18n==2.7.1 # via -r requirements/test.txt -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/test.txt # edx-submissions +dnspython==2.8.0 + # via + # -r requirements/test.txt + # pymongo doc8==2.0.0 # via -r requirements/doc.in docutils==0.21.2 @@ -95,9 +97,13 @@ edx-django-release-util==1.5.0 # via # -r requirements/test.txt # edx-submissions -edx-i18n-tools==1.9.0 +edx-i18n-tools==2.0.0 # via -r requirements/test.txt -edx-submissions==3.12.0 +edx-opaque-keys==4.0.0 + # via + # -r requirements/test.txt + # xblock +edx-submissions==4.0.0 # via -r requirements/test.txt fs==2.4.16 # via @@ -109,23 +115,21 @@ fs-s3fs==1.1.1 # via # -r requirements/test.txt # openedx-django-pyfs -id==1.5.0 +id==1.6.1 # via twine -idna==3.11 +idna==3.18 # via requests -imagesize==1.4.1 +imagesize==2.0.0 # via sphinx -importlib-metadata==8.7.0 - # via keyring -iniconfig==2.1.0 +iniconfig==2.3.0 # via # -r requirements/test.txt # pytest jaraco-classes==3.4.0 # via keyring -jaraco-context==6.0.1 +jaraco-context==6.1.2 # via keyring -jaraco-functools==4.3.0 +jaraco-functools==4.5.0 # via keyring jeepney==0.9.0 # via @@ -136,7 +140,7 @@ jinja2==3.1.6 # -r requirements/test.txt # code-annotations # sphinx -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/test.txt # boto3 @@ -145,28 +149,28 @@ jsonfield==3.2.0 # via # -r requirements/test.txt # edx-submissions -keyring==25.6.0 +keyring==25.7.0 # via twine lazy==1.6 # via # -r requirements/test.txt # xblock -lxml[html-clean]==6.0.2 +lxml[html-clean]==6.1.1 # via # -r requirements/test.txt # edx-i18n-tools # lxml-html-clean # xblock -lxml-html-clean==0.4.3 +lxml-html-clean==0.4.5 # via # -r requirements/test.txt # lxml -mako==1.3.10 +mako==1.3.12 # via # -r requirements/test.txt # xblock # xblock-utils -markdown-it-py==4.0.0 +markdown-it-py==4.2.0 # via rich markupsafe==3.0.3 # via @@ -176,21 +180,20 @@ markupsafe==3.0.3 # xblock mdurl==0.1.2 # via markdown-it-py -more-itertools==10.8.0 +more-itertools==11.1.0 # via # jaraco-classes # jaraco-functools -nh3==0.3.1 +nh3==0.3.6 # via readme-renderer -openedx-django-pyfs==3.8.0 +openedx-django-pyfs==4.0.0 # via # -r requirements/test.txt # xblock -packaging==25.0 +packaging==26.2 # via # -r requirements/test.txt # build - # pydata-sphinx-theme # pytest # sphinx # twine @@ -207,11 +210,11 @@ polib==1.2.0 # via # -r requirements/test.txt # edx-i18n-tools -pycparser==2.23 +pycparser==3.0 # via cffi -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 # -r requirements/test.txt # accessible-pygments @@ -221,16 +224,20 @@ pygments==2.19.2 # readme-renderer # rich # sphinx +pymongo==4.17.0 + # via + # -r requirements/test.txt + # edx-opaque-keys pyproject-hooks==1.2.0 # via build -pytest==8.4.2 +pytest==9.1.1 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==7.0.0 +pytest-cov==7.1.0 # via -r requirements/test.txt -pytest-django==4.11.1 +pytest-django==4.12.0 # via -r requirements/test.txt python-dateutil==2.9.0.post0 # via @@ -241,7 +248,7 @@ python-slugify==8.0.4 # via # -r requirements/test.txt # code-annotations -pytz==2025.2 +pytz==2026.2 # via # -r requirements/test.txt # edx-submissions @@ -253,31 +260,30 @@ pyyaml==6.0.3 # edx-django-release-util # edx-i18n-tools # xblock -readme-renderer==44.0 +readme-renderer==45.0 # via twine -requests==2.32.5 +requests==2.34.2 # via - # id # requests-toolbelt # sphinx # twine requests-toolbelt==1.0.0 # via twine -restructuredtext-lint==1.4.0 +restructuredtext-lint==2.0.2 # via doc8 rfc3986==2.0.0 # via twine -rich==14.2.0 +rich==15.0.0 # via twine -roman-numerals-py==3.1.0 +roman-numerals==4.1.0 # via sphinx -s3transfer==0.14.0 +s3transfer==0.19.0 # via # -r requirements/test.txt # boto3 -secretstorage==3.4.0 +secretstorage==3.5.0 # via keyring -simplejson==3.20.2 +simplejson==4.1.1 # via # -r requirements/test.txt # xblock @@ -289,16 +295,16 @@ six==1.17.0 # fs # fs-s3fs # python-dateutil -snowballstemmer==3.0.1 +snowballstemmer==3.1.1 # via sphinx -soupsieve==2.8 +soupsieve==2.8.4 # via beautifulsoup4 -sphinx==8.2.3 +sphinx==9.1.0 # via # -r requirements/doc.in # pydata-sphinx-theme # sphinx-book-theme -sphinx-book-theme==1.1.4 +sphinx-book-theme==1.2.0 # via -r requirements/doc.in sphinxcontrib-applehelp==2.0.0 # via sphinx @@ -312,15 +318,16 @@ sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx -sqlparse==0.5.3 +sqlparse==0.5.5 # via # -r requirements/test.txt # django -stevedore==5.5.0 +stevedore==5.8.0 # via # -r requirements/test.txt # code-annotations # doc8 + # edx-opaque-keys text-unidecode==1.3 # via # -r requirements/test.txt @@ -329,32 +336,32 @@ twine==6.2.0 # via -r requirements/doc.in typing-extensions==4.15.0 # via + # -r requirements/test.txt # beautifulsoup4 + # edx-opaque-keys # pydata-sphinx-theme urllib3==2.2.3 # via # -c requirements/constraints.txt # -r requirements/test.txt # botocore + # id # requests # twine -web-fragments==3.1.0 +web-fragments==4.0.0 # via # -r requirements/test.txt - # xblock # xblock-utils -webob==1.8.9 +webob==1.8.10 # via # -r requirements/test.txt # xblock -xblock[django]==5.2.0 +xblock[django]==6.3.0 # via # -r requirements/test.txt # xblock-utils xblock-utils==4.0.0 # via -r requirements/test.txt -zipp==3.23.0 - # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # setuptools diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index e97cb1b..a082bfc 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -1,22 +1,24 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # -build==1.3.0 +build==1.5.0 # via pip-tools -click==8.3.0 +click==8.4.2 # via pip-tools -packaging==25.0 - # via build -pip-tools==7.5.1 +packaging==26.2 + # 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.47.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 dec1587..f3c1555 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,14 +1,16 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # -wheel==0.45.1 +packaging==26.2 + # via wheel +wheel==0.47.0 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==25.2 +pip==26.1.2 # via -r requirements/pip.in -setuptools==80.9.0 +setuptools==82.0.1 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index 917bf03..581fbd6 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -8,7 +8,7 @@ appdirs==1.4.4 # via # -r requirements/test.txt # fs -asgiref==3.10.0 +asgiref==3.11.1 # via # -r requirements/test.txt # django @@ -16,16 +16,16 @@ astroid==3.3.11 # via # pylint # pylint-celery -boto3==1.40.51 +boto3==1.43.36 # via # -r requirements/test.txt # fs-s3fs -botocore==1.40.51 +botocore==1.43.36 # via # -r requirements/test.txt # boto3 # s3transfer -click==8.3.0 +click==8.4.2 # via # -r requirements/test.txt # click-log @@ -33,19 +33,19 @@ click==8.3.0 # edx-lint click-log==0.4.0 # via edx-lint -code-annotations==2.3.0 +code-annotations==3.0.0 # via # -r requirements/test.txt # edx-lint -coverage[toml]==7.10.7 +coverage[toml]==7.14.3 # via # -r requirements/test.txt # pytest-cov ddt==1.7.2 # via -r requirements/test.txt -dill==0.4.0 +dill==0.4.1 # via pylint -django==5.2.7 +django==5.2.15 # via # -c requirements/constraints.txt # -r requirements/test.txt @@ -58,7 +58,7 @@ django==5.2.7 # edx-submissions # jsonfield # openedx-django-pyfs -django-appconf==1.1.0 +django-appconf==1.2.0 # via # -r requirements/test.txt # django-statici18n @@ -66,21 +66,29 @@ django-model-utils==5.0.0 # via # -r requirements/test.txt # edx-submissions -django-statici18n==2.6.0 +django-statici18n==2.7.1 # via -r requirements/test.txt -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/test.txt # edx-submissions +dnspython==2.8.0 + # via + # -r requirements/test.txt + # pymongo edx-django-release-util==1.5.0 # via # -r requirements/test.txt # edx-submissions -edx-i18n-tools==1.9.0 +edx-i18n-tools==2.0.0 # via -r requirements/test.txt -edx-lint==5.6.0 +edx-lint==6.1.0 # via -r requirements/quality.in -edx-submissions==3.12.0 +edx-opaque-keys==4.0.0 + # via + # -r requirements/test.txt + # xblock +edx-submissions==4.0.0 # via -r requirements/test.txt fs==2.4.16 # via @@ -92,7 +100,7 @@ fs-s3fs==1.1.1 # via # -r requirements/test.txt # openedx-django-pyfs -iniconfig==2.1.0 +iniconfig==2.3.0 # via # -r requirements/test.txt # pytest @@ -104,7 +112,7 @@ jinja2==3.1.6 # via # -r requirements/test.txt # code-annotations -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/test.txt # boto3 @@ -117,17 +125,17 @@ lazy==1.6 # via # -r requirements/test.txt # xblock -lxml[html-clean]==6.0.2 +lxml[html-clean]==6.1.1 # via # -r requirements/test.txt # edx-i18n-tools # lxml-html-clean # xblock -lxml-html-clean==0.4.3 +lxml-html-clean==0.4.5 # via # -r requirements/test.txt # lxml -mako==1.3.10 +mako==1.3.12 # via # -r requirements/test.txt # xblock @@ -140,11 +148,11 @@ markupsafe==3.0.3 # xblock mccabe==0.7.0 # via pylint -openedx-django-pyfs==3.8.0 +openedx-django-pyfs==4.0.0 # via # -r requirements/test.txt # xblock -packaging==25.0 +packaging==26.2 # via # -r requirements/test.txt # pytest @@ -152,7 +160,7 @@ path==16.16.0 # via # -r requirements/test.txt # edx-i18n-tools -platformdirs==4.5.0 +platformdirs==4.10.0 # via pylint pluggy==1.6.0 # via @@ -167,7 +175,7 @@ pycodestyle==2.14.0 # via -r requirements/quality.in pydocstyle==6.3.0 # via -r requirements/quality.in -pygments==2.19.2 +pygments==2.20.0 # via # -r requirements/test.txt # pytest @@ -180,20 +188,24 @@ pylint==3.3.9 # pylint-plugin-utils pylint-celery==0.3 # via edx-lint -pylint-django==2.6.1 +pylint-django==2.7.0 # via edx-lint pylint-plugin-utils==0.9.0 # via # pylint-celery # pylint-django -pytest==8.4.2 +pymongo==4.17.0 + # via + # -r requirements/test.txt + # edx-opaque-keys +pytest==9.1.1 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==7.0.0 +pytest-cov==7.1.0 # via -r requirements/test.txt -pytest-django==4.11.1 +pytest-django==4.12.0 # via -r requirements/test.txt python-dateutil==2.9.0.post0 # via @@ -204,7 +216,7 @@ python-slugify==8.0.4 # via # -r requirements/test.txt # code-annotations -pytz==2025.2 +pytz==2026.2 # via # -r requirements/test.txt # edx-submissions @@ -216,11 +228,11 @@ pyyaml==6.0.3 # edx-django-release-util # edx-i18n-tools # xblock -s3transfer==0.14.0 +s3transfer==0.19.0 # via # -r requirements/test.txt # boto3 -simplejson==3.20.2 +simplejson==4.1.1 # via # -r requirements/test.txt # xblock @@ -233,37 +245,43 @@ six==1.17.0 # fs # fs-s3fs # python-dateutil -snowballstemmer==3.0.1 +snowballstemmer==3.1.1 # via pydocstyle -sqlparse==0.5.3 +sqlparse==0.5.5 # via # -r requirements/test.txt # django -stevedore==5.5.0 +stevedore==5.8.0 # via # -r requirements/test.txt # code-annotations + # edx-opaque-keys text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomlkit==0.13.3 - # via pylint +tomlkit==0.15.0 + # via + # edx-lint + # pylint +typing-extensions==4.15.0 + # via + # -r requirements/test.txt + # edx-opaque-keys urllib3==2.2.3 # via # -c requirements/constraints.txt # -r requirements/test.txt # botocore -web-fragments==3.1.0 +web-fragments==4.0.0 # via # -r requirements/test.txt - # xblock # xblock-utils -webob==1.8.9 +webob==1.8.10 # via # -r requirements/test.txt # xblock -xblock[django]==5.2.0 +xblock[django]==6.3.0 # via # -r requirements/test.txt # xblock-utils diff --git a/requirements/test.txt b/requirements/test.txt index 39b16e2..0907cf8 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -8,24 +8,24 @@ appdirs==1.4.4 # via # -r requirements/base.txt # fs -asgiref==3.10.0 +asgiref==3.11.1 # via # -r requirements/base.txt # django -boto3==1.40.51 +boto3==1.43.36 # via # -r requirements/base.txt # fs-s3fs -botocore==1.40.51 +botocore==1.43.36 # via # -r requirements/base.txt # boto3 # s3transfer -click==8.3.0 +click==8.4.2 # via code-annotations -code-annotations==2.3.0 +code-annotations==3.0.0 # via -r requirements/test.in -coverage[toml]==7.10.7 +coverage[toml]==7.14.3 # via pytest-cov ddt==1.7.2 # via -r requirements/test.in @@ -41,7 +41,7 @@ ddt==1.7.2 # edx-submissions # jsonfield # openedx-django-pyfs -django-appconf==1.1.0 +django-appconf==1.2.0 # via # -r requirements/base.txt # django-statici18n @@ -49,19 +49,27 @@ django-model-utils==5.0.0 # via # -r requirements/base.txt # edx-submissions -django-statici18n==2.6.0 +django-statici18n==2.7.1 # via -r requirements/base.txt -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/base.txt # edx-submissions +dnspython==2.8.0 + # via + # -r requirements/base.txt + # pymongo edx-django-release-util==1.5.0 # via # -r requirements/base.txt # edx-submissions -edx-i18n-tools==1.9.0 +edx-i18n-tools==2.0.0 # via -r requirements/base.txt -edx-submissions==3.12.0 +edx-opaque-keys==4.0.0 + # via + # -r requirements/base.txt + # xblock +edx-submissions==4.0.0 # via -r requirements/base.txt fs==2.4.16 # via @@ -73,11 +81,11 @@ fs-s3fs==1.1.1 # via # -r requirements/base.txt # openedx-django-pyfs -iniconfig==2.1.0 +iniconfig==2.3.0 # via pytest jinja2==3.1.6 # via code-annotations -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/base.txt # boto3 @@ -90,17 +98,17 @@ lazy==1.6 # via # -r requirements/base.txt # xblock -lxml[html-clean]==6.0.2 +lxml[html-clean]==6.1.1 # via # -r requirements/base.txt # edx-i18n-tools # lxml-html-clean # xblock -lxml-html-clean==0.4.3 +lxml-html-clean==0.4.5 # via # -r requirements/base.txt # lxml -mako==1.3.10 +mako==1.3.12 # via # -r requirements/base.txt # xblock @@ -111,11 +119,11 @@ markupsafe==3.0.3 # jinja2 # mako # xblock -openedx-django-pyfs==3.8.0 +openedx-django-pyfs==4.0.0 # via # -r requirements/base.txt # xblock -packaging==25.0 +packaging==26.2 # via pytest path==16.16.0 # via @@ -129,15 +137,19 @@ polib==1.2.0 # via # -r requirements/base.txt # edx-i18n-tools -pygments==2.19.2 +pygments==2.20.0 # via pytest -pytest==8.4.2 +pymongo==4.17.0 + # via + # -r requirements/base.txt + # edx-opaque-keys +pytest==9.1.1 # via # pytest-cov # pytest-django -pytest-cov==7.0.0 +pytest-cov==7.1.0 # via -r requirements/test.in -pytest-django==4.11.1 +pytest-django==4.12.0 # via -r requirements/test.in python-dateutil==2.9.0.post0 # via @@ -146,7 +158,7 @@ python-dateutil==2.9.0.post0 # xblock python-slugify==8.0.4 # via code-annotations -pytz==2025.2 +pytz==2026.2 # via # -r requirements/base.txt # edx-submissions @@ -158,11 +170,11 @@ pyyaml==6.0.3 # edx-django-release-util # edx-i18n-tools # xblock -s3transfer==0.14.0 +s3transfer==0.19.0 # via # -r requirements/base.txt # boto3 -simplejson==3.20.2 +simplejson==4.1.1 # via # -r requirements/base.txt # xblock @@ -174,29 +186,35 @@ six==1.17.0 # fs # fs-s3fs # python-dateutil -sqlparse==0.5.3 +sqlparse==0.5.5 # via # -r requirements/base.txt # django -stevedore==5.5.0 - # via code-annotations +stevedore==5.8.0 + # via + # -r requirements/base.txt + # code-annotations + # edx-opaque-keys text-unidecode==1.3 # via python-slugify +typing-extensions==4.15.0 + # via + # -r requirements/base.txt + # edx-opaque-keys urllib3==2.2.3 # via # -c requirements/constraints.txt # -r requirements/base.txt # botocore -web-fragments==3.1.0 +web-fragments==4.0.0 # via # -r requirements/base.txt - # xblock # xblock-utils -webob==1.8.9 +webob==1.8.10 # via # -r requirements/base.txt # xblock -xblock[django]==5.2.0 +xblock[django]==6.3.0 # via # -r requirements/base.txt # xblock-utils diff --git a/setup.py b/setup.py index a0134a9..ab64fbc 100755 --- a/setup.py +++ b/setup.py @@ -132,7 +132,7 @@ def package_data(pkg, roots): include_package_data=True, install_requires=load_requirements('requirements/base.in'), - python_requires=">=3.11", + python_requires=">=3.12", license="AGPL 3.0", zip_safe=False, keywords='Python edx', @@ -141,9 +141,7 @@ def package_data(pkg, roots): 'Intended Audience :: Developers', 'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)', 'Natural Language :: English', - 'Framework :: Django :: 4.2', 'Framework :: Django :: 5.2', - 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', ], entry_points={ diff --git a/tox.ini b/tox.ini index 5e44fa4..34b1ded 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,5 @@ [tox] envlist = - py311-django42, quality, docs - py311-django52, quality, docs py312-django52, quality, docs skipsdist = true @@ -43,7 +41,6 @@ DJANGO_SETTINGS_MODULE = mindmap.settings.test whitelist_externals = make deps = - django42: -r requirements/django42.txt django52: -r requirements/django52.txt -r{toxinidir}/requirements/test.txt commands =