diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e17bff..e178c98 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,11 +15,8 @@ jobs: strategy: matrix: os: [ubuntu-20.04] - python-version: ['3.8', '3.11'] - toxenv: [quality, docs, django32, django42] - exclude: - - python-version: '3.11' - toxenv: django32 + python-version: ['3.11'] + toxenv: [quality, docs, django42] steps: - uses: actions/checkout@v4 diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 7f9fc72..5a5794a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -16,6 +16,16 @@ Unreleased * +1.0.0 - 2025-02-05 +********************************************** + +Changed +======= + +* Removed support for Python 3.8 and Django 3.2 +* Replaced deprecated `pkg_resources` with `importlib.resources` for better compatibility with newer Django and Python versions. +* Starting with this version, this package is no longer compatible with releases older than Redwood. + 0.6.0 - 2025-01-17 ********************************************** diff --git a/README.rst b/README.rst index 32b013b..a1c3a75 100644 --- a/README.rst +++ b/README.rst @@ -25,9 +25,9 @@ Compatibility Notes +------------------+--------------+ | Open edX Release | Version | +==================+==============+ -| Palm | >= 0.5.0 | +| Palm | >= 0.5.0 <1.0| +------------------+--------------+ -| Quince | >= 0.5.0 | +| Quince | >= 0.5.0 <1.0| +------------------+--------------+ | Redwood | >= 0.5.0 | +------------------+--------------+ diff --git a/imagesgallery/__init__.py b/imagesgallery/__init__.py index 18a899c..ca955d2 100644 --- a/imagesgallery/__init__.py +++ b/imagesgallery/__init__.py @@ -2,4 +2,4 @@ Init for the ImagesGalleryXBlock package. """ -__version__ = "0.6.0" +__version__ = "1.0.0" diff --git a/imagesgallery/imagesgallery.py b/imagesgallery/imagesgallery.py index 1b55e08..2330ed3 100644 --- a/imagesgallery/imagesgallery.py +++ b/imagesgallery/imagesgallery.py @@ -6,7 +6,7 @@ from http import HTTPStatus from urllib.parse import urljoin -import pkg_resources +from importlib.resources import files as importlib_files from django.conf import settings from django.utils import translation from opaque_keys.edx.keys import AssetKey @@ -15,7 +15,6 @@ from xblock.core import XBlock from xblock.fields import List, Scope from xblock.reference.user_service import XBlockUser -from xblock.utils.resources import ResourceLoader from imagesgallery.edxapp_wrapper.contentstore import get_static_content, contentstore, update_course_run_asset from imagesgallery.edxapp_wrapper.site_configuration import configuration_helpers @@ -84,8 +83,7 @@ def block_id_parsed(self): def resource_string(self, path): """Handy helper for getting resources from our kit.""" - data = pkg_resources.resource_string(__name__, path) - return data.decode("utf8") + return importlib_files(__package__).joinpath(path).read_text(encoding="utf-8") def read_file(self, path: str): """Helper for reading a file using a relative path""" @@ -383,9 +381,7 @@ def _get_statici18n_js_url(): text_js = 'public/js/translations/{locale_code}/text.js' lang_code = locale_code.split('-')[0] for code in (locale_code, lang_code, 'en'): - loader = ResourceLoader(__name__) - if pkg_resources.resource_exists( - loader.module_name, text_js.format(locale_code=code)): + if importlib_files(__package__).joinpath(text_js.format(locale_code=code)).exists(): return text_js.format(locale_code=code) return None diff --git a/requirements/base.txt b/requirements/base.txt index 28a5e14..6b9e8f8 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -8,11 +8,9 @@ appdirs==1.4.4 # via fs asgiref==3.8.1 # via django -backports-zoneinfo==0.2.1 ; python_version < "3.9" - # via django -boto3==1.36.0 +boto3==1.36.13 # via fs-s3fs -botocore==1.36.0 +botocore==1.36.13 # via # boto3 # s3transfer @@ -27,7 +25,7 @@ django-appconf==1.0.6 # via django-statici18n django-statici18n==2.6.0 # via -r requirements/base.in -dnspython==2.6.1 +dnspython==2.7.0 # via pymongo edx-i18n-tools==1.6.3 # via -r requirements/base.in @@ -53,12 +51,12 @@ lxml[html-clean,html_clean]==5.3.0 # xblock lxml-html-clean==0.4.1 # via lxml -mako==1.3.8 +mako==1.3.9 # via # -r requirements/base.in # xblock # xblock-utils -markupsafe==2.1.5 +markupsafe==3.0.2 # via # mako # xblock @@ -66,23 +64,23 @@ openedx-django-pyfs==3.7.0 # via xblock path==16.16.0 # via edx-i18n-tools -pbr==6.1.0 +pbr==6.1.1 # via stevedore polib==1.2.0 # via edx-i18n-tools -pymongo==4.10.1 +pymongo==4.11 # via edx-opaque-keys python-dateutil==2.9.0.post0 # via # botocore # xblock -pytz==2024.2 +pytz==2025.1 # via xblock pyyaml==6.0.2 # via # edx-i18n-tools # xblock -s3transfer==0.11.0 +s3transfer==0.11.2 # via boto3 simplejson==3.19.3 # via @@ -95,12 +93,10 @@ six==1.17.0 # python-dateutil sqlparse==0.5.3 # via django -stevedore==5.3.0 +stevedore==5.4.0 # via edx-opaque-keys typing-extensions==4.12.2 - # via - # asgiref - # edx-opaque-keys + # via edx-opaque-keys urllib3==1.26.20 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt @@ -112,7 +108,7 @@ web-fragments==2.2.0 # xblock-utils webob==1.8.9 # via xblock -xblock[django]==5.1.0 +xblock[django]==5.1.1 # via # -r requirements/base.in # xblock-utils diff --git a/requirements/ci.txt b/requirements/ci.txt index 74262b1..ec859b3 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,12 +1,12 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade # backports-tarfile==1.2.0 # via jaraco-context -certifi==2024.12.14 +certifi==2025.1.31 # via requests cffi==1.17.1 # via cryptography @@ -16,19 +16,17 @@ cryptography==44.0.0 # via secretstorage distlib==0.3.9 # via virtualenv -docutils==0.20.1 +docutils==0.21.2 # via readme-renderer -filelock==3.16.1 +filelock==3.17.0 # via # tox # virtualenv +id==1.5.0 + # via twine idna==3.10 # via requests -importlib-metadata==8.5.0 - # via - # keyring - # twine -importlib-resources==6.4.5 +importlib-metadata==8.6.1 # via keyring jaraco-classes==3.4.0 # via keyring @@ -40,13 +38,13 @@ jeepney==0.8.0 # via # keyring # secretstorage -keyring==25.5.0 +keyring==25.6.0 # via twine markdown-it-py==3.0.0 # via rich mdurl==0.1.2 # via markdown-it-py -more-itertools==10.5.0 +more-itertools==10.6.0 # via # jaraco-classes # jaraco-functools @@ -57,8 +55,6 @@ packaging==24.2 # pyproject-api # tox # twine -pkginfo==1.12.0 - # via twine platformdirs==4.3.6 # via # tox @@ -73,10 +69,11 @@ pygments==2.19.1 # via # readme-renderer # rich -readme-renderer==43.0 +readme-renderer==44.0 # via twine requests==2.32.3 # via + # id # requests-toolbelt # twine requests-toolbelt==1.0.0 @@ -89,31 +86,21 @@ secretstorage==3.3.3 # via keyring six==1.17.0 # via tox -tomli==2.2.1 - # via - # pyproject-api - # tox tox==3.28.0 # via # -r requirements/ci.in # tox-battery tox-battery==0.6.2 # via -r requirements/ci.in -twine==6.0.1 +twine==6.1.0 # via -r requirements/ci.in -typing-extensions==4.12.2 - # via - # rich - # tox urllib3==1.26.20 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -c requirements/constraints.txt # requests # twine -virtualenv==20.29.0 +virtualenv==20.29.1 # via tox -zipp==3.20.2 - # via - # importlib-metadata - # importlib-resources +zipp==3.21.0 + # via importlib-metadata diff --git a/requirements/constraints.txt b/requirements/constraints.txt index f6d8431..5dff34d 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -15,9 +15,3 @@ # which require urllib3<2 for now. # Issue for unpinning: https://github.com/openedx/edx-platform/issues/32222 urllib3<2.0.0 - -# backports.zoneinfo is only needed for Python < 3.9 -backports.zoneinfo; python_version<'3.9' - -# edx-lint 5.3.7 is the last version compatible with python 3.8 -edx_lint<5.4.0 \ No newline at end of file diff --git a/requirements/dev.txt b/requirements/dev.txt index 45fb43d..2b39e24 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -12,7 +12,7 @@ asgiref==3.8.1 # via # -r requirements/quality.txt # django -astroid==3.2.4 +astroid==3.3.8 # via # -r requirements/quality.txt # pylint @@ -21,15 +21,11 @@ backports-tarfile==1.2.0 # via # -r requirements/ci.txt # jaraco-context -backports-zoneinfo==0.2.1 ; python_version < "3.9" - # via - # -r requirements/quality.txt - # django -boto3==1.36.0 +boto3==1.36.13 # via # -r requirements/quality.txt # fs-s3fs -botocore==1.36.0 +botocore==1.36.13 # via # -r requirements/quality.txt # boto3 @@ -38,7 +34,7 @@ build==1.2.2.post1 # via # -r requirements/pip-tools.txt # pip-tools -certifi==2024.12.14 +certifi==2025.1.31 # via # -r requirements/ci.txt # requests @@ -64,11 +60,11 @@ click-log==0.4.0 # via # -r requirements/quality.txt # edx-lint -code-annotations==1.8.2 +code-annotations==2.2.0 # via # -r requirements/quality.txt # edx-lint -coverage[toml]==7.6.1 +coverage[toml]==7.6.10 # via # -r requirements/quality.txt # pytest-cov @@ -76,7 +72,7 @@ cryptography==44.0.0 # via # -r requirements/ci.txt # secretstorage -diff-cover==9.2.0 +diff-cover==9.2.2 # via -r requirements/dev.in dill==0.3.9 # via @@ -100,11 +96,11 @@ django-appconf==1.0.6 # django-statici18n django-statici18n==2.6.0 # via -r requirements/quality.txt -dnspython==2.6.1 +dnspython==2.7.0 # via # -r requirements/quality.txt # pymongo -docutils==0.20.1 +docutils==0.21.2 # via # -r requirements/ci.txt # readme-renderer @@ -113,14 +109,12 @@ edx-i18n-tools==1.6.3 # -r requirements/dev.in # -r requirements/quality.txt edx-lint==5.3.7 - # via -r requirements/quality.txt -edx-opaque-keys==2.11.0 - # via -r requirements/quality.txt -exceptiongroup==1.2.2 # via + # -c requirements/constraints.txt # -r requirements/quality.txt - # pytest -filelock==3.16.1 +edx-opaque-keys==2.11.0 + # via -r requirements/quality.txt +filelock==3.17.0 # via # -r requirements/ci.txt # tox @@ -135,18 +129,15 @@ fs-s3fs==1.1.1 # via # -r requirements/quality.txt # openedx-django-pyfs -idna==3.10 +id==1.5.0 # via # -r requirements/ci.txt - # requests -importlib-metadata==8.5.0 + # twine +idna==3.10 # via # -r requirements/ci.txt - # -r requirements/pip-tools.txt - # build - # keyring - # twine -importlib-resources==6.4.5 + # requests +importlib-metadata==8.6.1 # via # -r requirements/ci.txt # keyring @@ -154,7 +145,7 @@ iniconfig==2.0.0 # via # -r requirements/quality.txt # pytest -isort==5.13.2 +isort==6.0.0 # via # -r requirements/quality.txt # pylint @@ -185,7 +176,7 @@ jmespath==1.0.1 # -r requirements/quality.txt # boto3 # botocore -keyring==25.5.0 +keyring==25.6.0 # via # -r requirements/ci.txt # twine @@ -203,7 +194,7 @@ lxml-html-clean==0.4.1 # via # -r requirements/quality.txt # lxml -mako==1.3.8 +mako==1.3.9 # via # -r requirements/quality.txt # xblock @@ -212,7 +203,7 @@ markdown-it-py==3.0.0 # via # -r requirements/ci.txt # rich -markupsafe==2.1.5 +markupsafe==3.0.2 # via # -r requirements/quality.txt # jinja2 @@ -226,7 +217,7 @@ mdurl==0.1.2 # via # -r requirements/ci.txt # markdown-it-py -more-itertools==10.5.0 +more-itertools==10.6.0 # via # -r requirements/ci.txt # jaraco-classes @@ -252,16 +243,12 @@ path==16.16.0 # via # -r requirements/quality.txt # edx-i18n-tools -pbr==6.1.0 +pbr==6.1.1 # via # -r requirements/quality.txt # stevedore pip-tools==7.4.1 # via -r requirements/pip-tools.txt -pkginfo==1.12.0 - # via - # -r requirements/ci.txt - # twine platformdirs==4.3.6 # via # -r requirements/ci.txt @@ -297,7 +284,7 @@ pygments==2.19.1 # diff-cover # readme-renderer # rich -pylint==3.2.7 +pylint==3.3.4 # via # -r requirements/quality.txt # edx-lint @@ -308,7 +295,7 @@ pylint-celery==0.3 # via # -r requirements/quality.txt # edx-lint -pylint-django==2.5.5 +pylint-django==2.6.1 # via # -r requirements/quality.txt # edx-lint @@ -317,7 +304,7 @@ pylint-plugin-utils==0.8.2 # -r requirements/quality.txt # pylint-celery # pylint-django -pymongo==4.10.1 +pymongo==4.11 # via # -r requirements/quality.txt # edx-opaque-keys @@ -331,7 +318,7 @@ pytest==8.3.4 # -r requirements/quality.txt # pytest-cov # pytest-django -pytest-cov==5.0.0 +pytest-cov==6.0.0 # via -r requirements/quality.txt pytest-django==4.9.0 # via -r requirements/quality.txt @@ -344,7 +331,7 @@ python-slugify==8.0.4 # via # -r requirements/quality.txt # code-annotations -pytz==2024.2 +pytz==2025.1 # via # -r requirements/quality.txt # xblock @@ -354,13 +341,14 @@ pyyaml==6.0.2 # code-annotations # edx-i18n-tools # xblock -readme-renderer==43.0 +readme-renderer==44.0 # via # -r requirements/ci.txt # twine requests==2.32.3 # via # -r requirements/ci.txt + # id # requests-toolbelt # twine requests-toolbelt==1.0.0 @@ -375,7 +363,7 @@ rich==13.9.4 # via # -r requirements/ci.txt # twine -s3transfer==0.11.0 +s3transfer==0.11.2 # via # -r requirements/quality.txt # boto3 @@ -405,7 +393,7 @@ sqlparse==0.5.3 # via # -r requirements/quality.txt # django -stevedore==5.3.0 +stevedore==5.4.0 # via # -r requirements/quality.txt # code-annotations @@ -414,17 +402,6 @@ text-unidecode==1.3 # via # -r requirements/quality.txt # python-slugify -tomli==2.2.1 - # via - # -r requirements/ci.txt - # -r requirements/pip-tools.txt - # -r requirements/quality.txt - # build - # coverage - # pip-tools - # pylint - # pytest - # tox tomlkit==0.13.2 # via # -r requirements/quality.txt @@ -435,17 +412,12 @@ tox==3.28.0 # tox-battery tox-battery==0.6.2 # via -r requirements/ci.txt -twine==6.0.1 +twine==6.1.0 # via -r requirements/ci.txt typing-extensions==4.12.2 # via - # -r requirements/ci.txt # -r requirements/quality.txt - # asgiref - # astroid # edx-opaque-keys - # pylint - # rich urllib3==1.26.20 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt @@ -455,7 +427,7 @@ urllib3==1.26.20 # botocore # requests # twine -virtualenv==20.29.0 +virtualenv==20.29.1 # via # -r requirements/ci.txt # tox @@ -472,18 +444,16 @@ wheel==0.45.1 # via # -r requirements/pip-tools.txt # pip-tools -xblock[django]==5.1.0 +xblock[django]==5.1.1 # via # -r requirements/quality.txt # xblock-utils xblock-utils==4.0.0 # via -r requirements/quality.txt -zipp==3.20.2 +zipp==3.21.0 # via # -r requirements/ci.txt - # -r requirements/pip-tools.txt # importlib-metadata - # importlib-resources # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/doc.txt b/requirements/doc.txt index 6f0c11b..6e89abe 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -1,12 +1,12 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade # -accessible-pygments==0.0.4 +accessible-pygments==0.0.5 # via pydata-sphinx-theme -alabaster==0.7.13 +alabaster==1.0.0 # via sphinx appdirs==1.4.4 # via @@ -16,30 +16,26 @@ asgiref==3.8.1 # via # -r requirements/test.txt # django -babel==2.16.0 +babel==2.17.0 # via # pydata-sphinx-theme # sphinx backports-tarfile==1.2.0 # via jaraco-context -backports-zoneinfo==0.2.1 ; python_version < "3.9" - # via - # -r requirements/test.txt - # django -beautifulsoup4==4.12.3 +beautifulsoup4==4.13.3 # via pydata-sphinx-theme -boto3==1.36.0 +boto3==1.36.13 # via # -r requirements/test.txt # fs-s3fs -botocore==1.36.0 +botocore==1.36.13 # via # -r requirements/test.txt # boto3 # s3transfer build==1.2.2.post1 # via -r requirements/doc.in -certifi==2024.12.14 +certifi==2025.1.31 # via requests cffi==1.17.1 # via cryptography @@ -49,9 +45,9 @@ click==8.1.8 # via # -r requirements/test.txt # code-annotations -code-annotations==1.8.2 +code-annotations==2.2.0 # via -r requirements/test.txt -coverage[toml]==7.6.1 +coverage[toml]==7.6.10 # via # -r requirements/test.txt # pytest-cov @@ -71,13 +67,13 @@ django-appconf==1.0.6 # django-statici18n django-statici18n==2.6.0 # via -r requirements/test.txt -dnspython==2.6.1 +dnspython==2.7.0 # via # -r requirements/test.txt # pymongo doc8==1.1.2 # via -r requirements/doc.in -docutils==0.19 +docutils==0.21.2 # via # doc8 # pydata-sphinx-theme @@ -88,10 +84,6 @@ edx-i18n-tools==1.6.3 # via -r requirements/test.txt edx-opaque-keys==2.11.0 # via -r requirements/test.txt -exceptiongroup==1.2.2 - # via - # -r requirements/test.txt - # pytest fs==2.4.16 # via # -r requirements/test.txt @@ -102,17 +94,13 @@ fs-s3fs==1.1.1 # via # -r requirements/test.txt # openedx-django-pyfs +id==1.5.0 + # via twine idna==3.10 # via requests imagesize==1.4.1 # via sphinx -importlib-metadata==8.5.0 - # via - # build - # keyring - # sphinx - # twine -importlib-resources==6.4.5 +importlib-metadata==8.6.1 # via keyring iniconfig==2.0.0 # via @@ -138,7 +126,7 @@ jmespath==1.0.1 # -r requirements/test.txt # boto3 # botocore -keyring==25.5.0 +keyring==25.6.0 # via twine lazy==1.6 # via @@ -154,14 +142,14 @@ lxml-html-clean==0.4.1 # via # -r requirements/test.txt # lxml -mako==1.3.8 +mako==1.3.9 # via # -r requirements/test.txt # xblock # xblock-utils markdown-it-py==3.0.0 # via rich -markupsafe==2.1.5 +markupsafe==3.0.2 # via # -r requirements/test.txt # jinja2 @@ -169,7 +157,7 @@ markupsafe==2.1.5 # xblock mdurl==0.1.2 # via markdown-it-py -more-itertools==10.5.0 +more-itertools==10.6.0 # via # jaraco-classes # jaraco-functools @@ -183,7 +171,6 @@ packaging==24.2 # via # -r requirements/test.txt # build - # pydata-sphinx-theme # pytest # sphinx # twine @@ -191,12 +178,10 @@ path==16.16.0 # via # -r requirements/test.txt # edx-i18n-tools -pbr==6.1.0 +pbr==6.1.1 # via # -r requirements/test.txt # stevedore -pkginfo==1.12.0 - # via twine pluggy==1.5.0 # via # -r requirements/test.txt @@ -207,7 +192,7 @@ polib==1.2.0 # edx-i18n-tools pycparser==2.22 # via cffi -pydata-sphinx-theme==0.14.4 +pydata-sphinx-theme==0.16.1 # via sphinx-book-theme pygments==2.19.1 # via @@ -217,7 +202,7 @@ pygments==2.19.1 # readme-renderer # rich # sphinx -pymongo==4.10.1 +pymongo==4.11 # via # -r requirements/test.txt # edx-opaque-keys @@ -228,7 +213,7 @@ pytest==8.3.4 # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==5.0.0 +pytest-cov==6.0.0 # via -r requirements/test.txt pytest-django==4.9.0 # via -r requirements/test.txt @@ -241,10 +226,9 @@ python-slugify==8.0.4 # via # -r requirements/test.txt # code-annotations -pytz==2024.2 +pytz==2025.1 # via # -r requirements/test.txt - # babel # xblock pyyaml==6.0.2 # via @@ -252,10 +236,11 @@ pyyaml==6.0.2 # code-annotations # edx-i18n-tools # xblock -readme-renderer==43.0 +readme-renderer==44.0 # via twine requests==2.32.3 # via + # id # requests-toolbelt # sphinx # twine @@ -267,7 +252,7 @@ rfc3986==2.0.0 # via twine rich==13.9.4 # via twine -s3transfer==0.11.0 +s3transfer==0.11.2 # via # -r requirements/test.txt # boto3 @@ -288,30 +273,30 @@ snowballstemmer==2.2.0 # via sphinx soupsieve==2.6 # via beautifulsoup4 -sphinx==6.2.1 +sphinx==8.1.3 # via # -r requirements/doc.in # pydata-sphinx-theme # sphinx-book-theme -sphinx-book-theme==1.0.1 +sphinx-book-theme==1.1.3 # via -r requirements/doc.in -sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-applehelp==2.0.0 # via sphinx -sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-devhelp==2.0.0 # via sphinx -sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-htmlhelp==2.1.0 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-qthelp==2.0.0 # via sphinx -sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib-serializinghtml==2.0.0 # via sphinx sqlparse==0.5.3 # via # -r requirements/test.txt # django -stevedore==5.3.0 +stevedore==5.4.0 # via # -r requirements/test.txt # code-annotations @@ -321,22 +306,14 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomli==2.2.1 - # via - # -r requirements/test.txt - # build - # coverage - # doc8 - # pytest -twine==6.0.1 +twine==6.1.0 # via -r requirements/doc.in typing-extensions==4.12.2 # via # -r requirements/test.txt - # asgiref + # beautifulsoup4 # edx-opaque-keys # pydata-sphinx-theme - # rich urllib3==1.26.20 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt @@ -354,16 +331,14 @@ webob==1.8.9 # via # -r requirements/test.txt # xblock -xblock[django]==5.1.0 +xblock[django]==5.1.1 # via # -r requirements/test.txt # xblock-utils xblock-utils==4.0.0 # via -r requirements/test.txt -zipp==3.20.2 - # via - # importlib-metadata - # importlib-resources +zipp==3.21.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 5fb5b3f..5461e43 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -8,8 +8,6 @@ build==1.2.2.post1 # via pip-tools click==8.1.8 # via pip-tools -importlib-metadata==8.5.0 - # via build packaging==24.2 # via build pip-tools==7.4.1 @@ -18,14 +16,8 @@ pyproject-hooks==1.2.0 # via # build # pip-tools -tomli==2.2.1 - # via - # build - # pip-tools wheel==0.45.1 # via pip-tools -zipp==3.20.2 - # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/pip.txt b/requirements/pip.txt index c96b113..e6c3348 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -12,5 +12,5 @@ pip==24.2 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/pip.in -setuptools==75.3.0 +setuptools==75.8.0 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index ab86d20..30e3c77 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -12,19 +12,15 @@ asgiref==3.8.1 # via # -r requirements/test.txt # django -astroid==3.2.4 +astroid==3.3.8 # via # pylint # pylint-celery -backports-zoneinfo==0.2.1 ; python_version < "3.9" - # via - # -r requirements/test.txt - # django -boto3==1.36.0 +boto3==1.36.13 # via # -r requirements/test.txt # fs-s3fs -botocore==1.36.0 +botocore==1.36.13 # via # -r requirements/test.txt # boto3 @@ -37,11 +33,11 @@ click==8.1.8 # edx-lint click-log==0.4.0 # via edx-lint -code-annotations==1.8.2 +code-annotations==2.2.0 # via # -r requirements/test.txt # edx-lint -coverage[toml]==7.6.1 +coverage[toml]==7.6.10 # via # -r requirements/test.txt # pytest-cov @@ -61,20 +57,18 @@ django-appconf==1.0.6 # django-statici18n django-statici18n==2.6.0 # via -r requirements/test.txt -dnspython==2.6.1 +dnspython==2.7.0 # via # -r requirements/test.txt # pymongo edx-i18n-tools==1.6.3 # via -r requirements/test.txt edx-lint==5.3.7 - # via -r requirements/quality.in + # via + # -c requirements/constraints.txt + # -r requirements/quality.in edx-opaque-keys==2.11.0 # via -r requirements/test.txt -exceptiongroup==1.2.2 - # via - # -r requirements/test.txt - # pytest fs==2.4.16 # via # -r requirements/test.txt @@ -89,7 +83,7 @@ iniconfig==2.0.0 # via # -r requirements/test.txt # pytest -isort==5.13.2 +isort==6.0.0 # via # -r requirements/quality.in # pylint @@ -116,12 +110,12 @@ lxml-html-clean==0.4.1 # via # -r requirements/test.txt # lxml -mako==1.3.8 +mako==1.3.9 # via # -r requirements/test.txt # xblock # xblock-utils -markupsafe==2.1.5 +markupsafe==3.0.2 # via # -r requirements/test.txt # jinja2 @@ -141,7 +135,7 @@ path==16.16.0 # via # -r requirements/test.txt # edx-i18n-tools -pbr==6.1.0 +pbr==6.1.1 # via # -r requirements/test.txt # stevedore @@ -159,7 +153,7 @@ pycodestyle==2.12.1 # via -r requirements/quality.in pydocstyle==6.3.0 # via -r requirements/quality.in -pylint==3.2.7 +pylint==3.3.4 # via # edx-lint # pylint-celery @@ -167,13 +161,13 @@ pylint==3.2.7 # pylint-plugin-utils pylint-celery==0.3 # via edx-lint -pylint-django==2.5.5 +pylint-django==2.6.1 # via edx-lint pylint-plugin-utils==0.8.2 # via # pylint-celery # pylint-django -pymongo==4.10.1 +pymongo==4.11 # via # -r requirements/test.txt # edx-opaque-keys @@ -182,7 +176,7 @@ pytest==8.3.4 # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==5.0.0 +pytest-cov==6.0.0 # via -r requirements/test.txt pytest-django==4.9.0 # via -r requirements/test.txt @@ -195,7 +189,7 @@ python-slugify==8.0.4 # via # -r requirements/test.txt # code-annotations -pytz==2024.2 +pytz==2025.1 # via # -r requirements/test.txt # xblock @@ -205,7 +199,7 @@ pyyaml==6.0.2 # code-annotations # edx-i18n-tools # xblock -s3transfer==0.11.0 +s3transfer==0.11.2 # via # -r requirements/test.txt # boto3 @@ -227,7 +221,7 @@ sqlparse==0.5.3 # via # -r requirements/test.txt # django -stevedore==5.3.0 +stevedore==5.4.0 # via # -r requirements/test.txt # code-annotations @@ -236,21 +230,12 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomli==2.2.1 - # via - # -r requirements/test.txt - # coverage - # pylint - # pytest tomlkit==0.13.2 # via pylint typing-extensions==4.12.2 # via # -r requirements/test.txt - # asgiref - # astroid # edx-opaque-keys - # pylint urllib3==1.26.20 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt @@ -266,7 +251,7 @@ webob==1.8.9 # via # -r requirements/test.txt # xblock -xblock[django]==5.1.0 +xblock[django]==5.1.1 # via # -r requirements/test.txt # xblock-utils diff --git a/requirements/test.txt b/requirements/test.txt index 4c96f66..d00035b 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # make upgrade @@ -12,24 +12,20 @@ asgiref==3.8.1 # via # -r requirements/base.txt # django -backports-zoneinfo==0.2.1 ; python_version < "3.9" - # via - # -r requirements/base.txt - # django -boto3==1.36.0 +boto3==1.36.13 # via # -r requirements/base.txt # fs-s3fs -botocore==1.36.0 +botocore==1.36.13 # via # -r requirements/base.txt # boto3 # s3transfer click==8.1.8 # via code-annotations -code-annotations==1.8.2 +code-annotations==2.2.0 # via -r requirements/test.in -coverage[toml]==7.6.1 +coverage[toml]==7.6.10 # via pytest-cov # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt @@ -44,7 +40,7 @@ django-appconf==1.0.6 # django-statici18n django-statici18n==2.6.0 # via -r requirements/base.txt -dnspython==2.6.1 +dnspython==2.7.0 # via # -r requirements/base.txt # pymongo @@ -52,8 +48,6 @@ edx-i18n-tools==1.6.3 # via -r requirements/base.txt edx-opaque-keys==2.11.0 # via -r requirements/base.txt -exceptiongroup==1.2.2 - # via pytest fs==2.4.16 # via # -r requirements/base.txt @@ -87,12 +81,12 @@ lxml-html-clean==0.4.1 # via # -r requirements/base.txt # lxml -mako==1.3.8 +mako==1.3.9 # via # -r requirements/base.txt # xblock # xblock-utils -markupsafe==2.1.5 +markupsafe==3.0.2 # via # -r requirements/base.txt # jinja2 @@ -108,7 +102,7 @@ path==16.16.0 # via # -r requirements/base.txt # edx-i18n-tools -pbr==6.1.0 +pbr==6.1.1 # via # -r requirements/base.txt # stevedore @@ -118,7 +112,7 @@ polib==1.2.0 # via # -r requirements/base.txt # edx-i18n-tools -pymongo==4.10.1 +pymongo==4.11 # via # -r requirements/base.txt # edx-opaque-keys @@ -126,7 +120,7 @@ pytest==8.3.4 # via # pytest-cov # pytest-django -pytest-cov==5.0.0 +pytest-cov==6.0.0 # via -r requirements/test.in pytest-django==4.9.0 # via -r requirements/test.in @@ -137,7 +131,7 @@ python-dateutil==2.9.0.post0 # xblock python-slugify==8.0.4 # via code-annotations -pytz==2024.2 +pytz==2025.1 # via # -r requirements/base.txt # xblock @@ -147,7 +141,7 @@ pyyaml==6.0.2 # code-annotations # edx-i18n-tools # xblock -s3transfer==0.11.0 +s3transfer==0.11.2 # via # -r requirements/base.txt # boto3 @@ -166,21 +160,16 @@ sqlparse==0.5.3 # via # -r requirements/base.txt # django -stevedore==5.3.0 +stevedore==5.4.0 # via # -r requirements/base.txt # code-annotations # edx-opaque-keys text-unidecode==1.3 # via python-slugify -tomli==2.2.1 - # via - # coverage - # pytest typing-extensions==4.12.2 # via # -r requirements/base.txt - # asgiref # edx-opaque-keys urllib3==1.26.20 # via @@ -197,7 +186,7 @@ webob==1.8.9 # via # -r requirements/base.txt # xblock -xblock[django]==5.1.0 +xblock[django]==5.1.1 # via # -r requirements/base.txt # xblock-utils diff --git a/setup.py b/setup.py index 40361c6..d91715a 100755 --- a/setup.py +++ b/setup.py @@ -160,7 +160,7 @@ def package_data(pkg, roots): include_package_data=True, install_requires=load_requirements('requirements/base.in'), - python_requires=">=3.8", + python_requires=">=3.11", license="AGPL 3.0", zip_safe=False, keywords='Python edx', @@ -170,10 +170,8 @@ def package_data(pkg, roots): 'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)', 'Natural Language :: English', 'Framework :: Django', - 'Framework :: Django :: 3.2', 'Framework :: Django :: 4.2', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.11', ], entry_points={ diff --git a/tox.ini b/tox.ini index 8d1b22f..0fd30f3 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38-django{32,42}, py311-django{42}, quality, docs +envlist = py311-django{42}, quality, docs skipsdist = true [doc8] @@ -33,7 +33,6 @@ match-dir = (?!migrations) [testenv] deps = - django32: Django>=3.2,<4.0 django40: Django>=4.2, <5.0 -r{toxinidir}/requirements/test.txt commands =