From 3a7f03ceea72b1b04946e8c51516eca889733682 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Sat, 7 Mar 2026 19:49:07 -0500 Subject: [PATCH 1/4] chore: drop Python 3.11 support Remove Python 3.11 from CI matrix, tox envlist, and setup.py. Update python_requires to >=3.12. Part of the broader effort to drop 3.11 across openedx repos: https://github.com/openedx/public-engineering/issues/499 Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/ci.yml | 2 +- setup.py | 3 +-- tox.ini | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8ed6e3c..5349690 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] - python-version: ['3.11', '3.12'] + python-version: ['3.12'] toxenv: [django42, django52, quality] steps: diff --git a/setup.py b/setup.py index c1d82e2..4c6a4bc 100644 --- a/setup.py +++ b/setup.py @@ -147,7 +147,7 @@ def is_requirement(line): include_package_data=True, install_requires=load_requirements('requirements/base.in'), - python_requires=">=3.11", + python_requires=">=3.12", license="AGPL 3.0", zip_safe=False, keywords='Python edx', @@ -160,7 +160,6 @@ def is_requirement(line): 'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)', 'Natural Language :: English', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', ], entry_points={ diff --git a/tox.ini b/tox.ini index 89db334..0d2c95b 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{311,312}-django{42,52}, quality +envlist = py312-django{42,52}, quality [pycodestyle] exclude = .git,.tox,migrations From 0353da2b8744c420857521ba105850d1e0eb37b2 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Sat, 7 Mar 2026 19:50:10 -0500 Subject: [PATCH 2/4] chore: regenerate requirements with Python 3.12 Co-Authored-By: Claude Sonnet 4.6 --- requirements/base.txt | 61 ++++++------ requirements/ci.txt | 20 ++-- requirements/dev.txt | 187 ++++++++++++++++++------------------ requirements/doc.txt | 188 ++++++++++++++++++------------------- requirements/pip-tools.txt | 16 ++-- requirements/pip.txt | 14 +-- requirements/quality.txt | 159 +++++++++++++++---------------- requirements/test.txt | 135 +++++++++++++------------- 8 files changed, 382 insertions(+), 398 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 93bd4f5..893b818 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,26 +1,26 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # appdirs==1.4.4 # via fs -asgiref==3.8.1 +asgiref==3.11.1 # via django -attrs==24.2.0 +attrs==25.4.0 # via openedx-events -boto3==1.35.58 +boto3==1.42.63 # via fs-s3fs -botocore==1.35.58 +botocore==1.42.63 # via # boto3 # s3transfer -cffi==1.17.1 +cffi==2.0.0 # via pynacl -click==8.1.7 +click==8.3.1 # via edx-django-utils -django==4.2.16 +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.in @@ -35,19 +35,20 @@ django-crum==0.7.9 # via edx-django-utils django-model-utils==5.0.0 # via -r requirements/base.in -django-waffle==4.1.0 +django-waffle==5.0.0 # via edx-django-utils -dnspython==2.7.0 +dnspython==2.8.0 # via pymongo -edx-ccx-keys==1.3.0 +edx-ccx-keys==2.0.2 # via openedx-events -edx-django-utils==7.0.0 +edx-django-utils==8.0.1 # via openedx-events -edx-opaque-keys[django]==2.11.0 +edx-opaque-keys[django]==3.1.0 # via # edx-ccx-keys # openedx-events -fastavro==1.9.7 + # openedx-filters +fastavro==1.12.1 # via openedx-events fs==2.4.16 # via @@ -55,49 +56,45 @@ fs==2.4.16 # openedx-django-pyfs fs-s3fs==1.1.1 # via openedx-django-pyfs -jmespath==1.0.1 +jmespath==1.1.0 # via # boto3 # botocore lazy==1.6 # via -r requirements/base.in -newrelic==10.2.0 - # via edx-django-utils -openedx-django-pyfs==3.7.0 +openedx-django-pyfs==3.8.0 # via -r requirements/base.in -openedx-events==9.15.0 +openedx-events==10.5.0 # via -r requirements/base.in -openedx-filters==1.11.0 +openedx-filters==2.1.0 # via -r requirements/base.in -pbr==6.1.0 - # via stevedore -psutil==6.1.0 +psutil==7.2.2 # via edx-django-utils -pycparser==2.22 +pycparser==3.0 # via cffi -pymongo==4.10.1 +pymongo==4.16.0 # via edx-opaque-keys -pynacl==1.5.0 +pynacl==1.6.2 # via edx-django-utils python-dateutil==2.9.0.post0 # via botocore -s3transfer==0.10.3 +s3transfer==0.16.0 # via boto3 -six==1.16.0 +six==1.17.0 # via # edx-ccx-keys # fs # fs-s3fs # python-dateutil -sqlparse==0.5.1 +sqlparse==0.5.5 # via django -stevedore==5.3.0 +stevedore==5.7.0 # via # edx-django-utils # edx-opaque-keys -typing-extensions==4.12.2 +typing-extensions==4.15.0 # via edx-opaque-keys -urllib3==2.2.3 +urllib3==2.6.3 # via botocore # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/ci.txt b/requirements/ci.txt index dfbb2bf..47dcf38 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,28 +1,32 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # -distlib==0.3.9 +distlib==0.4.0 # via virtualenv -filelock==3.16.1 +filelock==3.25.0 # via + # python-discovery # tox # virtualenv -packaging==24.2 +packaging==26.0 # via # pyproject-api # tox -platformdirs==4.3.6 +platformdirs==4.9.4 # via + # python-discovery # tox # virtualenv -pluggy==1.5.0 +pluggy==1.6.0 # via tox py==1.11.0 # via tox -six==1.16.0 +python-discovery==1.1.1 + # via virtualenv +six==1.17.0 # via tox tox==3.28.0 # via @@ -30,5 +34,5 @@ tox==3.28.0 # tox-battery tox-battery==0.6.2 # via -r requirements/ci.in -virtualenv==20.27.1 +virtualenv==21.1.0 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index d4f62be..40180c7 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -8,58 +8,55 @@ appdirs==1.4.4 # via # -r requirements/quality.txt # fs -arrow==1.3.0 +arrow==1.4.0 # via # -r requirements/quality.txt # cookiecutter -asgiref==3.8.1 +asgiref==3.11.1 # via # -r requirements/quality.txt # django -astroid==3.3.5 +astroid==4.0.4 # via # -r requirements/quality.txt # pylint # pylint-celery -attrs==24.2.0 +attrs==25.4.0 # via # -r requirements/quality.txt # openedx-events -binaryornot==0.4.4 +binaryornot==0.5.0 # via # -r requirements/quality.txt # cookiecutter -boto3==1.35.58 +boto3==1.42.63 # via # -r requirements/quality.txt # fs-s3fs -botocore==1.35.58 +botocore==1.42.63 # via # -r requirements/quality.txt # boto3 # s3transfer -build==1.2.2.post1 +build==1.4.0 # via # -r requirements/pip-tools.txt # pip-tools -certifi==2024.8.30 +certifi==2026.2.25 # via # -r requirements/quality.txt # requests -cffi==1.17.1 +cffi==2.0.0 # via # -r requirements/quality.txt # pynacl -chardet==5.2.0 - # via - # -r requirements/quality.txt - # binaryornot - # diff-cover -charset-normalizer==3.4.0 +chardet==7.0.1 + # via diff-cover +charset-normalizer==3.4.5 # via # -r requirements/quality.txt # requests -click==8.1.7 +click==8.3.1 # via # -r requirements/pip-tools.txt # -r requirements/quality.txt @@ -73,29 +70,29 @@ click-log==0.4.0 # via # -r requirements/quality.txt # edx-lint -code-annotations==1.8.0 +code-annotations==2.3.2 # via # -r requirements/quality.txt # edx-lint -cookiecutter==2.6.0 +cookiecutter==2.7.1 # via # -r requirements/quality.txt # xblock-sdk -coverage[toml]==7.6.4 +coverage[toml]==7.13.4 # via # -r requirements/quality.txt # pytest-cov -diff-cover==9.2.0 +diff-cover==10.2.0 # via -r requirements/dev.in -dill==0.3.9 +dill==0.4.1 # via # -r requirements/quality.txt # pylint -distlib==0.3.9 +distlib==0.4.0 # via # -r requirements/ci.txt # virtualenv -django==4.2.16 +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/quality.txt @@ -115,40 +112,42 @@ django-crum==0.7.9 # edx-django-utils django-model-utils==5.0.0 # via -r requirements/quality.txt -django-waffle==4.1.0 +django-waffle==5.0.0 # via # -r requirements/quality.txt # edx-django-utils -djangorestframework==3.15.2 +djangorestframework==3.16.1 # via -r requirements/quality.txt -dnspython==2.7.0 +dnspython==2.8.0 # via # -r requirements/quality.txt # pymongo -edx-ccx-keys==1.3.0 +edx-ccx-keys==2.0.2 # via # -r requirements/quality.txt # openedx-events -edx-django-utils==7.0.0 +edx-django-utils==8.0.1 # via # -r requirements/quality.txt # openedx-events -edx-i18n-tools==1.6.3 +edx-i18n-tools==1.9.0 # via -r requirements/dev.in -edx-lint==5.4.1 +edx-lint==5.6.0 # via -r requirements/quality.txt -edx-opaque-keys[django]==2.11.0 +edx-opaque-keys[django]==3.1.0 # via # -r requirements/quality.txt # edx-ccx-keys # openedx-events -fastavro==1.9.7 + # openedx-filters +fastavro==1.12.1 # via # -r requirements/quality.txt # openedx-events -filelock==3.16.1 +filelock==3.25.0 # via # -r requirements/ci.txt + # python-discovery # tox # virtualenv fs==2.4.16 @@ -162,49 +161,49 @@ fs-s3fs==1.1.1 # -r requirements/quality.txt # openedx-django-pyfs # xblock-sdk -idna==3.10 +idna==3.11 # via # -r requirements/quality.txt # requests -iniconfig==2.0.0 +iniconfig==2.3.0 # via # -r requirements/quality.txt # pytest -isort==5.13.2 +isort==8.0.1 # via # -r requirements/quality.txt # pylint -jinja2==3.1.4 +jinja2==3.1.6 # via # -r requirements/quality.txt # code-annotations # cookiecutter # diff-cover -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/quality.txt # boto3 # botocore lazy==1.6 # via -r requirements/quality.txt -lxml[html-clean]==5.3.0 +lxml[html-clean]==6.0.2 # via # -r requirements/quality.txt # edx-i18n-tools # lxml-html-clean # xblock # xblock-sdk -lxml-html-clean==0.3.1 +lxml-html-clean==0.4.4 # via lxml -mako==1.3.6 +mako==1.3.10 # via # -r requirements/quality.txt # xblock -markdown-it-py==3.0.0 +markdown-it-py==4.0.0 # via # -r requirements/quality.txt # rich -markupsafe==3.0.2 +markupsafe==3.0.3 # via # -r requirements/quality.txt # jinja2 @@ -218,19 +217,15 @@ mdurl==0.1.2 # via # -r requirements/quality.txt # markdown-it-py -mock==5.1.0 +mock==5.2.0 # via -r requirements/quality.txt -newrelic==10.2.0 - # via - # -r requirements/quality.txt - # edx-django-utils -openedx-django-pyfs==3.7.0 +openedx-django-pyfs==3.8.0 # via -r requirements/quality.txt -openedx-events==9.15.0 +openedx-events==10.5.0 # via -r requirements/quality.txt -openedx-filters==1.11.0 +openedx-filters==2.1.0 # via -r requirements/quality.txt -packaging==24.2 +packaging==26.0 # via # -r requirements/ci.txt # -r requirements/pip-tools.txt @@ -238,30 +233,29 @@ packaging==24.2 # build # pytest # tox + # wheel path==16.16.0 # via edx-i18n-tools -pbr==6.1.0 - # via - # -r requirements/quality.txt - # stevedore -pip-tools==7.4.1 +pip-tools==7.5.3 # via -r requirements/pip-tools.txt -platformdirs==4.3.6 +platformdirs==4.9.4 # via # -r requirements/ci.txt # -r requirements/quality.txt # pylint + # python-discovery # virtualenv -pluggy==1.5.0 +pluggy==1.6.0 # via # -r requirements/ci.txt # -r requirements/quality.txt # diff-cover # pytest + # pytest-cov # tox polib==1.2.0 # via edx-i18n-tools -psutil==6.1.0 +psutil==7.2.2 # via # -r requirements/quality.txt # edx-django-utils @@ -269,20 +263,21 @@ py==1.11.0 # via # -r requirements/ci.txt # tox -pycodestyle==2.12.1 +pycodestyle==2.14.0 # via -r requirements/quality.txt -pycparser==2.22 +pycparser==3.0 # via # -r requirements/quality.txt # cffi pydocstyle==6.3.0 # via -r requirements/quality.txt -pygments==2.18.0 +pygments==2.19.2 # via # -r requirements/quality.txt # diff-cover + # pytest # rich -pylint==3.3.1 +pylint==4.0.5 # via # -r requirements/quality.txt # edx-lint @@ -293,20 +288,20 @@ pylint-celery==0.3 # via # -r requirements/quality.txt # edx-lint -pylint-django==2.6.1 +pylint-django==2.7.0 # via # -r requirements/quality.txt # edx-lint -pylint-plugin-utils==0.8.2 +pylint-plugin-utils==0.9.0 # via # -r requirements/quality.txt # pylint-celery # pylint-django -pymongo==4.10.1 +pymongo==4.16.0 # via # -r requirements/quality.txt # edx-opaque-keys -pynacl==1.5.0 +pynacl==1.6.2 # via # -r requirements/quality.txt # edx-django-utils @@ -319,14 +314,14 @@ pyproject-hooks==1.2.0 # -r requirements/pip-tools.txt # build # pip-tools -pytest==8.3.3 +pytest==9.0.2 # via # -r requirements/quality.txt # pytest-cov # pytest-django -pytest-cov==6.0.0 +pytest-cov==7.0.0 # via -r requirements/quality.txt -pytest-django==4.9.0 +pytest-django==4.12.0 # via -r requirements/quality.txt python-dateutil==2.9.0.post0 # via @@ -334,41 +329,45 @@ python-dateutil==2.9.0.post0 # arrow # botocore # xblock +python-discovery==1.1.1 + # via + # -r requirements/ci.txt + # virtualenv python-slugify==8.0.4 # via # -r requirements/quality.txt # code-annotations # cookiecutter -pytz==2024.2 +pytz==2026.1.post1 # via # -r requirements/quality.txt # xblock -pyyaml==6.0.2 +pyyaml==6.0.3 # via # -r requirements/quality.txt # code-annotations # cookiecutter # edx-i18n-tools # xblock -requests==2.32.3 +requests==2.32.5 # via # -r requirements/quality.txt # cookiecutter # xblock-sdk -rich==13.9.4 +rich==14.3.3 # via # -r requirements/quality.txt # cookiecutter -s3transfer==0.10.3 +s3transfer==0.16.0 # via # -r requirements/quality.txt # boto3 -simplejson==3.19.3 +simplejson==3.20.2 # via # -r requirements/quality.txt # xblock # xblock-sdk -six==1.16.0 +six==1.17.0 # via # -r requirements/ci.txt # -r requirements/quality.txt @@ -378,15 +377,15 @@ 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.5.1 +sqlparse==0.5.5 # via # -r requirements/quality.txt # django -stevedore==5.3.0 +stevedore==5.7.0 # via # -r requirements/quality.txt # code-annotations @@ -396,7 +395,7 @@ text-unidecode==1.3 # via # -r requirements/quality.txt # python-slugify -tomlkit==0.13.2 +tomlkit==0.14.0 # via # -r requirements/quality.txt # pylint @@ -406,24 +405,24 @@ tox==3.28.0 # tox-battery tox-battery==0.6.2 # via -r requirements/ci.txt -types-python-dateutil==2.9.0.20241003 +typing-extensions==4.15.0 # via # -r requirements/quality.txt - # arrow -typing-extensions==4.12.2 + # edx-opaque-keys +tzdata==2025.3 # via # -r requirements/quality.txt - # edx-opaque-keys -urllib3==2.2.3 + # arrow +urllib3==2.6.3 # via # -r requirements/quality.txt # botocore # requests -virtualenv==20.27.1 +virtualenv==21.1.0 # via # -r requirements/ci.txt # tox -web-fragments==2.2.0 +web-fragments==3.1.0 # via # -r requirements/quality.txt # xblock @@ -433,15 +432,15 @@ webob==1.8.9 # -r requirements/quality.txt # xblock # xblock-sdk -wheel==0.45.0 +wheel==0.46.3 # via # -r requirements/pip-tools.txt # pip-tools -xblock==5.1.0 +xblock==5.3.0 # via # -r requirements/quality.txt # xblock-sdk -xblock-sdk==0.12.0 +xblock-sdk==0.13.0 # via -r requirements/quality.txt # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/doc.txt b/requirements/doc.txt index 6e5e9fd..623f2f0 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -10,70 +10,67 @@ appdirs==1.4.4 # via # -r requirements/test.txt # fs -arrow==1.3.0 +arrow==1.4.0 # via # -r requirements/test.txt # cookiecutter -asgiref==3.8.1 +asgiref==3.11.1 # via # -r requirements/test.txt # django -attrs==24.2.0 +attrs==25.4.0 # via # -r requirements/test.txt # openedx-events -babel==2.16.0 +babel==2.18.0 # via sphinx -backports-tarfile==1.2.0 - # via jaraco-context -binaryornot==0.4.4 +binaryornot==0.5.0 # via # -r requirements/test.txt # cookiecutter -boto3==1.35.58 +boto3==1.42.63 # via # -r requirements/test.txt # fs-s3fs -botocore==1.35.58 +botocore==1.42.63 # via # -r requirements/test.txt # boto3 # s3transfer -build==1.2.2.post1 +build==1.4.0 # via -r requirements/doc.in -certifi==2024.8.30 +certifi==2026.2.25 # via # -r requirements/test.txt # requests -cffi==1.17.1 +cffi==2.0.0 # via # -r requirements/test.txt + # cryptography # pynacl -chardet==5.2.0 - # via - # -r requirements/test.txt - # binaryornot -charset-normalizer==3.4.0 +charset-normalizer==3.4.5 # via # -r requirements/test.txt # requests -click==8.1.7 +click==8.3.1 # via # -r requirements/test.txt # code-annotations # cookiecutter # edx-django-utils -code-annotations==1.8.0 +code-annotations==2.3.2 # via -r requirements/test.txt -cookiecutter==2.6.0 +cookiecutter==2.7.1 # via # -r requirements/test.txt # xblock-sdk -coverage[toml]==7.6.4 +coverage[toml]==7.13.4 # via # -r requirements/test.txt # pytest-cov -django==4.2.16 +cryptography==46.0.5 + # via secretstorage +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -92,17 +89,17 @@ django-crum==0.7.9 # edx-django-utils django-model-utils==5.0.0 # via -r requirements/test.txt -django-waffle==4.1.0 +django-waffle==5.0.0 # via # -r requirements/test.txt # edx-django-utils -djangorestframework==3.15.2 +djangorestframework==3.16.1 # via -r requirements/test.txt -dnspython==2.7.0 +dnspython==2.8.0 # via # -r requirements/test.txt # pymongo -doc8==1.1.2 +doc8==2.0.0 # via -r requirements/doc.in docutils==0.21.2 # via @@ -110,20 +107,21 @@ docutils==0.21.2 # readme-renderer # restructuredtext-lint # sphinx -edx-ccx-keys==1.3.0 +edx-ccx-keys==2.0.2 # via # -r requirements/test.txt # openedx-events -edx-django-utils==7.0.0 +edx-django-utils==8.0.1 # via # -r requirements/test.txt # openedx-events -edx-opaque-keys[django]==2.11.0 +edx-opaque-keys[django]==3.1.0 # via # -r requirements/test.txt # edx-ccx-keys # openedx-events -fastavro==1.9.7 + # openedx-filters +fastavro==1.12.1 # via # -r requirements/test.txt # openedx-events @@ -138,55 +136,57 @@ fs-s3fs==1.1.1 # -r requirements/test.txt # openedx-django-pyfs # xblock-sdk -idna==3.10 +id==1.6.1 + # via twine +idna==3.11 # via # -r requirements/test.txt # requests -imagesize==1.4.1 +imagesize==2.0.0 # via sphinx -importlib-metadata==8.5.0 - # via - # keyring - # twine -iniconfig==2.0.0 +iniconfig==2.3.0 # via # -r requirements/test.txt # pytest jaraco-classes==3.4.0 # via keyring -jaraco-context==6.0.1 +jaraco-context==6.1.1 # via keyring -jaraco-functools==4.1.0 +jaraco-functools==4.4.0 # via keyring -jinja2==3.1.4 +jeepney==0.9.0 + # via + # keyring + # secretstorage +jinja2==3.1.6 # via # -r requirements/test.txt # code-annotations # cookiecutter # sphinx -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/test.txt # boto3 # botocore -keyring==25.5.0 +keyring==25.7.0 # via twine lazy==1.6 # via -r requirements/test.txt -lxml==5.3.0 +lxml==6.0.2 # via # -r requirements/test.txt # xblock # xblock-sdk -mako==1.3.6 +mako==1.3.10 # via # -r requirements/test.txt # xblock -markdown-it-py==3.0.0 +markdown-it-py==4.0.0 # via # -r requirements/test.txt # rich -markupsafe==3.0.2 +markupsafe==3.0.3 # via # -r requirements/test.txt # jinja2 @@ -196,60 +196,53 @@ 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 -more-itertools==10.5.0 +more-itertools==10.8.0 # via # jaraco-classes # jaraco-functools -newrelic==10.2.0 - # via - # -r requirements/test.txt - # edx-django-utils -nh3==0.2.18 +nh3==0.3.3 # via readme-renderer -openedx-django-pyfs==3.7.0 +openedx-django-pyfs==3.8.0 # via -r requirements/test.txt -openedx-events==9.15.0 +openedx-events==10.5.0 # via -r requirements/test.txt -openedx-filters==1.11.0 +openedx-filters==2.1.0 # via -r requirements/test.txt -packaging==24.2 +packaging==26.0 # via # -r requirements/test.txt # build # pytest # sphinx -pbr==6.1.0 - # via - # -r requirements/test.txt - # stevedore -pkginfo==1.10.0 - # via twine -pluggy==1.5.0 + # twine +pluggy==1.6.0 # via # -r requirements/test.txt # pytest -psutil==6.1.0 + # pytest-cov +psutil==7.2.2 # via # -r requirements/test.txt # edx-django-utils -pycparser==2.22 +pycparser==3.0 # via # -r requirements/test.txt # cffi -pygments==2.18.0 +pygments==2.19.2 # via # -r requirements/test.txt # doc8 + # pytest # readme-renderer # rich # sphinx -pymongo==4.10.1 +pymongo==4.16.0 # via # -r requirements/test.txt # edx-opaque-keys -pynacl==1.5.0 +pynacl==1.6.2 # via # -r requirements/test.txt # edx-django-utils @@ -259,14 +252,14 @@ pypng==0.20220715.0 # xblock-sdk pyproject-hooks==1.2.0 # via build -pytest==8.3.3 +pytest==9.0.2 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==6.0.0 +pytest-cov==7.0.0 # via -r requirements/test.txt -pytest-django==4.9.0 +pytest-django==4.12.0 # via -r requirements/test.txt python-dateutil==2.9.0.post0 # via @@ -279,11 +272,11 @@ python-slugify==8.0.4 # -r requirements/test.txt # code-annotations # cookiecutter -pytz==2024.2 +pytz==2026.1.post1 # via # -r requirements/test.txt # xblock -pyyaml==6.0.2 +pyyaml==6.0.3 # via # -r requirements/test.txt # code-annotations @@ -291,7 +284,7 @@ pyyaml==6.0.2 # xblock readme-renderer==44.0 # via twine -requests==2.32.3 +requests==2.32.5 # via # -r requirements/test.txt # cookiecutter @@ -301,34 +294,38 @@ requests==2.32.3 # xblock-sdk requests-toolbelt==1.0.0 # via twine -restructuredtext-lint==1.4.0 +restructuredtext-lint==2.0.2 # via doc8 rfc3986==2.0.0 # via twine -rich==13.9.4 +rich==14.3.3 # via # -r requirements/test.txt # cookiecutter # twine -s3transfer==0.10.3 +roman-numerals==4.1.0 + # via sphinx +s3transfer==0.16.0 # via # -r requirements/test.txt # boto3 -simplejson==3.19.3 +secretstorage==3.5.0 + # via keyring +simplejson==3.20.2 # via # -r requirements/test.txt # xblock # xblock-sdk -six==1.16.0 +six==1.17.0 # via # -r requirements/test.txt # edx-ccx-keys # fs # fs-s3fs # python-dateutil -snowballstemmer==2.2.0 +snowballstemmer==3.0.1 # via sphinx -sphinx==8.1.3 +sphinx==9.1.0 # via -r requirements/doc.in sphinxcontrib-applehelp==2.0.0 # via sphinx @@ -342,11 +339,11 @@ sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx -sqlparse==0.5.1 +sqlparse==0.5.5 # via # -r requirements/test.txt # django -stevedore==5.3.0 +stevedore==5.7.0 # via # -r requirements/test.txt # code-annotations @@ -357,23 +354,24 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -twine==5.1.1 +twine==6.2.0 # via -r requirements/doc.in -types-python-dateutil==2.9.0.20241003 +typing-extensions==4.15.0 # via # -r requirements/test.txt - # arrow -typing-extensions==4.12.2 + # edx-opaque-keys +tzdata==2025.3 # via # -r requirements/test.txt - # edx-opaque-keys -urllib3==2.2.3 + # arrow +urllib3==2.6.3 # via # -r requirements/test.txt # botocore + # id # requests # twine -web-fragments==2.2.0 +web-fragments==3.1.0 # via # -r requirements/test.txt # xblock @@ -383,14 +381,12 @@ webob==1.8.9 # -r requirements/test.txt # xblock # xblock-sdk -xblock==5.1.0 +xblock==5.3.0 # via # -r requirements/test.txt # xblock-sdk -xblock-sdk==0.12.0 +xblock-sdk==0.13.0 # via -r requirements/test.txt -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 dc539c5..d89516b 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -1,22 +1,24 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # -build==1.2.2.post1 +build==1.4.0 # via pip-tools -click==8.1.7 +click==8.3.1 # via pip-tools -packaging==24.2 - # via build -pip-tools==7.4.1 +packaging==26.0 + # via + # build + # wheel +pip-tools==7.5.3 # via -r requirements/pip-tools.in pyproject-hooks==1.2.0 # via # build # pip-tools -wheel==0.45.0 +wheel==0.46.3 # via pip-tools # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/pip.txt b/requirements/pip.txt index edbda4b..084d708 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,16 +1,16 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # -wheel==0.45.0 +packaging==26.0 + # via wheel +wheel==0.46.3 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==24.2 - # via - # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt - # -r requirements/pip.in -setuptools==75.4.0 +pip==26.0.1 + # via -r requirements/pip.in +setuptools==82.0.0 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index e427577..8f4e0b5 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -8,52 +8,48 @@ appdirs==1.4.4 # via # -r requirements/test.txt # fs -arrow==1.3.0 +arrow==1.4.0 # via # -r requirements/test.txt # cookiecutter -asgiref==3.8.1 +asgiref==3.11.1 # via # -r requirements/test.txt # django -astroid==3.3.5 +astroid==4.0.4 # via # pylint # pylint-celery -attrs==24.2.0 +attrs==25.4.0 # via # -r requirements/test.txt # openedx-events -binaryornot==0.4.4 +binaryornot==0.5.0 # via # -r requirements/test.txt # cookiecutter -boto3==1.35.58 +boto3==1.42.63 # via # -r requirements/test.txt # fs-s3fs -botocore==1.35.58 +botocore==1.42.63 # via # -r requirements/test.txt # boto3 # s3transfer -certifi==2024.8.30 +certifi==2026.2.25 # via # -r requirements/test.txt # requests -cffi==1.17.1 +cffi==2.0.0 # via # -r requirements/test.txt # pynacl -chardet==5.2.0 - # via - # -r requirements/test.txt - # binaryornot -charset-normalizer==3.4.0 +charset-normalizer==3.4.5 # via # -r requirements/test.txt # requests -click==8.1.7 +click==8.3.1 # via # -r requirements/test.txt # click-log @@ -63,21 +59,21 @@ click==8.1.7 # edx-lint click-log==0.4.0 # via edx-lint -code-annotations==1.8.0 +code-annotations==2.3.2 # via # -r requirements/test.txt # edx-lint -cookiecutter==2.6.0 +cookiecutter==2.7.1 # via # -r requirements/test.txt # xblock-sdk -coverage[toml]==7.6.4 +coverage[toml]==7.13.4 # via # -r requirements/test.txt # pytest-cov -dill==0.3.9 +dill==0.4.1 # via pylint -django==4.2.16 +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -96,32 +92,33 @@ django-crum==0.7.9 # edx-django-utils django-model-utils==5.0.0 # via -r requirements/test.txt -django-waffle==4.1.0 +django-waffle==5.0.0 # via # -r requirements/test.txt # edx-django-utils -djangorestframework==3.15.2 +djangorestframework==3.16.1 # via -r requirements/test.txt -dnspython==2.7.0 +dnspython==2.8.0 # via # -r requirements/test.txt # pymongo -edx-ccx-keys==1.3.0 +edx-ccx-keys==2.0.2 # via # -r requirements/test.txt # openedx-events -edx-django-utils==7.0.0 +edx-django-utils==8.0.1 # via # -r requirements/test.txt # openedx-events -edx-lint==5.4.1 +edx-lint==5.6.0 # via -r requirements/quality.in -edx-opaque-keys[django]==2.11.0 +edx-opaque-keys[django]==3.1.0 # via # -r requirements/test.txt # edx-ccx-keys # openedx-events -fastavro==1.9.7 + # openedx-filters +fastavro==1.12.1 # via # -r requirements/test.txt # openedx-events @@ -136,44 +133,44 @@ fs-s3fs==1.1.1 # -r requirements/test.txt # openedx-django-pyfs # xblock-sdk -idna==3.10 +idna==3.11 # via # -r requirements/test.txt # requests -iniconfig==2.0.0 +iniconfig==2.3.0 # via # -r requirements/test.txt # pytest -isort==5.13.2 +isort==8.0.1 # via # -r requirements/quality.in # pylint -jinja2==3.1.4 +jinja2==3.1.6 # via # -r requirements/test.txt # code-annotations # cookiecutter -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/test.txt # boto3 # botocore lazy==1.6 # via -r requirements/test.txt -lxml==5.3.0 +lxml==6.0.2 # via # -r requirements/test.txt # xblock # xblock-sdk -mako==1.3.6 +mako==1.3.10 # via # -r requirements/test.txt # xblock -markdown-it-py==3.0.0 +markdown-it-py==4.0.0 # via # -r requirements/test.txt # rich -markupsafe==3.0.2 +markupsafe==3.0.3 # via # -r requirements/test.txt # jinja2 @@ -185,49 +182,43 @@ 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 -newrelic==10.2.0 - # via - # -r requirements/test.txt - # edx-django-utils -openedx-django-pyfs==3.7.0 +openedx-django-pyfs==3.8.0 # via -r requirements/test.txt -openedx-events==9.15.0 +openedx-events==10.5.0 # via -r requirements/test.txt -openedx-filters==1.11.0 +openedx-filters==2.1.0 # via -r requirements/test.txt -packaging==24.2 +packaging==26.0 # via # -r requirements/test.txt # pytest -pbr==6.1.0 - # via - # -r requirements/test.txt - # stevedore -platformdirs==4.3.6 +platformdirs==4.9.4 # via pylint -pluggy==1.5.0 +pluggy==1.6.0 # via # -r requirements/test.txt # pytest -psutil==6.1.0 + # pytest-cov +psutil==7.2.2 # via # -r requirements/test.txt # edx-django-utils -pycodestyle==2.12.1 +pycodestyle==2.14.0 # via -r requirements/quality.in -pycparser==2.22 +pycparser==3.0 # via # -r requirements/test.txt # cffi pydocstyle==6.3.0 # via -r requirements/quality.in -pygments==2.18.0 +pygments==2.19.2 # via # -r requirements/test.txt + # pytest # rich -pylint==3.3.1 +pylint==4.0.5 # via # edx-lint # pylint-celery @@ -235,17 +226,17 @@ pylint==3.3.1 # pylint-plugin-utils pylint-celery==0.3 # via edx-lint -pylint-django==2.6.1 +pylint-django==2.7.0 # via edx-lint -pylint-plugin-utils==0.8.2 +pylint-plugin-utils==0.9.0 # via # pylint-celery # pylint-django -pymongo==4.10.1 +pymongo==4.16.0 # via # -r requirements/test.txt # edx-opaque-keys -pynacl==1.5.0 +pynacl==1.6.2 # via # -r requirements/test.txt # edx-django-utils @@ -253,14 +244,14 @@ pypng==0.20220715.0 # via # -r requirements/test.txt # xblock-sdk -pytest==8.3.3 +pytest==9.0.2 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==6.0.0 +pytest-cov==7.0.0 # via -r requirements/test.txt -pytest-django==4.9.0 +pytest-django==4.12.0 # via -r requirements/test.txt python-dateutil==2.9.0.post0 # via @@ -273,35 +264,35 @@ python-slugify==8.0.4 # -r requirements/test.txt # code-annotations # cookiecutter -pytz==2024.2 +pytz==2026.1.post1 # via # -r requirements/test.txt # xblock -pyyaml==6.0.2 +pyyaml==6.0.3 # via # -r requirements/test.txt # code-annotations # cookiecutter # xblock -requests==2.32.3 +requests==2.32.5 # via # -r requirements/test.txt # cookiecutter # xblock-sdk -rich==13.9.4 +rich==14.3.3 # via # -r requirements/test.txt # cookiecutter -s3transfer==0.10.3 +s3transfer==0.16.0 # via # -r requirements/test.txt # boto3 -simplejson==3.19.3 +simplejson==3.20.2 # via # -r requirements/test.txt # xblock # xblock-sdk -six==1.16.0 +six==1.17.0 # via # -r requirements/test.txt # edx-ccx-keys @@ -309,13 +300,13 @@ six==1.16.0 # fs # fs-s3fs # python-dateutil -snowballstemmer==2.2.0 +snowballstemmer==3.0.1 # via pydocstyle -sqlparse==0.5.1 +sqlparse==0.5.5 # via # -r requirements/test.txt # django -stevedore==5.3.0 +stevedore==5.7.0 # via # -r requirements/test.txt # code-annotations @@ -325,22 +316,22 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomlkit==0.13.2 +tomlkit==0.14.0 # via pylint -types-python-dateutil==2.9.0.20241003 +typing-extensions==4.15.0 # via # -r requirements/test.txt - # arrow -typing-extensions==4.12.2 + # edx-opaque-keys +tzdata==2025.3 # via # -r requirements/test.txt - # edx-opaque-keys -urllib3==2.2.3 + # arrow +urllib3==2.6.3 # via # -r requirements/test.txt # botocore # requests -web-fragments==2.2.0 +web-fragments==3.1.0 # via # -r requirements/test.txt # xblock @@ -350,11 +341,11 @@ webob==1.8.9 # -r requirements/test.txt # xblock # xblock-sdk -xblock==5.1.0 +xblock==5.3.0 # via # -r requirements/test.txt # xblock-sdk -xblock-sdk==0.12.0 +xblock-sdk==0.13.0 # via -r requirements/test.txt # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/test.txt b/requirements/test.txt index 7447fa0..e852e18 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -8,48 +8,46 @@ appdirs==1.4.4 # via # -r requirements/base.txt # fs -arrow==1.3.0 +arrow==1.4.0 # via cookiecutter -asgiref==3.8.1 +asgiref==3.11.1 # via # -r requirements/base.txt # django -attrs==24.2.0 +attrs==25.4.0 # via # -r requirements/base.txt # openedx-events -binaryornot==0.4.4 +binaryornot==0.5.0 # via cookiecutter -boto3==1.35.58 +boto3==1.42.63 # via # -r requirements/base.txt # fs-s3fs -botocore==1.35.58 +botocore==1.42.63 # via # -r requirements/base.txt # boto3 # s3transfer -certifi==2024.8.30 +certifi==2026.2.25 # via requests -cffi==1.17.1 +cffi==2.0.0 # via # -r requirements/base.txt # pynacl -chardet==5.2.0 - # via binaryornot -charset-normalizer==3.4.0 +charset-normalizer==3.4.5 # via requests -click==8.1.7 +click==8.3.1 # via # -r requirements/base.txt # code-annotations # cookiecutter # edx-django-utils -code-annotations==1.8.0 +code-annotations==2.3.2 # via -r requirements/test.in -cookiecutter==2.6.0 +cookiecutter==2.7.1 # via xblock-sdk -coverage[toml]==7.6.4 +coverage[toml]==7.13.4 # via pytest-cov # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt @@ -69,30 +67,31 @@ django-crum==0.7.9 # edx-django-utils django-model-utils==5.0.0 # via -r requirements/base.txt -django-waffle==4.1.0 +django-waffle==5.0.0 # via # -r requirements/base.txt # edx-django-utils -djangorestframework==3.15.2 +djangorestframework==3.16.1 # via -r requirements/test.in -dnspython==2.7.0 +dnspython==2.8.0 # via # -r requirements/base.txt # pymongo -edx-ccx-keys==1.3.0 +edx-ccx-keys==2.0.2 # via # -r requirements/base.txt # openedx-events -edx-django-utils==7.0.0 +edx-django-utils==8.0.1 # via # -r requirements/base.txt # openedx-events -edx-opaque-keys[django]==2.11.0 +edx-opaque-keys[django]==3.1.0 # via # -r requirements/base.txt # edx-ccx-keys # openedx-events -fastavro==1.9.7 + # openedx-filters +fastavro==1.12.1 # via # -r requirements/base.txt # openedx-events @@ -107,83 +106,79 @@ fs-s3fs==1.1.1 # -r requirements/base.txt # openedx-django-pyfs # xblock-sdk -idna==3.10 +idna==3.11 # via requests -iniconfig==2.0.0 +iniconfig==2.3.0 # via pytest -jinja2==3.1.4 +jinja2==3.1.6 # via # code-annotations # cookiecutter -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/base.txt # boto3 # botocore lazy==1.6 # via -r requirements/base.txt -lxml==5.3.0 +lxml==6.0.2 # via # xblock # xblock-sdk -mako==1.3.6 +mako==1.3.10 # via xblock -markdown-it-py==3.0.0 +markdown-it-py==4.0.0 # via rich -markupsafe==3.0.2 +markupsafe==3.0.3 # via # jinja2 # mako # xblock mdurl==0.1.2 # via markdown-it-py -mock==5.1.0 +mock==5.2.0 # via -r requirements/test.in -newrelic==10.2.0 - # via - # -r requirements/base.txt - # edx-django-utils -openedx-django-pyfs==3.7.0 +openedx-django-pyfs==3.8.0 # via -r requirements/base.txt -openedx-events==9.15.0 +openedx-events==10.5.0 # via -r requirements/base.txt -openedx-filters==1.11.0 +openedx-filters==2.1.0 # via -r requirements/base.txt -packaging==24.2 +packaging==26.0 # via pytest -pbr==6.1.0 +pluggy==1.6.0 # via - # -r requirements/base.txt - # stevedore -pluggy==1.5.0 - # via pytest -psutil==6.1.0 + # pytest + # pytest-cov +psutil==7.2.2 # via # -r requirements/base.txt # edx-django-utils -pycparser==2.22 +pycparser==3.0 # via # -r requirements/base.txt # cffi -pygments==2.18.0 - # via rich -pymongo==4.10.1 +pygments==2.19.2 + # via + # pytest + # rich +pymongo==4.16.0 # via # -r requirements/base.txt # edx-opaque-keys -pynacl==1.5.0 +pynacl==1.6.2 # via # -r requirements/base.txt # edx-django-utils pypng==0.20220715.0 # via xblock-sdk -pytest==8.3.3 +pytest==9.0.2 # via # pytest-cov # pytest-django -pytest-cov==6.0.0 +pytest-cov==7.0.0 # via -r requirements/test.in -pytest-django==4.9.0 +pytest-django==4.12.0 # via -r requirements/test.in python-dateutil==2.9.0.post0 # via @@ -195,39 +190,39 @@ python-slugify==8.0.4 # via # code-annotations # cookiecutter -pytz==2024.2 +pytz==2026.1.post1 # via xblock -pyyaml==6.0.2 +pyyaml==6.0.3 # via # code-annotations # cookiecutter # xblock -requests==2.32.3 +requests==2.32.5 # via # cookiecutter # xblock-sdk -rich==13.9.4 +rich==14.3.3 # via cookiecutter -s3transfer==0.10.3 +s3transfer==0.16.0 # via # -r requirements/base.txt # boto3 -simplejson==3.19.3 +simplejson==3.20.2 # via # xblock # xblock-sdk -six==1.16.0 +six==1.17.0 # via # -r requirements/base.txt # edx-ccx-keys # fs # fs-s3fs # python-dateutil -sqlparse==0.5.1 +sqlparse==0.5.5 # via # -r requirements/base.txt # django -stevedore==5.3.0 +stevedore==5.7.0 # via # -r requirements/base.txt # code-annotations @@ -235,18 +230,18 @@ stevedore==5.3.0 # edx-opaque-keys text-unidecode==1.3 # via python-slugify -types-python-dateutil==2.9.0.20241003 - # via arrow -typing-extensions==4.12.2 +typing-extensions==4.15.0 # via # -r requirements/base.txt # edx-opaque-keys -urllib3==2.2.3 +tzdata==2025.3 + # via arrow +urllib3==2.6.3 # via # -r requirements/base.txt # botocore # requests -web-fragments==2.2.0 +web-fragments==3.1.0 # via # xblock # xblock-sdk @@ -254,9 +249,9 @@ webob==1.8.9 # via # xblock # xblock-sdk -xblock==5.1.0 +xblock==5.3.0 # via xblock-sdk -xblock-sdk==0.12.0 +xblock-sdk==0.13.0 # via -r requirements/test.in # The following packages are considered to be unsafe in a requirements file: From f10add412cce2ad4be219bf7f20f2cb2b6a97881 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Sat, 7 Mar 2026 19:50:22 -0500 Subject: [PATCH 3/4] chore: bump version to 1.0.0 Co-Authored-By: Claude Sonnet 4.6 --- skill_tagging/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skill_tagging/__init__.py b/skill_tagging/__init__.py index 28f2c89..5c896be 100644 --- a/skill_tagging/__init__.py +++ b/skill_tagging/__init__.py @@ -2,7 +2,7 @@ Django app plugin for fetching and verifying tags for xblock skills. """ -__version__ = '0.4.0' +__version__ = '1.0.0' # pylint: disable=invalid-name default_app_config = 'skill_tagging.apps.SkillTaggingConfig' From 1de6107297b0cc68e697fa615bbda042d11a9cc1 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Fri, 13 Mar 2026 12:39:36 -0400 Subject: [PATCH 4/4] fix: remove no-op _ function, use gettext for translations The no-op `def _(text)` was shadowing the `gettext as _` import, causing pylint 4.0 to flag E0102 (function-redefined). Remove the no-op so the field display_name and help strings are properly translated at runtime via gettext. Co-Authored-By: Claude Sonnet 4.6 --- skill_tagging/skill_tagging_mixin.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/skill_tagging/skill_tagging_mixin.py b/skill_tagging/skill_tagging_mixin.py index 9225989..e6346ea 100644 --- a/skill_tagging/skill_tagging_mixin.py +++ b/skill_tagging/skill_tagging_mixin.py @@ -21,11 +21,6 @@ PAGE_SIZE = getattr(settings, "TAXONOMY_API_SKILL_PAGE_SIZE", 100) -# Make '_' a no-op so we can scrape strings -def _(text): - return text - - class SkillTaggingMixin(XBlockMixin): """ XBlock Mixin for fetching and verifying skill tags