From f833c37c025af459a6991cc87f6f2f8d379a3441 Mon Sep 17 00:00:00 2001 From: Muhammad Faraz Maqsood Date: Thu, 5 Jun 2025 14:17:32 +0500 Subject: [PATCH 1/5] fix: parse_xml error during import 41e1795 In this commit: - fix parse_xml error that occurs during importing a course that contains problem-builder component or during copying pasting the problem-builder component by removing unused & unsupported positional argument i.e. "id_generator". - upgrade requirements especially "xblock[django]" to version "2.0.0" where this extra argument "id_generator" was removed. - With this requirement upgrade, also dropped support for django 3.2. due to conflicts in dependencies in CI. - ERROR: Cannot install Django<5.0 and >=4.2 and django==3.2.25 because these package versions have conflicting dependencies. - update ubuntu version ro ubuntu-latest. - update codecov actions to v5 in CI. Note: This Change will be incompatible with Palm release of openedx. --- .github/workflows/ci.yml | 9 +- .github/workflows/pypi-publish.yml | 2 +- Makefile | 2 +- problem_builder/__init__.py | 2 +- problem_builder/choice.py | 2 +- problem_builder/message.py | 2 +- problem_builder/tip.py | 2 +- problem_builder/v1/studio_xml_utils.py | 2 +- problem_builder/v1/tests/test_upgrade.py | 2 +- problem_builder/v1/upgrade.py | 2 +- requirements/base.txt | 62 +++++---- requirements/ci.txt | 16 +-- requirements/constraints.txt | 1 + requirements/dev.txt | 155 +++++++++++++---------- requirements/pip-tools.txt | 19 ++- requirements/pip.txt | 10 +- requirements/quality.txt | 129 ++++++++++--------- requirements/test.in | 2 +- requirements/test.txt | 110 +++++++++------- requirements/workbench.txt | 116 +++++++++-------- tox.ini | 19 +-- 21 files changed, 359 insertions(+), 307 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 96473769..5be389f3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,9 +26,9 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-20.04] + os: [ubuntu-latest] python-version: [3.8] - toxenv: [py38-django32, py38-django42, integration32, integration42, quality] + toxenv: [py38-django42, integration42, quality] steps: - name: checkout repo @@ -54,9 +54,8 @@ jobs: run: tox - name: Run coverage - if: matrix.python-version == '3.8' && matrix.toxenv == 'py38-django32' - uses: codecov/codecov-action@v3 + if: matrix.python-version == '3.8' && matrix.toxenv == 'py38-django42' + uses: codecov/codecov-action@v5 with: - token: ${{ secrets.CODECOV_TOKEN }} flags: unittests fail_ci_if_error: true diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index 527dc58c..aa566797 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -6,7 +6,7 @@ on: jobs: push: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: Checkout diff --git a/Makefile b/Makefile index 16783a0f..72add859 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ test.unit: ## run all unit tests tox -- $(TEST) test.integration: ## run all integration tests - tox -e integration -- $(TEST) + tox -e integration42 -- $(TEST) test: test.unit test.integration test.quality ## Run all tests diff --git a/problem_builder/__init__.py b/problem_builder/__init__.py index 1070cc03..18f06b02 100644 --- a/problem_builder/__init__.py +++ b/problem_builder/__init__.py @@ -1 +1 @@ -__version__ = "5.1.4" +__version__ = "5.1.5" diff --git a/problem_builder/choice.py b/problem_builder/choice.py index b44fe6b4..a6020da0 100644 --- a/problem_builder/choice.py +++ b/problem_builder/choice.py @@ -133,7 +133,7 @@ def get_template(cls, template_id): return {'metadata': {}, 'data': {}} @classmethod - def parse_xml(cls, node, runtime, keys, id_generator): + def parse_xml(cls, node, runtime, keys): """ Construct this XBlock from the given XML node. """ diff --git a/problem_builder/message.py b/problem_builder/message.py index 5f7dfcd6..da60370a 100644 --- a/problem_builder/message.py +++ b/problem_builder/message.py @@ -150,7 +150,7 @@ def get_template(cls, template_id): }} @classmethod - def parse_xml(cls, node, runtime, keys, id_generator): + def parse_xml(cls, node, runtime, keys): """ Construct this XBlock from the given XML node. """ diff --git a/problem_builder/tip.py b/problem_builder/tip.py index 18abdecc..7e0c9048 100644 --- a/problem_builder/tip.py +++ b/problem_builder/tip.py @@ -131,7 +131,7 @@ def add_error(msg): add_error(self._("A choice selected for this tip does not exist.")) @classmethod - def parse_xml(cls, node, runtime, keys, id_generator): + def parse_xml(cls, node, runtime, keys): """ Construct this XBlock from the given XML node. """ diff --git a/problem_builder/v1/studio_xml_utils.py b/problem_builder/v1/studio_xml_utils.py index 907e7f1d..4c08603b 100644 --- a/problem_builder/v1/studio_xml_utils.py +++ b/problem_builder/v1/studio_xml_utils.py @@ -53,7 +53,7 @@ def create_block_from_node(self, node): usage_id = self.id_generator.create_usage(def_id) keys = ScopeIds(None, block_type, def_id, usage_id) block_class = self.mixologist.mix(self.load_block_type(block_type)) - block = block_class.parse_xml(node, self, keys, self.id_generator) + block = block_class.parse_xml(node, self, keys) block.save() return block diff --git a/problem_builder/v1/tests/test_upgrade.py b/problem_builder/v1/tests/test_upgrade.py index 16357ec5..79c44b1f 100644 --- a/problem_builder/v1/tests/test_upgrade.py +++ b/problem_builder/v1/tests/test_upgrade.py @@ -88,7 +88,7 @@ def create_block_from_node(self, node): usage_id = self.runtime.id_generator.create_usage(def_id) keys = ScopeIds(None, block_type, def_id, usage_id) block_class = self.runtime.mixologist.mix(self.runtime.load_block_type(block_type)) - block = block_class.parse_xml(node, self.runtime, keys, self.runtime.id_generator) + block = block_class.parse_xml(node, self.runtime, keys) block.save() return block diff --git a/problem_builder/v1/upgrade.py b/problem_builder/v1/upgrade.py index d623454a..35cea020 100644 --- a/problem_builder/v1/upgrade.py +++ b/problem_builder/v1/upgrade.py @@ -70,7 +70,7 @@ def upgrade_block(store, block, from_version="v1"): pass # Perhaps HtmlModule has been converted to an XBlock? else: @classmethod - def parse_xml_for_HtmlDescriptor(cls, node, runtime, keys, id_generator): + def parse_xml_for_HtmlDescriptor(cls, node, runtime, keys): block = runtime.construct_xblock_from_class(cls, keys) block.data = node.text if node.text else "" for child in list(node): diff --git a/requirements/base.txt b/requirements/base.txt index 950a3c8a..b081c5e9 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -6,20 +6,24 @@ # appdirs==1.4.4 # via fs -asgiref==3.7.2 +asgiref==3.8.1 # via django -boto3==1.34.49 +backports-zoneinfo==0.2.1 + # via django +boto3==1.37.38 # via fs-s3fs -botocore==1.34.49 +botocore==1.37.38 # via # boto3 # s3transfer -django==3.2.24 +django==4.2.21 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.in # openedx-django-pyfs -edx-opaque-keys==2.5.1 +dnspython==2.6.1 + # via pymongo +edx-opaque-keys==3.0.0 # via -r requirements/base.in fs==2.4.16 # via @@ -34,9 +38,9 @@ jmespath==1.0.1 # botocore lazy==1.6 # via xblock -lxml==5.1.0 +lxml==5.4.0 # via xblock -mako==1.3.2 +mako==1.3.10 # via # xblock # xblock-utils @@ -44,51 +48,53 @@ markupsafe==2.1.5 # via # mako # xblock -openedx-django-pyfs==3.5.0 +openedx-django-pyfs==3.8.0 # via xblock -pbr==6.0.0 +pbr==6.1.1 # via stevedore -pymongo==3.13.0 +pymongo==4.10.1 # via edx-opaque-keys -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # botocore # xblock -pytz==2024.1 - # via - # django - # xblock -pyyaml==6.0.1 +pytz==2025.2 # via xblock -s3transfer==0.10.0 +pyyaml==6.0.2 + # via xblock +s3transfer==0.11.5 # via boto3 -simplejson==3.19.2 +simplejson==3.20.1 # via # xblock # xblock-utils -six==1.16.0 +six==1.17.0 # via # fs # fs-s3fs # python-dateutil -sqlparse==0.4.4 +sqlparse==0.5.3 # via django -stevedore==5.2.0 +stevedore==5.3.0 # via edx-opaque-keys -typing-extensions==4.10.0 +typing-extensions==4.13.2 # via # asgiref # edx-opaque-keys -urllib3==1.26.18 - # via botocore -web-fragments==2.1.0 +urllib3==1.26.20 + # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt + # botocore +web-fragments==3.1.0 # via # xblock # xblock-utils -webob==1.8.7 +webob==1.8.9 # via xblock -xblock[django]==1.10.0 - # via xblock-utils +xblock[django]==2.0.0 + # via + # -c requirements/constraints.txt + # xblock-utils xblock-utils==4.0.0 # via -r requirements/base.in diff --git a/requirements/ci.txt b/requirements/ci.txt index a58d1b17..b2c84765 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -4,27 +4,27 @@ # # make upgrade # -distlib==0.3.8 +distlib==0.3.9 # via virtualenv -filelock==3.13.1 +filelock==3.16.1 # via # tox # virtualenv -packaging==23.2 +packaging==25.0 # via # pyproject-api # tox -platformdirs==4.2.0 +platformdirs==4.3.6 # via # tox # virtualenv -pluggy==1.4.0 +pluggy==1.5.0 # via tox py==1.11.0 # via tox -six==1.16.0 +six==1.17.0 # via tox -tomli==2.0.1 +tomli==2.2.1 # via # pyproject-api # tox @@ -34,5 +34,5 @@ tox==3.28.0 # tox-battery tox-battery==0.6.2 # via -r requirements/ci.in -virtualenv==20.25.1 +virtualenv==20.31.2 # via tox diff --git a/requirements/constraints.txt b/requirements/constraints.txt index dae6f7eb..b814085f 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -12,3 +12,4 @@ -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt bok-choy==0.7.1 +XBlock[django]==2.0.0 diff --git a/requirements/dev.txt b/requirements/dev.txt index fdfbfb47..5e1ea60b 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -14,16 +14,21 @@ arrow==1.3.0 # -r requirements/quality.txt # -r requirements/workbench.txt # cookiecutter -asgiref==3.7.2 +asgiref==3.8.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt # django -astroid==3.1.0 +astroid==3.2.4 # via # -r requirements/quality.txt # pylint # pylint-celery +backports-zoneinfo==0.2.1 + # via + # -r requirements/quality.txt + # -r requirements/workbench.txt + # django binaryornot==0.4.4 # via # -r requirements/quality.txt @@ -33,22 +38,22 @@ bok-choy==0.7.1 # via # -c requirements/constraints.txt # -r requirements/workbench.txt -boto3==1.34.49 +boto3==1.37.38 # via # -r requirements/quality.txt # -r requirements/workbench.txt # fs-s3fs -botocore==1.34.49 +botocore==1.37.38 # via # -r requirements/quality.txt # -r requirements/workbench.txt # boto3 # s3transfer -build==1.0.3 +build==1.2.2.post1 # via # -r requirements/pip-tools.txt # pip-tools -certifi==2024.2.2 +certifi==2025.4.26 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -58,12 +63,12 @@ chardet==5.2.0 # -r requirements/quality.txt # -r requirements/workbench.txt # binaryornot -charset-normalizer==3.3.2 +charset-normalizer==3.4.2 # via # -r requirements/quality.txt # -r requirements/workbench.txt # requests -click==8.1.7 +click==8.1.8 # via # -r requirements/pip-tools.txt # -r requirements/quality.txt @@ -77,7 +82,7 @@ click-log==0.4.0 # via # -r requirements/quality.txt # edx-lint -code-annotations==1.6.0 +code-annotations==1.8.2 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -87,24 +92,24 @@ cookiecutter==2.6.0 # -r requirements/quality.txt # -r requirements/workbench.txt # xblock-sdk -coverage[toml]==7.4.3 +coverage[toml]==7.6.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt # pytest-cov -ddt==1.7.1 +ddt==1.7.2 # via # -r requirements/quality.txt # -r requirements/workbench.txt -dill==0.3.8 +dill==0.4.0 # via # -r requirements/quality.txt # pylint -distlib==0.3.8 +distlib==0.3.9 # via # -r requirements/ci.txt # virtualenv -django==3.2.24 +django==4.2.21 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/quality.txt @@ -119,26 +124,31 @@ django-appconf==1.0.6 # -r requirements/quality.txt # -r requirements/workbench.txt # django-statici18n -django-statici18n==2.4.0 +django-statici18n==2.6.0 + # via + # -r requirements/quality.txt + # -r requirements/workbench.txt +dnspython==2.6.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt -edx-i18n-tools==1.3.0 + # pymongo +edx-i18n-tools==1.9.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt -edx-lint==5.3.6 +edx-lint==5.6.0 # via -r requirements/quality.txt -edx-opaque-keys==2.5.1 +edx-opaque-keys==3.0.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt -exceptiongroup==1.2.0 +exceptiongroup==1.3.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt # pytest -filelock==3.13.1 +filelock==3.16.1 # via # -r requirements/ci.txt # tox @@ -156,16 +166,16 @@ fs-s3fs==1.1.1 # -r requirements/workbench.txt # openedx-django-pyfs # xblock-sdk -idna==3.6 +idna==3.10 # via # -r requirements/quality.txt # -r requirements/workbench.txt # requests -importlib-metadata==7.0.1 +importlib-metadata==8.5.0 # via # -r requirements/pip-tools.txt # build -iniconfig==2.0.0 +iniconfig==2.1.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -174,7 +184,7 @@ isort==5.13.2 # via # -r requirements/quality.txt # pylint -jinja2==3.1.3 +jinja2==3.1.6 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -192,14 +202,20 @@ lazy==1.6 # -r requirements/workbench.txt # bok-choy # xblock -lxml==5.1.0 +lxml[html-clean]==5.4.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt # edx-i18n-tools + # lxml-html-clean # xblock # xblock-sdk -mako==1.3.2 +lxml-html-clean==0.4.2 + # via + # -r requirements/quality.txt + # -r requirements/workbench.txt + # lxml +mako==1.3.10 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -226,11 +242,11 @@ mdurl==0.1.2 # -r requirements/quality.txt # -r requirements/workbench.txt # markdown-it-py -mock==5.1.0 +mock==5.2.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt -mysqlclient==2.2.4 +mysqlclient==2.2.7 # via -r requirements/workbench.txt needle==0.5.0 # via @@ -240,12 +256,12 @@ nose==1.3.7 # via # -r requirements/workbench.txt # needle -openedx-django-pyfs==3.5.0 +openedx-django-pyfs==3.8.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt # xblock -packaging==23.2 +packaging==25.0 # via # -r requirements/ci.txt # -r requirements/pip-tools.txt @@ -254,29 +270,29 @@ packaging==23.2 # build # pytest # tox -path==16.10.0 +path==16.16.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt # edx-i18n-tools -pbr==6.0.0 +pbr==6.1.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt # stevedore -pillow==10.2.0 +pillow==10.4.0 # via # -r requirements/workbench.txt # needle -pip-tools==7.4.0 +pip-tools==7.4.1 # via -r requirements/pip-tools.txt -platformdirs==4.2.0 +platformdirs==4.3.6 # via # -r requirements/ci.txt # -r requirements/quality.txt # pylint # virtualenv -pluggy==1.4.0 +pluggy==1.5.0 # via # -r requirements/ci.txt # -r requirements/quality.txt @@ -292,16 +308,16 @@ py==1.11.0 # via # -r requirements/ci.txt # tox -pycodestyle==2.11.1 +pycodestyle==2.12.1 # via -r requirements/quality.txt pydocstyle==6.3.0 # via -r requirements/quality.txt -pygments==2.17.2 +pygments==2.19.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt # rich -pylint==3.1.0 +pylint==3.2.7 # via # -r requirements/quality.txt # edx-lint @@ -321,7 +337,7 @@ pylint-plugin-utils==0.8.2 # -r requirements/quality.txt # pylint-celery # pylint-django -pymongo==3.13.0 +pymongo==4.10.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -331,26 +347,26 @@ pypng==0.20220715.0 # -r requirements/quality.txt # -r requirements/workbench.txt # xblock-sdk -pyproject-hooks==1.0.0 +pyproject-hooks==1.2.0 # via # -r requirements/pip-tools.txt # build # pip-tools -pytest==8.0.2 +pytest==8.3.5 # via # -r requirements/quality.txt # -r requirements/workbench.txt # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt -pytest-django==4.8.0 +pytest-django==4.11.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -363,13 +379,12 @@ python-slugify==8.0.4 # -r requirements/workbench.txt # code-annotations # cookiecutter -pytz==2024.1 +pytz==2025.2 # via # -r requirements/quality.txt # -r requirements/workbench.txt - # django # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -377,18 +392,18 @@ pyyaml==6.0.1 # cookiecutter # edx-i18n-tools # xblock -requests==2.31.0 +requests==2.32.3 # via # -r requirements/quality.txt # -r requirements/workbench.txt # cookiecutter # xblock-sdk -rich==13.7.0 +rich==14.0.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt # cookiecutter -s3transfer==0.10.0 +s3transfer==0.11.5 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -398,14 +413,14 @@ selenium==3.141.0 # -r requirements/workbench.txt # bok-choy # needle -simplejson==3.19.2 +simplejson==3.20.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt # xblock # xblock-sdk # xblock-utils -six==1.16.0 +six==1.17.0 # via # -r requirements/ci.txt # -r requirements/quality.txt @@ -416,16 +431,16 @@ six==1.16.0 # fs-s3fs # python-dateutil # tox -snowballstemmer==2.2.0 +snowballstemmer==3.0.1 # via # -r requirements/quality.txt # pydocstyle -sqlparse==0.4.4 +sqlparse==0.5.3 # via # -r requirements/quality.txt # -r requirements/workbench.txt # django -stevedore==5.2.0 +stevedore==5.3.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -436,7 +451,7 @@ text-unidecode==1.3 # -r requirements/quality.txt # -r requirements/workbench.txt # python-slugify -tomli==2.0.1 +tomli==2.2.1 # via # -r requirements/ci.txt # -r requirements/pip-tools.txt @@ -446,10 +461,9 @@ tomli==2.0.1 # coverage # pip-tools # pylint - # pyproject-hooks # pytest # tox -tomlkit==0.12.3 +tomlkit==0.13.2 # via # -r requirements/quality.txt # pylint @@ -459,55 +473,58 @@ tox==3.28.0 # tox-battery tox-battery==0.6.2 # via -r requirements/ci.txt -types-python-dateutil==2.8.19.20240106 +types-python-dateutil==2.9.0.20241206 # via # -r requirements/quality.txt # -r requirements/workbench.txt # arrow -typing-extensions==4.10.0 +typing-extensions==4.13.2 # via # -r requirements/quality.txt # -r requirements/workbench.txt # asgiref # astroid # edx-opaque-keys + # exceptiongroup # pylint # rich -urllib3==1.26.18 +urllib3==1.26.20 # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/quality.txt # -r requirements/workbench.txt # botocore # requests # selenium -virtualenv==20.25.1 +virtualenv==20.31.2 # via # -r requirements/ci.txt # tox -web-fragments==2.1.0 +web-fragments==3.1.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt # xblock # xblock-sdk # xblock-utils -webob==1.8.7 +webob==1.8.9 # via # -r requirements/quality.txt # -r requirements/workbench.txt # xblock # xblock-sdk -wheel==0.42.0 +wheel==0.45.1 # via # -r requirements/pip-tools.txt # pip-tools -xblock[django]==1.10.0 +xblock[django]==2.0.0 # via + # -c requirements/constraints.txt # -r requirements/quality.txt # -r requirements/workbench.txt # xblock-sdk # xblock-utils -xblock-sdk==0.7.0 +xblock-sdk==0.13.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -515,7 +532,7 @@ xblock-utils==4.0.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt -zipp==3.17.0 +zipp==3.20.2 # via # -r requirements/pip-tools.txt # importlib-metadata diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 44c48d99..f64b4f68 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,28 +4,27 @@ # # make upgrade # -build==1.0.3 +build==1.2.2.post1 # via pip-tools -click==8.1.7 +click==8.1.8 # via pip-tools -importlib-metadata==7.0.1 +importlib-metadata==8.5.0 # via build -packaging==23.2 +packaging==25.0 # via build -pip-tools==7.4.0 +pip-tools==7.4.1 # via -r requirements/pip-tools.in -pyproject-hooks==1.0.0 +pyproject-hooks==1.2.0 # via # build # pip-tools -tomli==2.0.1 +tomli==2.2.1 # via # build # pip-tools - # pyproject-hooks -wheel==0.42.0 +wheel==0.45.1 # via pip-tools -zipp==3.17.0 +zipp==3.20.2 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/pip.txt b/requirements/pip.txt index 66656035..c891fead 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,11 +4,13 @@ # # make upgrade # -wheel==0.42.0 +wheel==0.45.1 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==24.0 - # via -r requirements/pip.in -setuptools==69.1.1 +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.2 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index 87deeb77..c4965992 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -12,28 +12,32 @@ arrow==1.3.0 # via # -r requirements/test.txt # cookiecutter -asgiref==3.7.2 +asgiref==3.8.1 # via # -r requirements/test.txt # django -astroid==3.1.0 +astroid==3.2.4 # via # pylint # pylint-celery +backports-zoneinfo==0.2.1 + # via + # -r requirements/test.txt + # django binaryornot==0.4.4 # via # -r requirements/test.txt # cookiecutter -boto3==1.34.49 +boto3==1.37.38 # via # -r requirements/test.txt # fs-s3fs -botocore==1.34.49 +botocore==1.37.38 # via # -r requirements/test.txt # boto3 # s3transfer -certifi==2024.2.2 +certifi==2025.4.26 # via # -r requirements/test.txt # requests @@ -41,11 +45,11 @@ chardet==5.2.0 # via # -r requirements/test.txt # binaryornot -charset-normalizer==3.3.2 +charset-normalizer==3.4.2 # via # -r requirements/test.txt # requests -click==8.1.7 +click==8.1.8 # via # -r requirements/test.txt # click-log @@ -54,7 +58,7 @@ click==8.1.7 # edx-lint click-log==0.4.0 # via edx-lint -code-annotations==1.6.0 +code-annotations==1.8.2 # via # -r requirements/test.txt # edx-lint @@ -62,15 +66,15 @@ cookiecutter==2.6.0 # via # -r requirements/test.txt # xblock-sdk -coverage[toml]==7.4.3 +coverage[toml]==7.6.1 # via # -r requirements/test.txt # pytest-cov -ddt==1.7.1 +ddt==1.7.2 # via -r requirements/test.txt -dill==0.3.8 +dill==0.4.0 # via pylint -django==3.2.24 +django==4.2.21 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -83,15 +87,19 @@ django-appconf==1.0.6 # via # -r requirements/test.txt # django-statici18n -django-statici18n==2.4.0 +django-statici18n==2.6.0 # via -r requirements/test.txt -edx-i18n-tools==1.3.0 +dnspython==2.6.1 + # via + # -r requirements/test.txt + # pymongo +edx-i18n-tools==1.9.0 # via -r requirements/test.txt -edx-lint==5.3.6 +edx-lint==5.6.0 # via -r requirements/quality.in -edx-opaque-keys==2.5.1 +edx-opaque-keys==3.0.0 # via -r requirements/test.txt -exceptiongroup==1.2.0 +exceptiongroup==1.3.0 # via # -r requirements/test.txt # pytest @@ -106,11 +114,11 @@ fs-s3fs==1.1.1 # -r requirements/test.txt # openedx-django-pyfs # xblock-sdk -idna==3.6 +idna==3.10 # via # -r requirements/test.txt # requests -iniconfig==2.0.0 +iniconfig==2.1.0 # via # -r requirements/test.txt # pytest @@ -118,7 +126,7 @@ isort==5.13.2 # via # -r requirements/quality.in # pylint -jinja2==3.1.3 +jinja2==3.1.6 # via # -r requirements/test.txt # code-annotations @@ -132,13 +140,18 @@ lazy==1.6 # via # -r requirements/test.txt # xblock -lxml==5.1.0 +lxml[html-clean]==5.4.0 # via # -r requirements/test.txt # edx-i18n-tools + # lxml-html-clean # xblock # xblock-sdk -mako==1.3.2 +lxml-html-clean==0.4.2 + # via + # -r requirements/test.txt + # lxml +mako==1.3.10 # via # -r requirements/test.txt # xblock @@ -159,27 +172,27 @@ mdurl==0.1.2 # via # -r requirements/test.txt # markdown-it-py -mock==5.1.0 +mock==5.2.0 # via -r requirements/test.txt -openedx-django-pyfs==3.5.0 +openedx-django-pyfs==3.8.0 # via # -r requirements/test.txt # xblock -packaging==23.2 +packaging==25.0 # via # -r requirements/test.txt # pytest -path==16.10.0 +path==16.16.0 # via # -r requirements/test.txt # edx-i18n-tools -pbr==6.0.0 +pbr==6.1.1 # via # -r requirements/test.txt # stevedore -platformdirs==4.2.0 +platformdirs==4.3.6 # via pylint -pluggy==1.4.0 +pluggy==1.5.0 # via # -r requirements/test.txt # pytest @@ -187,15 +200,15 @@ polib==1.2.0 # via # -r requirements/test.txt # edx-i18n-tools -pycodestyle==2.11.1 +pycodestyle==2.12.1 # via -r requirements/quality.in pydocstyle==6.3.0 # via -r requirements/quality.in -pygments==2.17.2 +pygments==2.19.1 # via # -r requirements/test.txt # rich -pylint==3.1.0 +pylint==3.2.7 # via # edx-lint # pylint-celery @@ -209,7 +222,7 @@ pylint-plugin-utils==0.8.2 # via # pylint-celery # pylint-django -pymongo==3.13.0 +pymongo==4.10.1 # via # -r requirements/test.txt # edx-opaque-keys @@ -217,16 +230,16 @@ pypng==0.20220715.0 # via # -r requirements/test.txt # xblock-sdk -pytest==8.0.2 +pytest==8.3.5 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.txt -pytest-django==4.8.0 +pytest-django==4.11.1 # via -r requirements/test.txt -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # -r requirements/test.txt # arrow @@ -237,51 +250,50 @@ python-slugify==8.0.4 # -r requirements/test.txt # code-annotations # cookiecutter -pytz==2024.1 +pytz==2025.2 # via # -r requirements/test.txt - # django # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # -r requirements/test.txt # code-annotations # cookiecutter # edx-i18n-tools # xblock -requests==2.31.0 +requests==2.32.3 # via # -r requirements/test.txt # cookiecutter # xblock-sdk -rich==13.7.0 +rich==14.0.0 # via # -r requirements/test.txt # cookiecutter -s3transfer==0.10.0 +s3transfer==0.11.5 # via # -r requirements/test.txt # boto3 -simplejson==3.19.2 +simplejson==3.20.1 # via # -r requirements/test.txt # xblock # xblock-sdk # xblock-utils -six==1.16.0 +six==1.17.0 # via # -r requirements/test.txt # edx-lint # fs # fs-s3fs # python-dateutil -snowballstemmer==2.2.0 +snowballstemmer==3.0.1 # via pydocstyle -sqlparse==0.4.4 +sqlparse==0.5.3 # via # -r requirements/test.txt # django -stevedore==5.2.0 +stevedore==5.3.0 # via # -r requirements/test.txt # code-annotations @@ -290,48 +302,51 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomli==2.0.1 +tomli==2.2.1 # via # -r requirements/test.txt # coverage # pylint # pytest -tomlkit==0.12.3 +tomlkit==0.13.2 # via pylint -types-python-dateutil==2.8.19.20240106 +types-python-dateutil==2.9.0.20241206 # via # -r requirements/test.txt # arrow -typing-extensions==4.10.0 +typing-extensions==4.13.2 # via # -r requirements/test.txt # asgiref # astroid # edx-opaque-keys + # exceptiongroup # pylint # rich -urllib3==1.26.18 +urllib3==1.26.20 # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt # botocore # requests -web-fragments==2.1.0 +web-fragments==3.1.0 # via # -r requirements/test.txt # xblock # xblock-sdk # xblock-utils -webob==1.8.7 +webob==1.8.9 # via # -r requirements/test.txt # xblock # xblock-sdk -xblock[django]==1.10.0 +xblock[django]==2.0.0 # via + # -c requirements/constraints.txt # -r requirements/test.txt # xblock-sdk # xblock-utils -xblock-sdk==0.7.0 +xblock-sdk==0.13.0 # via -r requirements/test.txt xblock-utils==4.0.0 # via -r requirements/test.txt diff --git a/requirements/test.in b/requirements/test.in index 690f63b8..11704b21 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -12,4 +12,4 @@ mock # required by the workbench ddt # data-driven tests django-statici18n -XBlock[django] +XBlock[django]==2.0.0 diff --git a/requirements/test.txt b/requirements/test.txt index 6f0ce5f3..a8944b59 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -10,39 +10,44 @@ appdirs==1.4.4 # fs arrow==1.3.0 # via cookiecutter -asgiref==3.7.2 +asgiref==3.8.1 + # via + # -r requirements/base.txt + # django +backports-zoneinfo==0.2.1 # via # -r requirements/base.txt # django binaryornot==0.4.4 # via cookiecutter -boto3==1.34.49 +boto3==1.37.38 # via # -r requirements/base.txt # fs-s3fs -botocore==1.34.49 +botocore==1.37.38 # via # -r requirements/base.txt # boto3 # s3transfer -certifi==2024.2.2 +certifi==2025.4.26 # via requests chardet==5.2.0 # via binaryornot -charset-normalizer==3.3.2 +charset-normalizer==3.4.2 # via requests -click==8.1.7 +click==8.1.8 # via # code-annotations # cookiecutter -code-annotations==1.6.0 +code-annotations==1.8.2 # via -r requirements/test.in cookiecutter==2.6.0 # via xblock-sdk -coverage[toml]==7.4.3 +coverage[toml]==7.6.1 # via pytest-cov -ddt==1.7.1 +ddt==1.7.2 # via -r requirements/test.in +django==4.2.21 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt @@ -53,13 +58,17 @@ ddt==1.7.1 # xblock-sdk django-appconf==1.0.6 # via django-statici18n -django-statici18n==2.4.0 +django-statici18n==2.6.0 # via -r requirements/test.in -edx-i18n-tools==1.3.0 +dnspython==2.6.1 + # via + # -r requirements/base.txt + # pymongo +edx-i18n-tools==1.9.0 # via -r requirements/test.in -edx-opaque-keys==2.5.1 +edx-opaque-keys==3.0.0 # via -r requirements/base.txt -exceptiongroup==1.2.0 +exceptiongroup==1.3.0 # via pytest fs==2.4.16 # via @@ -72,11 +81,11 @@ fs-s3fs==1.1.1 # -r requirements/base.txt # openedx-django-pyfs # xblock-sdk -idna==3.6 +idna==3.10 # via requests -iniconfig==2.0.0 +iniconfig==2.1.0 # via pytest -jinja2==3.1.3 +jinja2==3.1.6 # via # code-annotations # cookiecutter @@ -89,13 +98,16 @@ lazy==1.6 # via # -r requirements/base.txt # xblock -lxml==5.1.0 +lxml[html-clean]==5.4.0 # via # -r requirements/base.txt # edx-i18n-tools + # lxml-html-clean # xblock # xblock-sdk -mako==1.3.2 +lxml-html-clean==0.4.2 + # via lxml +mako==1.3.10 # via # -r requirements/base.txt # xblock @@ -110,41 +122,41 @@ markupsafe==2.1.5 # xblock mdurl==0.1.2 # via markdown-it-py -mock==5.1.0 +mock==5.2.0 # via -r requirements/test.in -openedx-django-pyfs==3.5.0 +openedx-django-pyfs==3.8.0 # via # -r requirements/base.txt # xblock -packaging==23.2 +packaging==25.0 # via pytest -path==16.10.0 +path==16.16.0 # via edx-i18n-tools -pbr==6.0.0 +pbr==6.1.1 # via # -r requirements/base.txt # stevedore -pluggy==1.4.0 +pluggy==1.5.0 # via pytest polib==1.2.0 # via edx-i18n-tools -pygments==2.17.2 +pygments==2.19.1 # via rich -pymongo==3.13.0 +pymongo==4.10.1 # via # -r requirements/base.txt # edx-opaque-keys pypng==0.20220715.0 # via xblock-sdk -pytest==8.0.2 +pytest==8.3.5 # via # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.in -pytest-django==4.8.0 +pytest-django==4.11.1 # via -r requirements/test.in -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # -r requirements/base.txt # arrow @@ -154,86 +166,88 @@ python-slugify==8.0.4 # via # code-annotations # cookiecutter -pytz==2024.1 +pytz==2025.2 # via # -r requirements/base.txt - # django # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # -r requirements/base.txt # code-annotations # cookiecutter # edx-i18n-tools # xblock -requests==2.31.0 +requests==2.32.3 # via # cookiecutter # xblock-sdk -rich==13.7.0 +rich==14.0.0 # via cookiecutter -s3transfer==0.10.0 +s3transfer==0.11.5 # via # -r requirements/base.txt # boto3 -simplejson==3.19.2 +simplejson==3.20.1 # via # -r requirements/base.txt # xblock # xblock-sdk # xblock-utils -six==1.16.0 +six==1.17.0 # via # -r requirements/base.txt # fs # fs-s3fs # python-dateutil -sqlparse==0.4.4 +sqlparse==0.5.3 # via # -r requirements/base.txt # django -stevedore==5.2.0 +stevedore==5.3.0 # via # -r requirements/base.txt # code-annotations # edx-opaque-keys text-unidecode==1.3 # via python-slugify -tomli==2.0.1 +tomli==2.2.1 # via # coverage # pytest -types-python-dateutil==2.8.19.20240106 +types-python-dateutil==2.9.0.20241206 # via arrow -typing-extensions==4.10.0 +typing-extensions==4.13.2 # via # -r requirements/base.txt # asgiref # edx-opaque-keys + # exceptiongroup # rich -urllib3==1.26.18 +urllib3==1.26.20 # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt # botocore # requests -web-fragments==2.1.0 +web-fragments==3.1.0 # via # -r requirements/base.txt # xblock # xblock-sdk # xblock-utils -webob==1.8.7 +webob==1.8.9 # via # -r requirements/base.txt # xblock # xblock-sdk -xblock[django]==1.10.0 +xblock[django]==2.0.0 # via + # -c requirements/constraints.txt # -r requirements/base.txt # -r requirements/test.in # xblock-sdk # xblock-utils -xblock-sdk==0.7.0 +xblock-sdk==0.13.0 # via -r requirements/test.in xblock-utils==4.0.0 # via -r requirements/base.txt diff --git a/requirements/workbench.txt b/requirements/workbench.txt index c1e741f2..f05ede8e 100644 --- a/requirements/workbench.txt +++ b/requirements/workbench.txt @@ -12,7 +12,11 @@ arrow==1.3.0 # via # -r requirements/test.txt # cookiecutter -asgiref==3.7.2 +asgiref==3.8.1 + # via + # -r requirements/test.txt + # django +backports-zoneinfo==0.2.1 # via # -r requirements/test.txt # django @@ -24,16 +28,16 @@ bok-choy==0.7.1 # via # -c requirements/constraints.txt # -r requirements/workbench.in -boto3==1.34.49 +boto3==1.37.38 # via # -r requirements/test.txt # fs-s3fs -botocore==1.34.49 +botocore==1.37.38 # via # -r requirements/test.txt # boto3 # s3transfer -certifi==2024.2.2 +certifi==2025.4.26 # via # -r requirements/test.txt # requests @@ -41,27 +45,28 @@ chardet==5.2.0 # via # -r requirements/test.txt # binaryornot -charset-normalizer==3.3.2 +charset-normalizer==3.4.2 # via # -r requirements/test.txt # requests -click==8.1.7 +click==8.1.8 # via # -r requirements/test.txt # code-annotations # cookiecutter -code-annotations==1.6.0 +code-annotations==1.8.2 # via -r requirements/test.txt cookiecutter==2.6.0 # via # -r requirements/test.txt # xblock-sdk -coverage[toml]==7.4.3 +coverage[toml]==7.6.1 # via # -r requirements/test.txt # pytest-cov -ddt==1.7.1 +ddt==1.7.2 # via -r requirements/test.txt +django==4.2.21 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -74,13 +79,17 @@ django-appconf==1.0.6 # via # -r requirements/test.txt # django-statici18n -django-statici18n==2.4.0 +django-statici18n==2.6.0 # via -r requirements/test.txt -edx-i18n-tools==1.3.0 +dnspython==2.6.1 + # via + # -r requirements/test.txt + # pymongo +edx-i18n-tools==1.9.0 # via -r requirements/test.txt -edx-opaque-keys==2.5.1 +edx-opaque-keys==3.0.0 # via -r requirements/test.txt -exceptiongroup==1.2.0 +exceptiongroup==1.3.0 # via # -r requirements/test.txt # pytest @@ -96,15 +105,15 @@ fs-s3fs==1.1.1 # -r requirements/workbench.in # openedx-django-pyfs # xblock-sdk -idna==3.6 +idna==3.10 # via # -r requirements/test.txt # requests -iniconfig==2.0.0 +iniconfig==2.1.0 # via # -r requirements/test.txt # pytest -jinja2==3.1.3 +jinja2==3.1.6 # via # -r requirements/test.txt # code-annotations @@ -119,14 +128,19 @@ lazy==1.6 # -r requirements/test.txt # bok-choy # xblock -lxml==5.1.0 +lxml[html-clean]==5.4.0 # via # -r requirements/test.txt # -r requirements/workbench.in # edx-i18n-tools + # lxml-html-clean # xblock # xblock-sdk -mako==1.3.2 +lxml-html-clean==0.4.2 + # via + # -r requirements/test.txt + # lxml +mako==1.3.10 # via # -r requirements/test.txt # xblock @@ -145,33 +159,33 @@ mdurl==0.1.2 # via # -r requirements/test.txt # markdown-it-py -mock==5.1.0 +mock==5.2.0 # via -r requirements/test.txt -mysqlclient==2.2.4 +mysqlclient==2.2.7 # via -r requirements/workbench.in needle==0.5.0 # via bok-choy nose==1.3.7 # via needle -openedx-django-pyfs==3.5.0 +openedx-django-pyfs==3.8.0 # via # -r requirements/test.txt # xblock -packaging==23.2 +packaging==25.0 # via # -r requirements/test.txt # pytest -path==16.10.0 +path==16.16.0 # via # -r requirements/test.txt # edx-i18n-tools -pbr==6.0.0 +pbr==6.1.1 # via # -r requirements/test.txt # stevedore -pillow==10.2.0 +pillow==10.4.0 # via needle -pluggy==1.4.0 +pluggy==1.5.0 # via # -r requirements/test.txt # pytest @@ -179,11 +193,11 @@ polib==1.2.0 # via # -r requirements/test.txt # edx-i18n-tools -pygments==2.17.2 +pygments==2.19.1 # via # -r requirements/test.txt # rich -pymongo==3.13.0 +pymongo==4.10.1 # via # -r requirements/test.txt # edx-opaque-keys @@ -192,16 +206,16 @@ pypng==0.20220715.0 # -r requirements/test.txt # -r requirements/workbench.in # xblock-sdk -pytest==8.0.2 +pytest==8.3.5 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.txt -pytest-django==4.8.0 +pytest-django==4.11.1 # via -r requirements/test.txt -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # -r requirements/test.txt # arrow @@ -212,29 +226,28 @@ python-slugify==8.0.4 # -r requirements/test.txt # code-annotations # cookiecutter -pytz==2024.1 +pytz==2025.2 # via # -r requirements/test.txt - # django # xblock -pyyaml==6.0.1 +pyyaml==6.0.2 # via # -r requirements/test.txt # code-annotations # cookiecutter # edx-i18n-tools # xblock -requests==2.31.0 +requests==2.32.3 # via # -r requirements/test.txt # -r requirements/workbench.in # cookiecutter # xblock-sdk -rich==13.7.0 +rich==14.0.0 # via # -r requirements/test.txt # cookiecutter -s3transfer==0.10.0 +s3transfer==0.11.5 # via # -r requirements/test.txt # boto3 @@ -243,25 +256,25 @@ selenium==3.141.0 # -r requirements/workbench.in # bok-choy # needle -simplejson==3.19.2 +simplejson==3.20.1 # via # -r requirements/test.txt # -r requirements/workbench.in # xblock # xblock-sdk # xblock-utils -six==1.16.0 +six==1.17.0 # via # -r requirements/test.txt # bok-choy # fs # fs-s3fs # python-dateutil -sqlparse==0.4.4 +sqlparse==0.5.3 # via # -r requirements/test.txt # django -stevedore==5.2.0 +stevedore==5.3.0 # via # -r requirements/test.txt # code-annotations @@ -270,46 +283,49 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomli==2.0.1 +tomli==2.2.1 # via # -r requirements/test.txt # coverage # pytest -types-python-dateutil==2.8.19.20240106 +types-python-dateutil==2.9.0.20241206 # via # -r requirements/test.txt # arrow -typing-extensions==4.10.0 +typing-extensions==4.13.2 # via # -r requirements/test.txt # asgiref # edx-opaque-keys + # exceptiongroup # rich -urllib3==1.26.18 +urllib3==1.26.20 # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt # botocore # requests # selenium -web-fragments==2.1.0 +web-fragments==3.1.0 # via # -r requirements/test.txt # -r requirements/workbench.in # xblock # xblock-sdk # xblock-utils -webob==1.8.7 +webob==1.8.9 # via # -r requirements/test.txt # -r requirements/workbench.in # xblock # xblock-sdk -xblock[django]==1.10.0 +xblock[django]==2.0.0 # via + # -c requirements/constraints.txt # -r requirements/test.txt # xblock-sdk # xblock-utils -xblock-sdk==0.7.0 +xblock-sdk==0.13.0 # via -r requirements/test.txt xblock-utils==4.0.0 # via -r requirements/test.txt diff --git a/tox.ini b/tox.ini index b605e328..4cce0db0 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38-django32,py38-django42,quality +envlist = py38-django42,quality [pycodestyle] exclude = .git,.tox,migrations @@ -37,29 +37,12 @@ allowlist_externals = mkdir deps = -r{toxinidir}/requirements/test.txt - django32: Django>=3.2,<4.0 django42: Django>=4.2,<5.0 commands = mkdir -p var python manage.py check pytest --ignore=problem_builder/tests/integration {posargs:problem_builder --cov problem_builder} -[testenv:integration32] -allowlist_externals = - mkdir - make - xvfb-run -deps = - -r{toxinidir}/requirements/workbench.txt - Django>=3.2,<4.0 -setenv = - PATH = external{:}external/firefox{:}{env:PATH} - WORKBENCH_DATABASES = \{"default": \{"ENGINE": "django.db.backends.mysql", "NAME": "db", "USER": "root", "PASSWORD": "rootpw", "HOST": "127.0.0.1", "PORT": "3307"\}\} -commands = - mkdir -p var - make install_firefox - xvfb-run pytest {posargs:problem_builder/tests/integration} - [testenv:integration42] allowlist_externals = mkdir From cf8ab09be6bb6e5485c5ad7d5a510eacfbfbca30 Mon Sep 17 00:00:00 2001 From: Muhammad Faraz Maqsood Date: Thu, 5 Jun 2025 14:29:56 +0500 Subject: [PATCH 2/5] fix: disable integration workflow integration tests are failing with below error, This error comes from xblock-utils package which is already deprecated. So, disabling these tests for now. ______ ERROR collecting problem_builder/tests/integration/test_titles.py _______ ImportError while importing test module '/home/runner/work/problem-builder/problem-builder/problem_builder/tests/integration/test_titles.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) problem_builder/tests/integration/test_titles.py:27: in from xblockutils.base_test import SeleniumXBlockTest .tox/integration42/lib/python3.8/site-packages/xblockutils/base_test.py:28: in from workbench.test.selenium_test import SeleniumTest E ModuleNotFoundError: No module named 'workbench.test.selenium_test' --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5be389f3..1283b243 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: matrix: os: [ubuntu-latest] python-version: [3.8] - toxenv: [py38-django42, integration42, quality] + toxenv: [py38-django42, quality] steps: - name: checkout repo From 821f92410986f2d1cc5364877127be3e42979551 Mon Sep 17 00:00:00 2001 From: Muhammad Faraz Maqsood Date: Thu, 5 Jun 2025 15:34:40 +0500 Subject: [PATCH 3/5] fix: add codecov_token variable in CI and codecov config --- .github/workflows/ci.yml | 1 + codecov.yml | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100644 codecov.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1283b243..ddbed895 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,5 +57,6 @@ jobs: if: matrix.python-version == '3.8' && matrix.toxenv == 'py38-django42' uses: codecov/codecov-action@v5 with: + token: ${{ secrets.CODECOV_TOKEN }} flags: unittests fail_ci_if_error: true diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 00000000..112c1632 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,6 @@ +coverage: + status: + project: + default: + target: auto + threshold: 0.1% From 84352ea0575d60fe6c537a3cb2032b59ce3829e8 Mon Sep 17 00:00:00 2001 From: Muhammad Faraz Maqsood Date: Tue, 10 Jun 2025 12:07:03 +0500 Subject: [PATCH 4/5] feat: minor version update & remove constraint - bump minor version instead of patch one - remove XBlock[django]==2.0.0 constraint from test.in file as it's already in constraints.txt --- problem_builder/__init__.py | 2 +- requirements/base.txt | 2 +- requirements/dev.txt | 6 +++--- requirements/quality.txt | 6 +++--- requirements/test.in | 2 +- requirements/test.txt | 4 ++-- requirements/workbench.txt | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/problem_builder/__init__.py b/problem_builder/__init__.py index 18f06b02..6c235c59 100644 --- a/problem_builder/__init__.py +++ b/problem_builder/__init__.py @@ -1 +1 @@ -__version__ = "5.1.5" +__version__ = "5.2.0" diff --git a/requirements/base.txt b/requirements/base.txt index b081c5e9..21521c58 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -16,7 +16,7 @@ botocore==1.37.38 # via # boto3 # s3transfer -django==4.2.21 +django==4.2.22 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.in diff --git a/requirements/dev.txt b/requirements/dev.txt index 5e1ea60b..18631933 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -109,7 +109,7 @@ distlib==0.3.9 # via # -r requirements/ci.txt # virtualenv -django==4.2.21 +django==4.2.22 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/quality.txt @@ -392,7 +392,7 @@ pyyaml==6.0.2 # cookiecutter # edx-i18n-tools # xblock -requests==2.32.3 +requests==2.32.4 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -463,7 +463,7 @@ tomli==2.2.1 # pylint # pytest # tox -tomlkit==0.13.2 +tomlkit==0.13.3 # via # -r requirements/quality.txt # pylint diff --git a/requirements/quality.txt b/requirements/quality.txt index c4965992..d251316f 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -74,7 +74,7 @@ ddt==1.7.2 # via -r requirements/test.txt dill==0.4.0 # via pylint -django==4.2.21 +django==4.2.22 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -261,7 +261,7 @@ pyyaml==6.0.2 # cookiecutter # edx-i18n-tools # xblock -requests==2.32.3 +requests==2.32.4 # via # -r requirements/test.txt # cookiecutter @@ -308,7 +308,7 @@ tomli==2.2.1 # coverage # pylint # pytest -tomlkit==0.13.2 +tomlkit==0.13.3 # via pylint types-python-dateutil==2.9.0.20241206 # via diff --git a/requirements/test.in b/requirements/test.in index 11704b21..690f63b8 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -12,4 +12,4 @@ mock # required by the workbench ddt # data-driven tests django-statici18n -XBlock[django]==2.0.0 +XBlock[django] diff --git a/requirements/test.txt b/requirements/test.txt index a8944b59..ebffd796 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -47,7 +47,7 @@ coverage[toml]==7.6.1 # via pytest-cov ddt==1.7.2 # via -r requirements/test.in -django==4.2.21 +django==4.2.22 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt @@ -177,7 +177,7 @@ pyyaml==6.0.2 # cookiecutter # edx-i18n-tools # xblock -requests==2.32.3 +requests==2.32.4 # via # cookiecutter # xblock-sdk diff --git a/requirements/workbench.txt b/requirements/workbench.txt index f05ede8e..69ab3455 100644 --- a/requirements/workbench.txt +++ b/requirements/workbench.txt @@ -66,7 +66,7 @@ coverage[toml]==7.6.1 # pytest-cov ddt==1.7.2 # via -r requirements/test.txt -django==4.2.21 +django==4.2.22 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -237,7 +237,7 @@ pyyaml==6.0.2 # cookiecutter # edx-i18n-tools # xblock -requests==2.32.3 +requests==2.32.4 # via # -r requirements/test.txt # -r requirements/workbench.in From edde9a6bec7019369fbccdffdd69808ef09ba080 Mon Sep 17 00:00:00 2001 From: Agrendalath Date: Tue, 10 Jun 2025 18:11:06 +0200 Subject: [PATCH 5/5] chore: add Python 3.11 and 3.12 support --- .github/workflows/ci.yml | 18 ++---- .github/workflows/pypi-publish.yml | 6 +- .gitignore | 4 +- pylintrc | 1 + requirements/base.txt | 34 +++++------ requirements/ci.txt | 12 ++-- requirements/constraints.txt | 1 - requirements/dev.txt | 96 ++++++++++-------------------- requirements/pip-tools.txt | 12 +--- requirements/pip.txt | 4 +- requirements/quality.txt | 76 +++++++++-------------- requirements/test.txt | 63 ++++++++------------ requirements/workbench.txt | 62 +++++++------------ setup.py | 2 +- tox.ini | 5 +- 15 files changed, 147 insertions(+), 249 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ddbed895..6423fc2e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,27 +15,19 @@ concurrency: jobs: tests: runs-on: ${{ matrix.os }} - services: - # Using SQLite3 for integration tests throws `django.db.utils.OperationalError: database table is locked: workbench_xblockstate`. - mysql: - image: mysql:8 - env: - MYSQL_ROOT_PASSWORD: rootpw - ports: - - 3307:3306 strategy: fail-fast: false matrix: os: [ubuntu-latest] - python-version: [3.8] - toxenv: [py38-django42, quality] + python-version: [3.11, 3.12] + toxenv: [django42, django52, quality] steps: - name: checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: setup python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} @@ -54,7 +46,7 @@ jobs: run: tox - name: Run coverage - if: matrix.python-version == '3.8' && matrix.toxenv == 'py38-django42' + if: matrix.python-version == '3.11' && matrix.toxenv == 'django42' uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index aa566797..4d20b0c3 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -10,12 +10,12 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: setup python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.11 - name: Install Dependencies run: pip install -r requirements/pip.txt diff --git a/.gitignore b/.gitignore index 6c4fc06a..f729b409 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ *~ *.pyc -/.coverage* +.coverage +.coverage.* +coverage.xml /xblock_problem_builder.egg-info /workbench* /dist diff --git a/pylintrc b/pylintrc index 90e03c12..6d21a26b 100644 --- a/pylintrc +++ b/pylintrc @@ -365,6 +365,7 @@ disable=blacklisted-name, comprehension-escape, import-outside-toplevel, use-dict-literal, + too-many-positional-arguments, # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff --git a/requirements/base.txt b/requirements/base.txt index 21521c58..ec5500dc 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,20 +8,18 @@ appdirs==1.4.4 # via fs asgiref==3.8.1 # via django -backports-zoneinfo==0.2.1 - # via django -boto3==1.37.38 +boto3==1.38.37 # via fs-s3fs -botocore==1.37.38 +botocore==1.38.37 # via # boto3 # s3transfer -django==4.2.22 +django==4.2.23 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.in # openedx-django-pyfs -dnspython==2.6.1 +dnspython==2.7.0 # via pymongo edx-opaque-keys==3.0.0 # via -r requirements/base.in @@ -44,7 +42,7 @@ mako==1.3.10 # via # xblock # xblock-utils -markupsafe==2.1.5 +markupsafe==3.0.2 # via # mako # xblock @@ -52,7 +50,7 @@ openedx-django-pyfs==3.8.0 # via xblock pbr==6.1.1 # via stevedore -pymongo==4.10.1 +pymongo==4.13.2 # via edx-opaque-keys python-dateutil==2.9.0.post0 # via @@ -62,7 +60,7 @@ pytz==2025.2 # via xblock pyyaml==6.0.2 # via xblock -s3transfer==0.11.5 +s3transfer==0.13.0 # via boto3 simplejson==3.20.1 # via @@ -75,13 +73,11 @@ six==1.17.0 # python-dateutil sqlparse==0.5.3 # via django -stevedore==5.3.0 +stevedore==5.4.1 # via edx-opaque-keys -typing-extensions==4.13.2 - # via - # asgiref - # edx-opaque-keys -urllib3==1.26.20 +typing-extensions==4.14.0 + # via edx-opaque-keys +urllib3==2.2.3 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # botocore @@ -91,10 +87,8 @@ web-fragments==3.1.0 # xblock-utils webob==1.8.9 # via xblock -xblock[django]==2.0.0 - # via - # -c requirements/constraints.txt - # xblock-utils +xblock[django]==5.2.0 + # via xblock-utils xblock-utils==4.0.0 # via -r requirements/base.in diff --git a/requirements/ci.txt b/requirements/ci.txt index b2c84765..658cedb0 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 # distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.18.0 # via # tox # virtualenv @@ -14,20 +14,16 @@ packaging==25.0 # via # pyproject-api # tox -platformdirs==4.3.6 +platformdirs==4.3.8 # via # tox # virtualenv -pluggy==1.5.0 +pluggy==1.6.0 # via tox py==1.11.0 # via tox six==1.17.0 # via tox -tomli==2.2.1 - # via - # pyproject-api - # tox tox==3.28.0 # via # -r requirements/ci.in diff --git a/requirements/constraints.txt b/requirements/constraints.txt index b814085f..dae6f7eb 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -12,4 +12,3 @@ -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt bok-choy==0.7.1 -XBlock[django]==2.0.0 diff --git a/requirements/dev.txt b/requirements/dev.txt index 18631933..30b8e164 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 @@ -19,16 +19,11 @@ asgiref==3.8.1 # -r requirements/quality.txt # -r requirements/workbench.txt # django -astroid==3.2.4 +astroid==3.3.10 # via # -r requirements/quality.txt # pylint # pylint-celery -backports-zoneinfo==0.2.1 - # via - # -r requirements/quality.txt - # -r requirements/workbench.txt - # django binaryornot==0.4.4 # via # -r requirements/quality.txt @@ -38,12 +33,12 @@ bok-choy==0.7.1 # via # -c requirements/constraints.txt # -r requirements/workbench.txt -boto3==1.37.38 +boto3==1.38.37 # via # -r requirements/quality.txt # -r requirements/workbench.txt # fs-s3fs -botocore==1.37.38 +botocore==1.38.37 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -53,7 +48,7 @@ build==1.2.2.post1 # via # -r requirements/pip-tools.txt # pip-tools -certifi==2025.4.26 +certifi==2025.6.15 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -68,7 +63,7 @@ charset-normalizer==3.4.2 # -r requirements/quality.txt # -r requirements/workbench.txt # requests -click==8.1.8 +click==8.2.1 # via # -r requirements/pip-tools.txt # -r requirements/quality.txt @@ -82,7 +77,7 @@ click-log==0.4.0 # via # -r requirements/quality.txt # edx-lint -code-annotations==1.8.2 +code-annotations==2.3.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -92,7 +87,7 @@ cookiecutter==2.6.0 # -r requirements/quality.txt # -r requirements/workbench.txt # xblock-sdk -coverage[toml]==7.6.1 +coverage[toml]==7.9.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -109,7 +104,7 @@ distlib==0.3.9 # via # -r requirements/ci.txt # virtualenv -django==4.2.22 +django==4.2.23 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/quality.txt @@ -119,7 +114,7 @@ django==4.2.22 # edx-i18n-tools # openedx-django-pyfs # xblock-sdk -django-appconf==1.0.6 +django-appconf==1.1.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -128,7 +123,7 @@ django-statici18n==2.6.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt -dnspython==2.6.1 +dnspython==2.7.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -143,12 +138,7 @@ edx-opaque-keys==3.0.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt -exceptiongroup==1.3.0 - # via - # -r requirements/quality.txt - # -r requirements/workbench.txt - # pytest -filelock==3.16.1 +filelock==3.18.0 # via # -r requirements/ci.txt # tox @@ -171,16 +161,12 @@ idna==3.10 # -r requirements/quality.txt # -r requirements/workbench.txt # requests -importlib-metadata==8.5.0 - # via - # -r requirements/pip-tools.txt - # build iniconfig==2.1.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt # pytest -isort==5.13.2 +isort==6.0.1 # via # -r requirements/quality.txt # pylint @@ -226,7 +212,7 @@ markdown-it-py==3.0.0 # -r requirements/quality.txt # -r requirements/workbench.txt # rich -markupsafe==2.1.5 +markupsafe==3.0.2 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -280,24 +266,25 @@ pbr==6.1.1 # -r requirements/quality.txt # -r requirements/workbench.txt # stevedore -pillow==10.4.0 +pillow==11.2.1 # via # -r requirements/workbench.txt # needle pip-tools==7.4.1 # via -r requirements/pip-tools.txt -platformdirs==4.3.6 +platformdirs==4.3.8 # via # -r requirements/ci.txt # -r requirements/quality.txt # pylint # virtualenv -pluggy==1.5.0 +pluggy==1.6.0 # via # -r requirements/ci.txt # -r requirements/quality.txt # -r requirements/workbench.txt # pytest + # pytest-cov # tox polib==1.2.0 # via @@ -308,7 +295,7 @@ py==1.11.0 # via # -r requirements/ci.txt # tox -pycodestyle==2.12.1 +pycodestyle==2.13.0 # via -r requirements/quality.txt pydocstyle==6.3.0 # via -r requirements/quality.txt @@ -316,8 +303,9 @@ pygments==2.19.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt + # pytest # rich -pylint==3.2.7 +pylint==3.3.7 # via # -r requirements/quality.txt # edx-lint @@ -328,7 +316,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 @@ -337,7 +325,7 @@ pylint-plugin-utils==0.8.2 # -r requirements/quality.txt # pylint-celery # pylint-django -pymongo==4.10.1 +pymongo==4.13.2 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -352,13 +340,13 @@ pyproject-hooks==1.2.0 # -r requirements/pip-tools.txt # build # pip-tools -pytest==8.3.5 +pytest==8.4.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt # pytest-cov # pytest-django -pytest-cov==5.0.0 +pytest-cov==6.2.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -403,7 +391,7 @@ rich==14.0.0 # -r requirements/quality.txt # -r requirements/workbench.txt # cookiecutter -s3transfer==0.11.5 +s3transfer==0.13.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -440,7 +428,7 @@ sqlparse==0.5.3 # -r requirements/quality.txt # -r requirements/workbench.txt # django -stevedore==5.3.0 +stevedore==5.4.1 # via # -r requirements/quality.txt # -r requirements/workbench.txt @@ -451,18 +439,6 @@ text-unidecode==1.3 # -r requirements/quality.txt # -r requirements/workbench.txt # python-slugify -tomli==2.2.1 - # via - # -r requirements/ci.txt - # -r requirements/pip-tools.txt - # -r requirements/quality.txt - # -r requirements/workbench.txt - # build - # coverage - # pip-tools - # pylint - # pytest - # tox tomlkit==0.13.3 # via # -r requirements/quality.txt @@ -473,22 +449,17 @@ tox==3.28.0 # tox-battery tox-battery==0.6.2 # via -r requirements/ci.txt -types-python-dateutil==2.9.0.20241206 +types-python-dateutil==2.9.0.20250516 # via # -r requirements/quality.txt # -r requirements/workbench.txt # arrow -typing-extensions==4.13.2 +typing-extensions==4.14.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt - # asgiref - # astroid # edx-opaque-keys - # exceptiongroup - # pylint - # rich -urllib3==1.26.20 +urllib3==2.2.3 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/quality.txt @@ -517,9 +488,8 @@ wheel==0.45.1 # via # -r requirements/pip-tools.txt # pip-tools -xblock[django]==2.0.0 +xblock[django]==5.2.0 # via - # -c requirements/constraints.txt # -r requirements/quality.txt # -r requirements/workbench.txt # xblock-sdk @@ -532,10 +502,6 @@ xblock-utils==4.0.0 # via # -r requirements/quality.txt # -r requirements/workbench.txt -zipp==3.20.2 - # via - # -r requirements/pip-tools.txt - # importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index f64b4f68..990b4234 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -1,15 +1,13 @@ # -# 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 # build==1.2.2.post1 # via pip-tools -click==8.1.8 +click==8.2.1 # via pip-tools -importlib-metadata==8.5.0 - # via build packaging==25.0 # 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 c891fead..e109db2d 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.2 +setuptools==80.9.0 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index d251316f..4ad45966 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 @@ -16,28 +16,24 @@ asgiref==3.8.1 # via # -r requirements/test.txt # django -astroid==3.2.4 +astroid==3.3.10 # via # pylint # pylint-celery -backports-zoneinfo==0.2.1 - # via - # -r requirements/test.txt - # django binaryornot==0.4.4 # via # -r requirements/test.txt # cookiecutter -boto3==1.37.38 +boto3==1.38.37 # via # -r requirements/test.txt # fs-s3fs -botocore==1.37.38 +botocore==1.38.37 # via # -r requirements/test.txt # boto3 # s3transfer -certifi==2025.4.26 +certifi==2025.6.15 # via # -r requirements/test.txt # requests @@ -49,7 +45,7 @@ charset-normalizer==3.4.2 # via # -r requirements/test.txt # requests -click==8.1.8 +click==8.2.1 # via # -r requirements/test.txt # click-log @@ -58,7 +54,7 @@ click==8.1.8 # edx-lint click-log==0.4.0 # via edx-lint -code-annotations==1.8.2 +code-annotations==2.3.0 # via # -r requirements/test.txt # edx-lint @@ -66,7 +62,7 @@ cookiecutter==2.6.0 # via # -r requirements/test.txt # xblock-sdk -coverage[toml]==7.6.1 +coverage[toml]==7.9.1 # via # -r requirements/test.txt # pytest-cov @@ -74,7 +70,7 @@ ddt==1.7.2 # via -r requirements/test.txt dill==0.4.0 # via pylint -django==4.2.22 +django==4.2.23 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -83,13 +79,13 @@ django==4.2.22 # edx-i18n-tools # openedx-django-pyfs # xblock-sdk -django-appconf==1.0.6 +django-appconf==1.1.0 # via # -r requirements/test.txt # 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 @@ -99,10 +95,6 @@ edx-lint==5.6.0 # via -r requirements/quality.in edx-opaque-keys==3.0.0 # via -r requirements/test.txt -exceptiongroup==1.3.0 - # via - # -r requirements/test.txt - # pytest fs==2.4.16 # via # -r requirements/test.txt @@ -122,7 +114,7 @@ iniconfig==2.1.0 # via # -r requirements/test.txt # pytest -isort==5.13.2 +isort==6.0.1 # via # -r requirements/quality.in # pylint @@ -160,7 +152,7 @@ markdown-it-py==3.0.0 # via # -r requirements/test.txt # rich -markupsafe==2.1.5 +markupsafe==3.0.2 # via # -r requirements/test.txt # jinja2 @@ -190,25 +182,27 @@ pbr==6.1.1 # via # -r requirements/test.txt # stevedore -platformdirs==4.3.6 +platformdirs==4.3.8 # via pylint -pluggy==1.5.0 +pluggy==1.6.0 # via # -r requirements/test.txt # pytest + # pytest-cov polib==1.2.0 # via # -r requirements/test.txt # edx-i18n-tools -pycodestyle==2.12.1 +pycodestyle==2.13.0 # via -r requirements/quality.in pydocstyle==6.3.0 # via -r requirements/quality.in pygments==2.19.1 # via # -r requirements/test.txt + # pytest # rich -pylint==3.2.7 +pylint==3.3.7 # via # edx-lint # pylint-celery @@ -216,13 +210,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.13.2 # via # -r requirements/test.txt # edx-opaque-keys @@ -230,12 +224,12 @@ pypng==0.20220715.0 # via # -r requirements/test.txt # xblock-sdk -pytest==8.3.5 +pytest==8.4.0 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==5.0.0 +pytest-cov==6.2.1 # via -r requirements/test.txt pytest-django==4.11.1 # via -r requirements/test.txt @@ -270,7 +264,7 @@ rich==14.0.0 # via # -r requirements/test.txt # cookiecutter -s3transfer==0.11.5 +s3transfer==0.13.0 # via # -r requirements/test.txt # boto3 @@ -293,7 +287,7 @@ sqlparse==0.5.3 # via # -r requirements/test.txt # django -stevedore==5.3.0 +stevedore==5.4.1 # via # -r requirements/test.txt # code-annotations @@ -302,28 +296,17 @@ 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.3 # via pylint -types-python-dateutil==2.9.0.20241206 +types-python-dateutil==2.9.0.20250516 # via # -r requirements/test.txt # arrow -typing-extensions==4.13.2 +typing-extensions==4.14.0 # via # -r requirements/test.txt - # asgiref - # astroid # edx-opaque-keys - # exceptiongroup - # pylint - # rich -urllib3==1.26.20 +urllib3==2.2.3 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -340,9 +323,8 @@ webob==1.8.9 # -r requirements/test.txt # xblock # xblock-sdk -xblock[django]==2.0.0 +xblock[django]==5.2.0 # via - # -c requirements/constraints.txt # -r requirements/test.txt # xblock-sdk # xblock-utils diff --git a/requirements/test.txt b/requirements/test.txt index ebffd796..08f41356 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 @@ -14,40 +14,35 @@ asgiref==3.8.1 # via # -r requirements/base.txt # django -backports-zoneinfo==0.2.1 - # via - # -r requirements/base.txt - # django binaryornot==0.4.4 # via cookiecutter -boto3==1.37.38 +boto3==1.38.37 # via # -r requirements/base.txt # fs-s3fs -botocore==1.37.38 +botocore==1.38.37 # via # -r requirements/base.txt # boto3 # s3transfer -certifi==2025.4.26 +certifi==2025.6.15 # via requests chardet==5.2.0 # via binaryornot charset-normalizer==3.4.2 # via requests -click==8.1.8 +click==8.2.1 # via # code-annotations # cookiecutter -code-annotations==1.8.2 +code-annotations==2.3.0 # via -r requirements/test.in cookiecutter==2.6.0 # via xblock-sdk -coverage[toml]==7.6.1 +coverage[toml]==7.9.1 # via pytest-cov ddt==1.7.2 # via -r requirements/test.in -django==4.2.22 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt @@ -56,11 +51,11 @@ django==4.2.22 # edx-i18n-tools # openedx-django-pyfs # xblock-sdk -django-appconf==1.0.6 +django-appconf==1.1.0 # via django-statici18n django-statici18n==2.6.0 # via -r requirements/test.in -dnspython==2.6.1 +dnspython==2.7.0 # via # -r requirements/base.txt # pymongo @@ -68,8 +63,6 @@ edx-i18n-tools==1.9.0 # via -r requirements/test.in edx-opaque-keys==3.0.0 # via -r requirements/base.txt -exceptiongroup==1.3.0 - # via pytest fs==2.4.16 # via # -r requirements/base.txt @@ -114,7 +107,7 @@ mako==1.3.10 # xblock-utils markdown-it-py==3.0.0 # via rich -markupsafe==2.1.5 +markupsafe==3.0.2 # via # -r requirements/base.txt # jinja2 @@ -136,23 +129,27 @@ pbr==6.1.1 # via # -r requirements/base.txt # stevedore -pluggy==1.5.0 - # via pytest +pluggy==1.6.0 + # via + # pytest + # pytest-cov polib==1.2.0 # via edx-i18n-tools pygments==2.19.1 - # via rich -pymongo==4.10.1 + # via + # pytest + # rich +pymongo==4.13.2 # via # -r requirements/base.txt # edx-opaque-keys pypng==0.20220715.0 # via xblock-sdk -pytest==8.3.5 +pytest==8.4.0 # via # pytest-cov # pytest-django -pytest-cov==5.0.0 +pytest-cov==6.2.1 # via -r requirements/test.in pytest-django==4.11.1 # via -r requirements/test.in @@ -183,7 +180,7 @@ requests==2.32.4 # xblock-sdk rich==14.0.0 # via cookiecutter -s3transfer==0.11.5 +s3transfer==0.13.0 # via # -r requirements/base.txt # boto3 @@ -203,27 +200,20 @@ sqlparse==0.5.3 # via # -r requirements/base.txt # django -stevedore==5.3.0 +stevedore==5.4.1 # via # -r requirements/base.txt # code-annotations # edx-opaque-keys text-unidecode==1.3 # via python-slugify -tomli==2.2.1 - # via - # coverage - # pytest -types-python-dateutil==2.9.0.20241206 +types-python-dateutil==2.9.0.20250516 # via arrow -typing-extensions==4.13.2 +typing-extensions==4.14.0 # via # -r requirements/base.txt - # asgiref # edx-opaque-keys - # exceptiongroup - # rich -urllib3==1.26.20 +urllib3==2.2.3 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt @@ -240,9 +230,8 @@ webob==1.8.9 # -r requirements/base.txt # xblock # xblock-sdk -xblock[django]==2.0.0 +xblock[django]==5.2.0 # via - # -c requirements/constraints.txt # -r requirements/base.txt # -r requirements/test.in # xblock-sdk diff --git a/requirements/workbench.txt b/requirements/workbench.txt index 69ab3455..a4a4c693 100644 --- a/requirements/workbench.txt +++ b/requirements/workbench.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 @@ -16,10 +16,6 @@ asgiref==3.8.1 # via # -r requirements/test.txt # django -backports-zoneinfo==0.2.1 - # via - # -r requirements/test.txt - # django binaryornot==0.4.4 # via # -r requirements/test.txt @@ -28,16 +24,16 @@ bok-choy==0.7.1 # via # -c requirements/constraints.txt # -r requirements/workbench.in -boto3==1.37.38 +boto3==1.38.37 # via # -r requirements/test.txt # fs-s3fs -botocore==1.37.38 +botocore==1.38.37 # via # -r requirements/test.txt # boto3 # s3transfer -certifi==2025.4.26 +certifi==2025.6.15 # via # -r requirements/test.txt # requests @@ -49,24 +45,23 @@ charset-normalizer==3.4.2 # via # -r requirements/test.txt # requests -click==8.1.8 +click==8.2.1 # via # -r requirements/test.txt # code-annotations # cookiecutter -code-annotations==1.8.2 +code-annotations==2.3.0 # via -r requirements/test.txt cookiecutter==2.6.0 # via # -r requirements/test.txt # xblock-sdk -coverage[toml]==7.6.1 +coverage[toml]==7.9.1 # via # -r requirements/test.txt # pytest-cov ddt==1.7.2 # via -r requirements/test.txt -django==4.2.22 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -75,13 +70,13 @@ django==4.2.22 # edx-i18n-tools # openedx-django-pyfs # xblock-sdk -django-appconf==1.0.6 +django-appconf==1.1.0 # via # -r requirements/test.txt # 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 @@ -89,10 +84,6 @@ edx-i18n-tools==1.9.0 # via -r requirements/test.txt edx-opaque-keys==3.0.0 # via -r requirements/test.txt -exceptiongroup==1.3.0 - # via - # -r requirements/test.txt - # pytest fs==2.4.16 # via # -r requirements/test.txt @@ -149,7 +140,7 @@ markdown-it-py==3.0.0 # via # -r requirements/test.txt # rich -markupsafe==2.1.5 +markupsafe==3.0.2 # via # -r requirements/test.txt # jinja2 @@ -183,12 +174,13 @@ pbr==6.1.1 # via # -r requirements/test.txt # stevedore -pillow==10.4.0 +pillow==11.2.1 # via needle -pluggy==1.5.0 +pluggy==1.6.0 # via # -r requirements/test.txt # pytest + # pytest-cov polib==1.2.0 # via # -r requirements/test.txt @@ -196,8 +188,9 @@ polib==1.2.0 pygments==2.19.1 # via # -r requirements/test.txt + # pytest # rich -pymongo==4.10.1 +pymongo==4.13.2 # via # -r requirements/test.txt # edx-opaque-keys @@ -206,12 +199,12 @@ pypng==0.20220715.0 # -r requirements/test.txt # -r requirements/workbench.in # xblock-sdk -pytest==8.3.5 +pytest==8.4.0 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==5.0.0 +pytest-cov==6.2.1 # via -r requirements/test.txt pytest-django==4.11.1 # via -r requirements/test.txt @@ -247,7 +240,7 @@ rich==14.0.0 # via # -r requirements/test.txt # cookiecutter -s3transfer==0.11.5 +s3transfer==0.13.0 # via # -r requirements/test.txt # boto3 @@ -274,7 +267,7 @@ sqlparse==0.5.3 # via # -r requirements/test.txt # django -stevedore==5.3.0 +stevedore==5.4.1 # via # -r requirements/test.txt # code-annotations @@ -283,23 +276,15 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomli==2.2.1 - # via - # -r requirements/test.txt - # coverage - # pytest -types-python-dateutil==2.9.0.20241206 +types-python-dateutil==2.9.0.20250516 # via # -r requirements/test.txt # arrow -typing-extensions==4.13.2 +typing-extensions==4.14.0 # via # -r requirements/test.txt - # asgiref # edx-opaque-keys - # exceptiongroup - # rich -urllib3==1.26.20 +urllib3==2.2.3 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -319,9 +304,8 @@ webob==1.8.9 # -r requirements/workbench.in # xblock # xblock-sdk -xblock[django]==2.0.0 +xblock[django]==5.2.0 # via - # -c requirements/constraints.txt # -r requirements/test.txt # xblock-sdk # xblock-utils diff --git a/setup.py b/setup.py index a4978f0c..ca9dea50 100644 --- a/setup.py +++ b/setup.py @@ -179,7 +179,7 @@ def package_data(pkg, roots): ), package_data=package_data("problem_builder", ["templates", "public", "translations"]), install_requires=load_requirements('requirements/base.in'), - python_requires=">=3.8", + python_requires=">=3.11", keywords='Python edx', entry_points={ 'xblock.v1': BLOCKS, diff --git a/tox.ini b/tox.ini index 4cce0db0..d235df03 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38-django42,quality +envlist = py{311,312}-django{42,52},quality [pycodestyle] exclude = .git,.tox,migrations @@ -37,7 +37,8 @@ allowlist_externals = mkdir deps = -r{toxinidir}/requirements/test.txt - django42: Django>=4.2,<5.0 + django42: Django>=4.2,<4.3 + django52: Django>=5.2,<5.3 commands = mkdir -p var python manage.py check