From 9a8ec7e69da572684e869fa9534cf2e5770cbd43 Mon Sep 17 00:00:00 2001 From: Steven Giron Date: Mon, 30 Mar 2026 23:26:01 -0500 Subject: [PATCH 1/6] feat: add support for Python 3.11/3.12 and Django 4.2/5.2 --- .github/workflows/ci.yml | 23 ++- .github/workflows/pypi-publish.yml | 11 +- CHANGELOG.rst | 34 ++++ openedx_cas/__init__.py | 2 +- pylintrc | 118 +----------- requirements/base.txt | 50 +++--- requirements/ci.txt | 56 +++--- requirements/constraints.txt | 2 +- requirements/dev.txt | 279 ++++++++++++++--------------- requirements/doc.txt | 202 ++++++++++----------- requirements/pip-tools.txt | 26 ++- requirements/quality.txt | 201 +++++++++------------ requirements/test.txt | 96 +++++----- setup.cfg | 2 +- setup.py | 19 +- tox.ini | 10 +- 16 files changed, 501 insertions(+), 630 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e19dc86..2aeb22a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,30 +7,29 @@ on: branches: - '**' - jobs: run_tests: name: tests - runs-on: ${{ matrix.os }} + runs-on: ubuntu-20.04 strategy: matrix: - os: [ubuntu-20.04] - python-version: ['3.8'] - toxenv: [quality, django32, django40] - + toxenv: [ + 'py311-django42', + 'py311-django52', + 'py312-django42', + 'py312-django52', + 'quality' + ] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: setup python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: - python-version: ${{ matrix.python-version }} - + python-version: ${{ matrix.toxenv == 'py311-django42' && '3.11' || matrix.toxenv == 'py311-django52' && '3.11' || matrix.toxenv == 'py312-django42' && '3.12' || matrix.toxenv == 'py312-django52' && '3.12' || '3.11' }} - name: Install pip run: pip install -r requirements/pip.txt - - name: Install Dependencies run: pip install -r requirements/ci.txt - - name: Run Tests env: TOXENV: ${{ matrix.toxenv }} diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index a22e9e6..5b18295 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -5,24 +5,19 @@ on: types: [published] jobs: - push: runs-on: ubuntu-20.04 - steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: setup python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: - python-version: 3.8 - + python-version: 3.11 - name: Install pip run: pip install -r requirements/pip.txt - - name: Build package run: python setup.py sdist bdist_wheel - - name: Publish to PyPi uses: pypa/gh-action-pypi-publish@master with: diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 8281d37..4bf1e71 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,6 +14,40 @@ Change Log Unreleased ~~~~~~~~~~ +[0.3.0] - 2026-03-30 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Added +_____ + +* Support for Python 3.11 and 3.12. +* Support for Django 4.2 and 5.2 (compatible with Open edX Teak). +* New GitHub Actions test matrix with the supported Python/Django combinations. +* Set `DJANGO_SETTINGS_MODULE` in the `quality` tox environment to avoid pylint configuration errors. + +Changed +_______ + +* Updated `social-auth-core` from 4.1.0 to 4.8.5. +* Upgraded all dependencies via `make upgrade`. +* Updated GitHub workflows (`ci.yml`, `pypi-publish.yml`) to use recent action versions. +* Updated `tox.ini` to test against the new Python and Django versions. +* Updated classifiers in `setup.py` to reflect Python 3.11/3.12 and Django 4.2/5.2. +* Updated `README.rst` compatibility table to include Teak. + +Removed +_______ + +* Dropped support for Python 3.8. +* Dropped support for Django 2.2, 3.2, and 4.0. +* Removed obsolete pylint options (regenerated `.pylintrc` with edx-lint). + +Fixed +_____ + +* Fixed pylint warnings in `setup.py` by using `with` statements for file operations. +* Fixed `tox.ini` to allow external commands in the `quality` environment. + [0.2.3] - 2022-08-11 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/openedx_cas/__init__.py b/openedx_cas/__init__.py index f1444e0..31905a6 100644 --- a/openedx_cas/__init__.py +++ b/openedx_cas/__init__.py @@ -2,6 +2,6 @@ Support for Certralized Authentication System (CAS) in the Open edX authentication flows. """ -__version__ = '0.2.4' +__version__ = '0.3.0' default_app_config = 'openedx_cas.apps.OpenedxCasConfig' # pylint: disable=invalid-name diff --git a/pylintrc b/pylintrc index 5a21140..c34e857 100644 --- a/pylintrc +++ b/pylintrc @@ -2,7 +2,7 @@ # ** DO NOT EDIT THIS FILE ** # *************************** # -# This file was generated by edx-lint: https://github.com/edx/edx-lint +# This file was generated by edx-lint: https://github.com/openedx/edx-lint # # If you want to change this file, you have two choices, depending on whether # you want to make a local change that applies only to this repo, or whether @@ -28,7 +28,7 @@ # CENTRAL CHANGE: # # 1. Edit the pylintrc file in the edx-lint repo at -# https://github.com/edx/edx-lint/blob/master/edx_lint/files/pylintrc +# https://github.com/openedx/edx-lint/blob/master/edx_lint/files/pylintrc # # 2. install the updated version of edx-lint (in edx-lint): # @@ -64,10 +64,10 @@ # SERIOUSLY. # # ------------------------------ -# Generated by edx-lint version: 5.2.1 +# Generated by edx-lint version: 6.0.0 # ------------------------------ [MASTER] -ignore = migrations +ignore = persistent = yes load-plugins = edx_lint.pylint,pylint_django,pylint_celery @@ -102,20 +102,12 @@ enable = cell-var-from-loop, confusing-with-statement, continue-in-finally, - cyclical-import, dangerous-default-value, - dict-items-not-iterating, - dict-keys-not-iterating, - dict-values-not-iterating, duplicate-argument-name, duplicate-bases, duplicate-except, duplicate-key, - eq-without-hash, - exception-escape, - exception-message-attribute, expression-not-assigned, - filter-builtin-not-iterating, format-combined-specification, format-needs-mapping, function-redefined, @@ -123,33 +115,26 @@ enable = import-error, import-self, inconsistent-mro, - indexing-exception, inherit-non-class, init-is-generator, invalid-all-object, - invalid-encoded-data, invalid-format-index, invalid-length-returned, invalid-sequence-index, invalid-slice-index, invalid-slots-object, invalid-slots, - invalid-str-codec, invalid-unary-operand-type, logging-too-few-args, logging-too-many-args, logging-unsupported-format, lost-exception, - map-builtin-not-iterating, method-hidden, misplaced-bare-raise, misplaced-future, missing-format-argument-key, missing-format-attribute, missing-format-string-key, - missing-super-argument, - mixed-fomat-string, - model-unicode-not-callable, no-member, no-method-argument, no-name-in-module, @@ -158,8 +143,6 @@ enable = non-iterator-returned, non-parent-method-called, nonexistent-operator, - nonimplemented-raised, - nonstandard-exception, not-a-mapping, not-an-iterable, not-callable, @@ -167,35 +150,25 @@ enable = not-in-loop, pointless-statement, pointless-string-statement, - property-on-old-class, raising-bad-type, raising-non-exception, - raising-string, - range-builtin-not-iterating, redefined-builtin, - redefined-in-handler, redefined-outer-name, - redefined-variable-type, redundant-keyword-arg, - relative-import, repeated-keyword, return-arg-in-generator, return-in-init, return-outside-function, signature-differs, - slots-on-old-class, super-init-not-called, super-method-not-called, - super-on-old-class, syntax-error, - sys-max-int, test-inherits-tests, too-few-format-args, too-many-format-args, too-many-function-args, translation-of-non-string, truncated-format-string, - unbalance-tuple-unpacking, undefined-all-variable, undefined-loop-variable, undefined-variable, @@ -211,11 +184,8 @@ enable = used-before-assignment, using-constant-test, yield-outside-function, - zip-builtin-not-iterating, astroid-error, - django-not-available-placeholder, - django-not-available, fatal, method-check-failed, parse-error, @@ -237,7 +207,6 @@ enable = bad-classmethod-argument, bad-mcs-classmethod-argument, bad-mcs-method-argument, - bad-whitespace, bare-except, broad-except, consider-iterating-dictionary, @@ -247,16 +216,10 @@ enable = literal-used-as-attribute, logging-format-interpolation, logging-not-lazy, - metaclass-assignment, - model-has-unicode, - model-missing-unicode, - model-no-explicit-unicode, multiple-imports, multiple-statements, no-classmethod-decorator, no-staticmethod-decorator, - old-raise-syntax, - old-style-class, protected-access, redundant-unittest-assert, reimported, @@ -284,7 +247,6 @@ enable = wrong-import-position, missing-final-newline, - mixed-indentation, mixed-line-endings, trailing-newlines, trailing-whitespace, @@ -295,26 +257,9 @@ enable = deprecated-pragma, unrecognized-inline-option, useless-suppression, - - cmp-method, - coerce-method, - delslice-method, - dict-iter-method, - dict-view-method, - div-method, - getslice-method, - hex-method, - idiv-method, - next-method-called, - next-method-defined, - nonzero-method, - oct-method, - rdiv-method, - setslice-method, - using-cmp-argument, disable = - bad-continuation, bad-indentation, + broad-exception-raised, consider-using-f-string, duplicate-code, file-ignored, @@ -322,12 +267,7 @@ disable = global-statement, invalid-name, locally-disabled, - locally-enabled, - lowercase-l-suffix, - misplaced-comparison-constant, no-else-return, - no-init, - no-self-use, suppressed-message, too-few-public-methods, too-many-ancestors, @@ -346,57 +286,14 @@ disable = feature-toggle-needs-doc, illegal-waffle-usage, - apply-builtin, - backtick, - bad-python3-import, - basestring-builtin, - buffer-builtin, - cmp-builtin, - coerce-builtin, - deprecated-itertools-function, - deprecated-operator-function, - deprecated-str-translate-call, - deprecated-string-function, - deprecated-sys-function, - deprecated-types-field, - deprecated-urllib-function, - execfile-builtin, - file-builtin, - import-star-module-level, - input-builtin, - intern-builtin, - long-builtin, - long-suffix, - no-absolute-import, - non-ascii-bytes-literal, - old-division, - old-ne-operator, - old-octal-literal, - parameter-unpacking, - print-statement, - raw_input-builtin, - reduce-builtin, - reload-builtin, - round-builtin, - standarderror-builtin, - unichr-builtin, - unicode-builtin, - unpacking-in-except, - xrange-builtin, - logging-fstring-interpolation, - invalid-name, - django-not-configured, - consider-using-with, [REPORTS] output-format = text -files-output = no reports = no score = no [BASIC] -bad-functions = map,filter,apply,input module-rgx = (([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ const-rgx = (([A-Z_][A-Z0-9_]*)|(__.*__)|log|urlpatterns)$ class-rgx = [A-Z_][a-zA-Z0-9]+$ @@ -416,7 +313,6 @@ docstring-min-length = 5 max-line-length = 120 ignore-long-lines = ^\s*(# )?((?)|(\.\. \w+: .*))$ single-line-if-stmt = no -no-space-check = trailing-comma,dict-separator max-module-lines = 1000 indent-string = ' ' @@ -485,6 +381,6 @@ ext-import-graph = int-import-graph = [EXCEPTIONS] -overgeneral-exceptions = Exception +overgeneral-exceptions = builtins.Exception -# 3faeb9312e8a3ab195a6d7b629bea84ef5af7555 +# 433a7a2a68f1e8d5e770afd2623400a8fecd2fd8 diff --git a/requirements/base.txt b/requirements/base.txt index 54937f2..41dafbf 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,62 +1,60 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: # # make upgrade # -asgiref==3.5.2 +asgiref==3.11.1 # via django -certifi==2022.6.15 +certifi==2026.2.25 # via requests -cffi==1.15.1 +cffi==2.0.0 # via cryptography -charset-normalizer==2.1.0 +charset-normalizer==3.4.6 # via requests -cryptography==37.0.4 - # via social-auth-core +cryptography==46.0.6 + # via pyjwt defusedxml==0.7.1 # via # python3-openid # social-auth-core -django==3.2.14 +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.in # django-cas-ng -django-cas-ng==4.3.0 +django-cas-ng==5.1.0 # via -r requirements/base.in -idna==3.3 +idna==3.11 # via requests -lxml==4.9.1 +lxml==6.0.2 # via python-cas -oauthlib==3.2.0 +oauthlib==3.3.1 # via # requests-oauthlib # social-auth-core -pycparser==2.21 +pycparser==3.0 # via cffi -pyjwt==2.4.0 - # via social-auth-core -python-cas==1.6.0 +pyjwt[crypto]==2.12.1 + # via + # pyjwt + # social-auth-core +python-cas==1.7.1 # via django-cas-ng python3-openid==3.2.0 # via social-auth-core -pytz==2022.1 - # via django -requests==2.28.1 +requests==2.33.1 # via # python-cas # requests-oauthlib # social-auth-core -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via social-auth-core -six==1.16.0 - # via python-cas -social-auth-core==4.1.0 +social-auth-core==4.8.5 # via # -c requirements/constraints.txt # -r requirements/base.in -sqlparse==0.4.2 +sqlparse==0.5.5 # via django -urllib3==1.26.10 +urllib3==2.6.3 # via requests diff --git a/requirements/ci.txt b/requirements/ci.txt index 6e234ce..6da3535 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,46 +1,54 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: # # make upgrade # -certifi==2022.6.15 +cachetools==7.0.5 + # via tox +certifi==2026.2.25 # via requests -charset-normalizer==2.1.0 +charset-normalizer==3.4.6 # via requests -codecov==2.1.12 +codecov==2.1.13 # via -r requirements/ci.in -coverage==6.4.2 +colorama==0.4.6 + # via tox +coverage==7.13.5 # via codecov -distlib==0.3.5 +distlib==0.4.0 # via virtualenv -filelock==3.7.1 +filelock==3.25.2 # via + # python-discovery # tox # virtualenv -idna==3.3 +idna==3.11 # via requests -packaging==21.3 - # via tox -platformdirs==2.5.2 - # via virtualenv -pluggy==1.0.0 +packaging==26.0 + # via + # pyproject-api + # tox +platformdirs==4.9.4 + # via + # python-discovery + # tox + # virtualenv +pluggy==1.6.0 # via tox -py==1.11.0 +pyproject-api==1.10.0 # via tox -pyparsing==3.0.9 - # via packaging -requests==2.28.1 - # via codecov -six==1.16.0 +python-discovery==1.2.1 # via # tox # virtualenv -toml==0.10.2 +requests==2.33.1 + # via codecov +tomli-w==1.2.0 # via tox -tox==3.25.1 +tox==4.52.0 # via -r requirements/ci.in -urllib3==1.26.10 +urllib3==2.6.3 # via requests -virtualenv==20.15.1 +virtualenv==21.2.0 # via tox diff --git a/requirements/constraints.txt b/requirements/constraints.txt index f57ab7b..20c3a21 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -10,4 +10,4 @@ # Common constraints for edx repos -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt -social-auth-core==4.1.0 \ No newline at end of file +social-auth-core==4.8.5 diff --git a/requirements/dev.txt b/requirements/dev.txt index 0740bca..de7f301 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,47 +1,47 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: # # make upgrade # -asgiref==3.5.2 +asgiref==3.11.1 # via # -r requirements/quality.txt # django -astroid==2.11.7 +astroid==4.0.4 # via # -r requirements/quality.txt # pylint # pylint-celery -attrs==21.4.0 +backports-tarfile==1.2.0 # via # -r requirements/quality.txt - # pytest -bleach==5.0.1 - # via - # -r requirements/quality.txt - # readme-renderer -build==0.8.0 + # jaraco-context +build==1.4.2 # via # -r requirements/pip-tools.txt # pip-tools -certifi==2022.6.15 +cachetools==7.0.5 + # via + # -r requirements/ci.txt + # tox +certifi==2026.2.25 # via # -r requirements/ci.txt # -r requirements/quality.txt # requests -cffi==1.15.1 +cffi==2.0.0 # via # -r requirements/quality.txt # cryptography -chardet==5.0.0 +chardet==7.4.0.post2 # via diff-cover -charset-normalizer==2.1.0 +charset-normalizer==3.4.6 # via # -r requirements/ci.txt # -r requirements/quality.txt # requests -click==8.1.3 +click==8.3.1 # via # -r requirements/pip-tools.txt # -r requirements/quality.txt @@ -53,106 +53,126 @@ click-log==0.4.0 # via # -r requirements/quality.txt # edx-lint -code-annotations==1.3.0 +code-annotations==2.3.2 # via # -r requirements/quality.txt # edx-lint -codecov==2.1.12 +codecov==2.1.13 # via -r requirements/ci.txt -commonmark==0.9.1 +colorama==0.4.6 # via - # -r requirements/quality.txt - # rich -coverage[toml]==6.4.2 + # -r requirements/ci.txt + # tox +coverage[toml]==7.13.5 # via # -r requirements/ci.txt # -r requirements/quality.txt # codecov # pytest-cov -cryptography==37.0.4 +cryptography==46.0.6 # via # -r requirements/quality.txt + # pyjwt # secretstorage - # social-auth-core -ddt==1.5.0 +ddt==1.7.2 # via -r requirements/quality.txt defusedxml==0.7.1 # via # -r requirements/quality.txt # python3-openid # social-auth-core -diff-cover==6.5.1 +diff-cover==10.2.0 # via -r requirements/dev.in -dill==0.3.5.1 +dill==0.4.1 # via # -r requirements/quality.txt # pylint -distlib==0.3.5 +distlib==0.4.0 # via # -r requirements/ci.txt # virtualenv -django==3.2.14 +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/quality.txt # django-cas-ng # edx-i18n-tools -django-cas-ng==4.3.0 +django-cas-ng==5.1.0 # via -r requirements/quality.txt -docutils==0.19 +docutils==0.22.4 # via # -r requirements/quality.txt # readme-renderer -edx-i18n-tools==0.9.1 +edx-i18n-tools==2.0.0 # via -r requirements/dev.in -edx-lint==5.2.4 +edx-lint==6.0.0 # via -r requirements/quality.txt -filelock==3.7.1 +filelock==3.25.2 # via # -r requirements/ci.txt + # python-discovery # tox # virtualenv -idna==3.3 +id==1.6.1 + # via + # -r requirements/quality.txt + # twine +idna==3.11 # via # -r requirements/ci.txt # -r requirements/quality.txt # requests -importlib-metadata==4.12.0 +importlib-metadata==9.0.0 # via # -r requirements/quality.txt # keyring - # twine -iniconfig==1.1.1 +iniconfig==2.3.0 # via # -r requirements/quality.txt # pytest -isort==5.10.1 +isort==8.0.1 # via # -r requirements/quality.txt # pylint -jeepney==0.8.0 +jaraco-classes==3.4.0 + # via + # -r requirements/quality.txt + # keyring +jaraco-context==6.1.2 + # via + # -r requirements/quality.txt + # keyring +jaraco-functools==4.4.0 + # via + # -r requirements/quality.txt + # keyring +jeepney==0.9.0 # via # -r requirements/quality.txt # keyring # secretstorage -jinja2==3.1.2 +jinja2==3.1.6 # via # -r requirements/quality.txt # code-annotations # diff-cover -keyring==23.7.0 +keyring==25.7.0 # via # -r requirements/quality.txt # twine -lazy-object-proxy==1.7.1 +lxml[html-clean]==6.0.2 # via # -r requirements/quality.txt - # astroid -lxml==4.9.1 + # edx-i18n-tools + # lxml-html-clean + # python-cas +lxml-html-clean==0.4.4 + # via lxml +markdown-it-py==4.0.0 # via # -r requirements/quality.txt - # python-cas -markupsafe==2.1.1 + # rich +markupsafe==3.0.3 # via # -r requirements/quality.txt # jinja2 @@ -160,75 +180,77 @@ mccabe==0.7.0 # via # -r requirements/quality.txt # pylint -oauthlib==3.2.0 +mdurl==0.1.2 + # via + # -r requirements/quality.txt + # markdown-it-py +more-itertools==10.8.0 + # via + # -r requirements/quality.txt + # jaraco-classes + # jaraco-functools +nh3==0.3.4 + # via + # -r requirements/quality.txt + # readme-renderer +oauthlib==3.3.1 # via # -r requirements/quality.txt # requests-oauthlib # social-auth-core -packaging==21.3 +packaging==26.0 # via # -r requirements/ci.txt # -r requirements/pip-tools.txt # -r requirements/quality.txt # build + # pyproject-api # pytest # tox -path==16.4.0 + # twine + # wheel +path==16.16.0 # via edx-i18n-tools -pbr==5.9.0 - # via - # -r requirements/quality.txt - # stevedore -pep517==0.12.0 - # via - # -r requirements/pip-tools.txt - # build -pip-tools==6.8.0 +pip-tools==7.5.3 # via -r requirements/pip-tools.txt -pkginfo==1.8.3 - # via - # -r requirements/quality.txt - # twine -platformdirs==2.5.2 +platformdirs==4.9.4 # via # -r requirements/ci.txt # -r requirements/quality.txt # pylint + # python-discovery + # tox # virtualenv -pluggy==1.0.0 +pluggy==1.6.0 # via # -r requirements/ci.txt # -r requirements/quality.txt # diff-cover # pytest + # pytest-cov # tox -polib==1.1.1 +polib==1.2.0 # via edx-i18n-tools -py==1.11.0 - # via - # -r requirements/ci.txt - # -r requirements/quality.txt - # pytest - # tox -pycodestyle==2.8.0 +pycodestyle==2.14.0 # via -r requirements/quality.txt -pycparser==2.21 +pycparser==3.0 # via # -r requirements/quality.txt # cffi -pydocstyle==6.1.1 +pydocstyle==6.3.0 # via -r requirements/quality.txt -pygments==2.12.0 +pygments==2.20.0 # via # -r requirements/quality.txt # diff-cover + # pytest # readme-renderer # rich -pyjwt==2.4.0 +pyjwt[crypto]==2.12.1 # via # -r requirements/quality.txt # social-auth-core -pylint==2.14.4 +pylint==4.0.5 # via # -r requirements/quality.txt # edx-lint @@ -239,35 +261,43 @@ pylint-celery==0.3 # via # -r requirements/quality.txt # edx-lint -pylint-django==2.5.3 +pylint-django==2.7.0 # via # -r requirements/quality.txt # edx-lint -pylint-plugin-utils==0.7 +pylint-plugin-utils==0.9.0 # via # -r requirements/quality.txt # pylint-celery # pylint-django -pyparsing==3.0.9 +pyproject-api==1.10.0 # via # -r requirements/ci.txt + # tox +pyproject-hooks==1.2.0 + # via # -r requirements/pip-tools.txt - # -r requirements/quality.txt - # packaging -pytest==7.1.2 + # build + # pip-tools +pytest==9.0.2 # via # -r requirements/quality.txt # pytest-cov # pytest-django -pytest-cov==3.0.0 +pytest-cov==7.1.0 # via -r requirements/quality.txt -pytest-django==4.5.2 +pytest-django==4.12.0 # via -r requirements/quality.txt -python-cas==1.6.0 +python-cas==1.7.1 # via # -r requirements/quality.txt # django-cas-ng -python-slugify==6.1.2 +python-discovery==1.2.1 + # via + # -r requirements/ci.txt + # tox + # virtualenv +python-slugify==8.0.4 # via # -r requirements/quality.txt # code-annotations @@ -275,20 +305,16 @@ python3-openid==3.2.0 # via # -r requirements/quality.txt # social-auth-core -pytz==2022.1 - # via - # -r requirements/quality.txt - # django -pyyaml==6.0 +pyyaml==6.0.3 # via # -r requirements/quality.txt # code-annotations # edx-i18n-tools -readme-renderer==35.0 +readme-renderer==44.0 # via # -r requirements/quality.txt # twine -requests==2.28.1 +requests==2.33.1 # via # -r requirements/ci.txt # -r requirements/quality.txt @@ -298,11 +324,11 @@ requests==2.28.1 # requests-toolbelt # social-auth-core # twine -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via # -r requirements/quality.txt # social-auth-core -requests-toolbelt==0.9.1 +requests-toolbelt==1.0.0 # via # -r requirements/quality.txt # twine @@ -310,36 +336,31 @@ rfc3986==2.0.0 # via # -r requirements/quality.txt # twine -rich==12.5.1 +rich==14.3.3 # via # -r requirements/quality.txt # twine -secretstorage==3.3.2 +secretstorage==3.5.0 # via # -r requirements/quality.txt # keyring -six==1.16.0 +six==1.17.0 # via - # -r requirements/ci.txt # -r requirements/quality.txt - # bleach # edx-lint - # python-cas - # tox - # virtualenv -snowballstemmer==2.2.0 +snowballstemmer==3.0.1 # via # -r requirements/quality.txt # pydocstyle -social-auth-core==4.1.0 +social-auth-core==4.8.5 # via # -c requirements/constraints.txt # -r requirements/quality.txt -sqlparse==0.4.2 +sqlparse==0.5.5 # via # -r requirements/quality.txt # django -stevedore==4.0.0 +stevedore==5.7.0 # via # -r requirements/quality.txt # code-annotations @@ -347,60 +368,38 @@ text-unidecode==1.3 # via # -r requirements/quality.txt # python-slugify -toml==0.10.2 +tomli-w==1.2.0 # via # -r requirements/ci.txt # tox -tomli==2.0.1 - # via - # -r requirements/pip-tools.txt - # -r requirements/quality.txt - # build - # coverage - # pep517 - # pylint - # pytest -tomlkit==0.11.1 +tomlkit==0.14.0 # via # -r requirements/quality.txt # pylint -tox==3.25.1 +tox==4.52.0 # via # -r requirements/ci.txt # tox-battery tox-battery==0.6.1 # via -r requirements/dev.in -twine==4.0.1 +twine==6.2.0 # via -r requirements/quality.txt -typing-extensions==4.3.0 - # via - # -r requirements/quality.txt - # astroid - # pylint - # rich -urllib3==1.26.10 +urllib3==2.6.3 # via # -r requirements/ci.txt # -r requirements/quality.txt + # id # requests # twine -virtualenv==20.15.1 +virtualenv==21.2.0 # via # -r requirements/ci.txt # tox -webencodings==0.5.1 - # via - # -r requirements/quality.txt - # bleach -wheel==0.37.1 +wheel==0.46.3 # via # -r requirements/pip-tools.txt # pip-tools -wrapt==1.14.1 - # via - # -r requirements/quality.txt - # astroid -zipp==3.8.1 +zipp==3.23.0 # via # -r requirements/quality.txt # importlib-metadata diff --git a/requirements/doc.txt b/requirements/doc.txt index 10a9331..f617ed5 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -1,171 +1,170 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: # # make upgrade # -alabaster==0.7.12 +alabaster==0.7.16 # via sphinx -asgiref==3.5.2 +asgiref==3.11.1 # via # -r requirements/test.txt # django -attrs==21.4.0 - # via - # -r requirements/test.txt - # pytest -babel==2.10.3 +babel==2.18.0 # via sphinx -bleach==5.0.1 - # via readme-renderer -build==0.8.0 +backports-tarfile==1.2.0 + # via jaraco-context +build==1.4.2 # via -r requirements/doc.in -certifi==2022.6.15 +certifi==2026.2.25 # via # -r requirements/test.txt # requests -cffi==1.15.1 +cffi==2.0.0 # via # -r requirements/test.txt # cryptography -charset-normalizer==2.1.0 +charset-normalizer==3.4.6 # via # -r requirements/test.txt # requests -click==8.1.3 +click==8.3.1 # via # -r requirements/test.txt # code-annotations -code-annotations==1.3.0 +code-annotations==2.3.2 # via -r requirements/test.txt -commonmark==0.9.1 - # via rich -coverage[toml]==6.4.2 +coverage[toml]==7.13.5 # via # -r requirements/test.txt # pytest-cov -cryptography==37.0.4 +cryptography==46.0.6 # via # -r requirements/test.txt + # pyjwt # secretstorage - # social-auth-core -ddt==1.5.0 +ddt==1.7.2 # via -r requirements/test.txt defusedxml==0.7.1 # via # -r requirements/test.txt # python3-openid # social-auth-core -django==3.2.14 +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt # django-cas-ng -django-cas-ng==4.3.0 +django-cas-ng==5.1.0 # via -r requirements/test.txt -doc8==0.11.2 +doc8==2.0.0 # via -r requirements/doc.in -docutils==0.18.1 +docutils==0.19 # via # doc8 # readme-renderer # restructuredtext-lint # sphinx -edx-sphinx-theme==3.0.0 +edx-sphinx-theme==3.1.0 # via -r requirements/doc.in -idna==3.3 +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==4.12.0 - # via - # keyring - # sphinx - # twine -iniconfig==1.1.1 +importlib-metadata==9.0.0 + # via keyring +iniconfig==2.3.0 # via # -r requirements/test.txt # pytest -jeepney==0.8.0 +jaraco-classes==3.4.0 + # via keyring +jaraco-context==6.1.2 + # via keyring +jaraco-functools==4.4.0 + # via keyring +jeepney==0.9.0 # via # keyring # secretstorage -jinja2==3.1.2 +jinja2==3.1.6 # via # -r requirements/test.txt # code-annotations # sphinx -keyring==23.7.0 +keyring==25.7.0 # via twine -lxml==4.9.1 +lxml==6.0.2 # via # -r requirements/test.txt # python-cas -markupsafe==2.1.1 +markdown-it-py==4.0.0 + # via rich +markupsafe==3.0.3 # via # -r requirements/test.txt # jinja2 -oauthlib==3.2.0 +mdurl==0.1.2 + # via markdown-it-py +more-itertools==10.8.0 + # via + # jaraco-classes + # jaraco-functools +nh3==0.3.4 + # via readme-renderer +oauthlib==3.3.1 # via # -r requirements/test.txt # requests-oauthlib # social-auth-core -packaging==21.3 +packaging==26.0 # via # -r requirements/test.txt # build # pytest # sphinx -pbr==5.9.0 - # via - # -r requirements/test.txt - # stevedore -pep517==0.12.0 - # via build -pkginfo==1.8.3 - # via twine -pluggy==1.0.0 - # via - # -r requirements/test.txt - # pytest -py==1.11.0 + # twine +pluggy==1.6.0 # via # -r requirements/test.txt # pytest -pycparser==2.21 + # pytest-cov +pycparser==3.0 # via # -r requirements/test.txt # cffi -pygments==2.12.0 +pygments==2.20.0 # via + # -r requirements/test.txt # doc8 + # pytest # readme-renderer # rich # sphinx -pyjwt==2.4.0 +pyjwt[crypto]==2.12.1 # via # -r requirements/test.txt # social-auth-core -pyparsing==3.0.9 - # via - # -r requirements/test.txt - # packaging -pytest==7.1.2 +pyproject-hooks==1.2.0 + # via build +pytest==9.0.2 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==3.0.0 +pytest-cov==7.1.0 # via -r requirements/test.txt -pytest-django==4.5.2 +pytest-django==4.12.0 # via -r requirements/test.txt -python-cas==1.6.0 +python-cas==1.7.1 # via # -r requirements/test.txt # django-cas-ng -python-slugify==6.1.2 +python-slugify==8.0.4 # via # -r requirements/test.txt # code-annotations @@ -173,18 +172,13 @@ python3-openid==3.2.0 # via # -r requirements/test.txt # social-auth-core -pytz==2022.1 - # via - # -r requirements/test.txt - # babel - # django -pyyaml==6.0 +pyyaml==6.0.3 # via # -r requirements/test.txt # code-annotations -readme-renderer==35.0 +readme-renderer==43.0 # via twine -requests==2.28.1 +requests==2.33.1 # via # -r requirements/test.txt # python-cas @@ -193,53 +187,49 @@ requests==2.28.1 # social-auth-core # sphinx # twine -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via # -r requirements/test.txt # social-auth-core -requests-toolbelt==0.9.1 +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==12.5.1 +rich==14.3.3 # via twine -secretstorage==3.3.2 +secretstorage==3.5.0 # via keyring -six==1.16.0 - # via - # -r requirements/test.txt - # bleach - # edx-sphinx-theme - # python-cas -snowballstemmer==2.2.0 +six==1.17.0 + # via edx-sphinx-theme +snowballstemmer==3.0.1 # via sphinx -social-auth-core==4.1.0 +social-auth-core==4.8.5 # via # -c requirements/constraints.txt # -r requirements/test.txt -sphinx==5.0.2 +sphinx==5.3.0 # via # -r requirements/doc.in # edx-sphinx-theme -sphinxcontrib-applehelp==1.0.2 +sphinxcontrib-applehelp==2.0.0 # via sphinx -sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-devhelp==2.0.0 # via sphinx -sphinxcontrib-htmlhelp==2.0.0 +sphinxcontrib-htmlhelp==2.1.0 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-qthelp==2.0.0 # via sphinx -sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib-serializinghtml==2.0.0 # via sphinx -sqlparse==0.4.2 +sqlparse==0.5.5 # via # -r requirements/test.txt # django -stevedore==4.0.0 +stevedore==5.7.0 # via # -r requirements/test.txt # code-annotations @@ -248,23 +238,13 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomli==2.0.1 - # via - # -r requirements/test.txt - # build - # coverage - # pep517 - # pytest -twine==4.0.1 +twine==6.2.0 # via -r requirements/doc.in -typing-extensions==4.3.0 - # via rich -urllib3==1.26.10 +urllib3==2.6.3 # via # -r requirements/test.txt + # id # requests # twine -webencodings==0.5.1 - # via bleach -zipp==3.8.1 +zipp==3.23.0 # via importlib-metadata diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index f49a9d4..c054b05 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -1,26 +1,24 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: # # make upgrade # -build==0.8.0 +build==1.4.2 # via pip-tools -click==8.1.3 +click==8.3.1 # via pip-tools -packaging==21.3 - # via build -pep517==0.12.0 - # via build -pip-tools==6.8.0 +packaging==26.0 + # via + # build + # wheel +pip-tools==7.5.3 # via -r requirements/pip-tools.in -pyparsing==3.0.9 - # via packaging -tomli==2.0.1 +pyproject-hooks==1.2.0 # via # build - # pep517 -wheel==0.37.1 + # pip-tools +wheel==0.46.3 # via pip-tools # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/quality.txt b/requirements/quality.txt index e5c1b0c..141340b 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -1,36 +1,32 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: # # make upgrade # -asgiref==3.5.2 +asgiref==3.11.1 # via # -r requirements/test.txt # django -astroid==2.11.7 +astroid==4.0.4 # via # pylint # pylint-celery -attrs==21.4.0 - # via - # -r requirements/test.txt - # pytest -bleach==5.0.1 - # via readme-renderer -certifi==2022.6.15 +backports-tarfile==1.2.0 + # via jaraco-context +certifi==2026.2.25 # via # -r requirements/test.txt # requests -cffi==1.15.1 +cffi==2.0.0 # via # -r requirements/test.txt # cryptography -charset-normalizer==2.1.0 +charset-normalizer==3.4.6 # via # -r requirements/test.txt # requests -click==8.1.3 +click==8.3.1 # via # -r requirements/test.txt # click-log @@ -38,121 +34,127 @@ click==8.1.3 # edx-lint click-log==0.4.0 # via edx-lint -code-annotations==1.3.0 +code-annotations==2.3.2 # via # -r requirements/test.txt # edx-lint -commonmark==0.9.1 - # via rich -coverage[toml]==6.4.2 +coverage[toml]==7.13.5 # via # -r requirements/test.txt # pytest-cov -cryptography==37.0.4 +cryptography==46.0.6 # via # -r requirements/test.txt + # pyjwt # secretstorage - # social-auth-core -ddt==1.5.0 +ddt==1.7.2 # via -r requirements/test.txt defusedxml==0.7.1 # via # -r requirements/test.txt # python3-openid # social-auth-core -dill==0.3.5.1 +dill==0.4.1 # via pylint -django==3.2.14 +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt # django-cas-ng -django-cas-ng==4.3.0 +django-cas-ng==5.1.0 # via -r requirements/test.txt -docutils==0.19 +docutils==0.22.4 # via readme-renderer -edx-lint==5.2.4 +edx-lint==6.0.0 # via -r requirements/quality.in -idna==3.3 +id==1.6.1 + # via twine +idna==3.11 # via # -r requirements/test.txt # requests -importlib-metadata==4.12.0 - # via - # keyring - # twine -iniconfig==1.1.1 +importlib-metadata==9.0.0 + # via keyring +iniconfig==2.3.0 # via # -r requirements/test.txt # pytest -isort==5.10.1 +isort==8.0.1 # via # -r requirements/quality.in # pylint -jeepney==0.8.0 +jaraco-classes==3.4.0 + # via keyring +jaraco-context==6.1.2 + # via keyring +jaraco-functools==4.4.0 + # via keyring +jeepney==0.9.0 # via # keyring # secretstorage -jinja2==3.1.2 +jinja2==3.1.6 # via # -r requirements/test.txt # code-annotations -keyring==23.7.0 +keyring==25.7.0 # via twine -lazy-object-proxy==1.7.1 - # via astroid -lxml==4.9.1 +lxml==6.0.2 # via # -r requirements/test.txt # python-cas -markupsafe==2.1.1 +markdown-it-py==4.0.0 + # via rich +markupsafe==3.0.3 # via # -r requirements/test.txt # jinja2 mccabe==0.7.0 # via pylint -oauthlib==3.2.0 +mdurl==0.1.2 + # via markdown-it-py +more-itertools==10.8.0 + # via + # jaraco-classes + # jaraco-functools +nh3==0.3.4 + # via readme-renderer +oauthlib==3.3.1 # via # -r requirements/test.txt # requests-oauthlib # social-auth-core -packaging==21.3 +packaging==26.0 # via # -r requirements/test.txt # pytest -pbr==5.9.0 - # via - # -r requirements/test.txt - # stevedore -pkginfo==1.8.3 - # via twine -platformdirs==2.5.2 + # twine +platformdirs==4.9.4 # via pylint -pluggy==1.0.0 - # via - # -r requirements/test.txt - # pytest -py==1.11.0 +pluggy==1.6.0 # via # -r requirements/test.txt # pytest -pycodestyle==2.8.0 + # pytest-cov +pycodestyle==2.14.0 # via -r requirements/quality.in -pycparser==2.21 +pycparser==3.0 # via # -r requirements/test.txt # cffi -pydocstyle==6.1.1 +pydocstyle==6.3.0 # via -r requirements/quality.in -pygments==2.12.0 +pygments==2.20.0 # via + # -r requirements/test.txt + # pytest # readme-renderer # rich -pyjwt==2.4.0 +pyjwt[crypto]==2.12.1 # via # -r requirements/test.txt # social-auth-core -pylint==2.14.4 +pylint==4.0.5 # via # edx-lint # pylint-celery @@ -160,30 +162,26 @@ pylint==2.14.4 # pylint-plugin-utils pylint-celery==0.3 # via edx-lint -pylint-django==2.5.3 +pylint-django==2.7.0 # via edx-lint -pylint-plugin-utils==0.7 +pylint-plugin-utils==0.9.0 # via # pylint-celery # pylint-django -pyparsing==3.0.9 - # via - # -r requirements/test.txt - # packaging -pytest==7.1.2 +pytest==9.0.2 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==3.0.0 +pytest-cov==7.1.0 # via -r requirements/test.txt -pytest-django==4.5.2 +pytest-django==4.12.0 # via -r requirements/test.txt -python-cas==1.6.0 +python-cas==1.7.1 # via # -r requirements/test.txt # django-cas-ng -python-slugify==6.1.2 +python-slugify==8.0.4 # via # -r requirements/test.txt # code-annotations @@ -191,17 +189,13 @@ python3-openid==3.2.0 # via # -r requirements/test.txt # social-auth-core -pytz==2022.1 - # via - # -r requirements/test.txt - # django -pyyaml==6.0 +pyyaml==6.0.3 # via # -r requirements/test.txt # code-annotations -readme-renderer==35.0 +readme-renderer==44.0 # via twine -requests==2.28.1 +requests==2.33.1 # via # -r requirements/test.txt # python-cas @@ -209,35 +203,31 @@ requests==2.28.1 # requests-toolbelt # social-auth-core # twine -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via # -r requirements/test.txt # social-auth-core -requests-toolbelt==0.9.1 +requests-toolbelt==1.0.0 # via twine rfc3986==2.0.0 # via twine -rich==12.5.1 +rich==14.3.3 # via twine -secretstorage==3.3.2 +secretstorage==3.5.0 # via keyring -six==1.16.0 - # via - # -r requirements/test.txt - # bleach - # edx-lint - # python-cas -snowballstemmer==2.2.0 +six==1.17.0 + # via edx-lint +snowballstemmer==3.0.1 # via pydocstyle -social-auth-core==4.1.0 +social-auth-core==4.8.5 # via # -c requirements/constraints.txt # -r requirements/test.txt -sqlparse==0.4.2 +sqlparse==0.5.5 # via # -r requirements/test.txt # django -stevedore==4.0.0 +stevedore==5.7.0 # via # -r requirements/test.txt # code-annotations @@ -245,32 +235,15 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomli==2.0.1 - # via - # -r requirements/test.txt - # coverage - # pylint - # pytest -tomlkit==0.11.1 +tomlkit==0.14.0 # via pylint -twine==4.0.1 +twine==6.2.0 # via -r requirements/quality.in -typing-extensions==4.3.0 - # via - # astroid - # pylint - # rich -urllib3==1.26.10 +urllib3==2.6.3 # via # -r requirements/test.txt + # id # requests # twine -webencodings==0.5.1 - # via bleach -wrapt==1.14.1 - # via astroid -zipp==3.8.1 +zipp==3.23.0 # via importlib-metadata - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements/test.txt b/requirements/test.txt index dee7971..53e7496 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,38 +1,36 @@ # -# This file is autogenerated by pip-compile with python 3.8 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: # # make upgrade # -asgiref==3.5.2 +asgiref==3.11.1 # via # -r requirements/base.txt # django -attrs==21.4.0 - # via pytest -certifi==2022.6.15 +certifi==2026.2.25 # via # -r requirements/base.txt # requests -cffi==1.15.1 +cffi==2.0.0 # via # -r requirements/base.txt # cryptography -charset-normalizer==2.1.0 +charset-normalizer==3.4.6 # via # -r requirements/base.txt # requests -click==8.1.3 +click==8.3.1 # via code-annotations -code-annotations==1.3.0 +code-annotations==2.3.2 # via -r requirements/test.in -coverage[toml]==6.4.2 +coverage[toml]==7.13.5 # via pytest-cov -cryptography==37.0.4 +cryptography==46.0.6 # via # -r requirements/base.txt - # social-auth-core -ddt==1.5.0 + # pyjwt +ddt==1.7.2 # via -r requirements/test.in defusedxml==0.7.1 # via @@ -43,100 +41,86 @@ defusedxml==0.7.1 # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt # django-cas-ng -django-cas-ng==4.3.0 +django-cas-ng==5.1.0 # via -r requirements/base.txt -idna==3.3 +idna==3.11 # via # -r requirements/base.txt # requests -iniconfig==1.1.1 +iniconfig==2.3.0 # via pytest -jinja2==3.1.2 +jinja2==3.1.6 # via code-annotations -lxml==4.9.1 +lxml==6.0.2 # via # -r requirements/base.txt # python-cas -markupsafe==2.1.1 +markupsafe==3.0.3 # via jinja2 -oauthlib==3.2.0 +oauthlib==3.3.1 # via # -r requirements/base.txt # requests-oauthlib # social-auth-core -packaging==21.3 - # via pytest -pbr==5.9.0 - # via stevedore -pluggy==1.0.0 - # via pytest -py==1.11.0 +packaging==26.0 # via pytest -pycparser==2.21 +pluggy==1.6.0 + # via + # pytest + # pytest-cov +pycparser==3.0 # via # -r requirements/base.txt # cffi -pyjwt==2.4.0 +pygments==2.20.0 + # via pytest +pyjwt[crypto]==2.12.1 # via # -r requirements/base.txt # social-auth-core -pyparsing==3.0.9 - # via packaging -pytest==7.1.2 +pytest==9.0.2 # via # pytest-cov # pytest-django -pytest-cov==3.0.0 +pytest-cov==7.1.0 # via -r requirements/test.in -pytest-django==4.5.2 +pytest-django==4.12.0 # via -r requirements/test.in -python-cas==1.6.0 +python-cas==1.7.1 # via # -r requirements/base.txt # django-cas-ng -python-slugify==6.1.2 +python-slugify==8.0.4 # via code-annotations python3-openid==3.2.0 # via # -r requirements/base.txt # social-auth-core -pytz==2022.1 - # via - # -r requirements/base.txt - # django -pyyaml==6.0 +pyyaml==6.0.3 # via code-annotations -requests==2.28.1 +requests==2.33.1 # via # -r requirements/base.txt # python-cas # requests-oauthlib # social-auth-core -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via # -r requirements/base.txt # social-auth-core -six==1.16.0 - # via - # -r requirements/base.txt - # python-cas -social-auth-core==4.1.0 +social-auth-core==4.8.5 # via # -c requirements/constraints.txt # -r requirements/base.txt -sqlparse==0.4.2 +sqlparse==0.5.5 # via # -r requirements/base.txt # django -stevedore==4.0.0 +stevedore==5.7.0 # via code-annotations text-unidecode==1.3 # via python-slugify -tomli==2.0.1 - # via - # coverage - # pytest -urllib3==1.26.10 +urllib3==2.6.3 # via # -r requirements/base.txt # requests diff --git a/setup.cfg b/setup.cfg index add9039..abf6a65 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.2.4 +current_version = 0.3.0 commit = True tag = True diff --git a/setup.py b/setup.py index bd0d83d..c791bc4 100755 --- a/setup.py +++ b/setup.py @@ -18,9 +18,10 @@ def get_version(*file_paths): version string """ filename = os.path.join(os.path.dirname(__file__), *file_paths) - version_file = open(filename, encoding="utf8").read() + with open(filename, encoding="utf8") as version_file: + version_file_content = version_file.read() version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", - version_file, re.M) + version_file_content, re.M) if version_match: return version_match.group(1) raise RuntimeError('Unable to find version string.') @@ -97,8 +98,10 @@ def is_requirement(line): os.system("git push --tags") sys.exit() -README = open(os.path.join(os.path.dirname(__file__), 'README.rst'), encoding="utf8").read() -CHANGELOG = open(os.path.join(os.path.dirname(__file__), 'CHANGELOG.rst'), encoding="utf8").read() +with open(os.path.join(os.path.dirname(__file__), 'README.rst'), encoding="utf8") as readme_file: + README = readme_file.read() +with open(os.path.join(os.path.dirname(__file__), 'CHANGELOG.rst'), encoding="utf8") as changelog_file: + CHANGELOG = changelog_file.read() setup( name='openedx-cas', @@ -113,19 +116,21 @@ def is_requirement(line): ], include_package_data=True, install_requires=load_requirements('requirements/base.in'), - python_requires=">=3.8", + python_requires=">=3.11", license="AGPL 3.0", zip_safe=False, keywords='Python Openedx', classifiers=[ 'Development Status :: 3 - Alpha', 'Framework :: Django', - 'Framework :: Django :: 2.2', + 'Framework :: Django :: 4.2', + 'Framework :: Django :: 5.2', 'Intended Audience :: Developers', 'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)', 'Natural Language :: English', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', ], entry_points={ "lms.djangoapp": [ diff --git a/tox.ini b/tox.ini index 631687a..1d5379b 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38-django{32,40}, quality +envlist = py{311,312}-django{42,52}, quality [doc8] ; D001 = Line too long @@ -36,14 +36,16 @@ norecursedirs = .* docs requirements site-packages [testenv] deps = - django32: Django>=3.2,<4.0 - django40: Django>=4.0,<4.1 + django42: Django>=4.2,<4.3 + django52: Django>=5.2,<5.3 -r{toxinidir}/requirements/test.txt commands = pytest {posargs} [testenv:quality] -whitelist_externals = +setenv = + DJANGO_SETTINGS_MODULE = openedx_cas.settings.test +allowlist_externals = make rm touch From 4e5392a2d43f54c3d6e3edfd251ad82ac5180155 Mon Sep 17 00:00:00 2001 From: Steven Giron Date: Tue, 31 Mar 2026 00:14:15 -0500 Subject: [PATCH 2/6] fix: commitlint workflow --- .github/workflows/commitlint.yml | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml index e2b0661..fc534fb 100644 --- a/.github/workflows/commitlint.yml +++ b/.github/workflows/commitlint.yml @@ -1,10 +1,25 @@ -# Run commitlint on the commit messages in a pull request. - name: Lint Commit Messages on: - - pull_request + pull_request: + +defaults: + run: + shell: bash jobs: commitlint: - uses: edx/.github/.github/workflows/commitlint.yml@master + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v4 + with: + fetch-depth: 100 + + - name: Download configuration + run: | + wget --no-verbose -O commitlint.config.mjs \ + https://raw.githubusercontent.com/openedx/edx-lint/HEAD/edx_lint/files/commitlint.config.js + + - name: Run commitlint + uses: wagoid/commitlint-github-action@v6 From 5a56827da14a86516eac719397527e723bb67f73 Mon Sep 17 00:00:00 2001 From: Steven Giron Date: Tue, 31 Mar 2026 00:20:25 -0500 Subject: [PATCH 3/6] fix: update matrix ubuntu version --- .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 2aeb22a..bd5bb7b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ on: jobs: run_tests: name: tests - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 strategy: matrix: toxenv: [ From 48b2e9daae484c560586441926c30609db9885bd Mon Sep 17 00:00:00 2001 From: Steven Giron Date: Tue, 31 Mar 2026 13:11:55 -0500 Subject: [PATCH 4/6] feat: upgrade pip and setuptools in workflow --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bd5bb7b..2c70376 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,8 +26,8 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.toxenv == 'py311-django42' && '3.11' || matrix.toxenv == 'py311-django52' && '3.11' || matrix.toxenv == 'py312-django42' && '3.12' || matrix.toxenv == 'py312-django52' && '3.12' || '3.11' }} - - name: Install pip - run: pip install -r requirements/pip.txt + - name: Upgrade pip and setuptools + run: pip install --upgrade pip setuptools wheel - name: Install Dependencies run: pip install -r requirements/ci.txt - name: Run Tests From f5f9e561a5a88f538c06461c38ba4a89ac7db140 Mon Sep 17 00:00:00 2001 From: Steven Giron Date: Wed, 1 Apr 2026 14:09:20 -0500 Subject: [PATCH 5/6] feat: adding feedback pr --- .github/workflows/ci.yml | 4 +++- .github/workflows/pypi-publish.yml | 5 +++++ CHANGELOG.rst | 5 +++-- openedx_cas/__init__.py | 2 +- requirements/base.txt | 12 +++++------- requirements/constraints.txt | 2 +- requirements/dev.txt | 8 ++++---- requirements/doc.txt | 8 ++++---- requirements/quality.txt | 8 ++++---- requirements/test.txt | 8 ++++---- setup.cfg | 2 +- tox.ini | 6 +++--- 12 files changed, 38 insertions(+), 32 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c70376..591555b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ on: jobs: run_tests: name: tests - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: toxenv: [ @@ -28,8 +28,10 @@ jobs: python-version: ${{ matrix.toxenv == 'py311-django42' && '3.11' || matrix.toxenv == 'py311-django52' && '3.11' || matrix.toxenv == 'py312-django42' && '3.12' || matrix.toxenv == 'py312-django52' && '3.12' || '3.11' }} - name: Upgrade pip and setuptools run: pip install --upgrade pip setuptools wheel + - name: Install Dependencies run: pip install -r requirements/ci.txt + - name: Run Tests env: TOXENV: ${{ matrix.toxenv }} diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index 5b18295..a6c10dc 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -5,8 +5,10 @@ on: types: [published] jobs: + push: runs-on: ubuntu-20.04 + steps: - name: Checkout uses: actions/checkout@v4 @@ -14,10 +16,13 @@ jobs: uses: actions/setup-python@v5 with: python-version: 3.11 + - name: Install pip run: pip install -r requirements/pip.txt + - name: Build package run: python setup.py sdist bdist_wheel + - name: Publish to PyPi uses: pypa/gh-action-pypi-publish@master with: diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 4bf1e71..248f45a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,14 +14,14 @@ Change Log Unreleased ~~~~~~~~~~ -[0.3.0] - 2026-03-30 +[1.0.0] - 2026-03-30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Added _____ * Support for Python 3.11 and 3.12. -* Support for Django 4.2 and 5.2 (compatible with Open edX Teak). +* Support for Django 4.2 and 5.2 (compatible with Open edX Teak and Ulmo releases). * New GitHub Actions test matrix with the supported Python/Django combinations. * Set `DJANGO_SETTINGS_MODULE` in the `quality` tox environment to avoid pylint configuration errors. @@ -40,6 +40,7 @@ _______ * Dropped support for Python 3.8. * Dropped support for Django 2.2, 3.2, and 4.0. +* Dropped support for Open edX releases prior to Sumac. * Removed obsolete pylint options (regenerated `.pylintrc` with edx-lint). Fixed diff --git a/openedx_cas/__init__.py b/openedx_cas/__init__.py index 31905a6..de8113e 100644 --- a/openedx_cas/__init__.py +++ b/openedx_cas/__init__.py @@ -2,6 +2,6 @@ Support for Certralized Authentication System (CAS) in the Open edX authentication flows. """ -__version__ = '0.3.0' +__version__ = '1.0.0' default_app_config = 'openedx_cas.apps.OpenedxCasConfig' # pylint: disable=invalid-name diff --git a/requirements/base.txt b/requirements/base.txt index 41dafbf..b071681 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -13,8 +13,8 @@ cffi==2.0.0 charset-normalizer==3.4.6 # via requests cryptography==46.0.6 - # via pyjwt -defusedxml==0.7.1 + # via social-auth-core +defusedxml==0.8.0rc2 # via # python3-openid # social-auth-core @@ -35,10 +35,8 @@ oauthlib==3.3.1 # social-auth-core pycparser==3.0 # via cffi -pyjwt[crypto]==2.12.1 - # via - # pyjwt - # social-auth-core +pyjwt==2.12.1 + # via social-auth-core python-cas==1.7.1 # via django-cas-ng python3-openid==3.2.0 @@ -50,7 +48,7 @@ requests==2.33.1 # social-auth-core requests-oauthlib==2.0.0 # via social-auth-core -social-auth-core==4.8.5 +social-auth-core==4.5.4 # via # -c requirements/constraints.txt # -r requirements/base.in diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 20c3a21..dc1f83f 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -10,4 +10,4 @@ # Common constraints for edx repos -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt -social-auth-core==4.8.5 +social-auth-core==4.5.4 diff --git a/requirements/dev.txt b/requirements/dev.txt index de7f301..5a6cbec 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -72,11 +72,11 @@ coverage[toml]==7.13.5 cryptography==46.0.6 # via # -r requirements/quality.txt - # pyjwt # secretstorage + # social-auth-core ddt==1.7.2 # via -r requirements/quality.txt -defusedxml==0.7.1 +defusedxml==0.8.0rc2 # via # -r requirements/quality.txt # python3-openid @@ -246,7 +246,7 @@ pygments==2.20.0 # pytest # readme-renderer # rich -pyjwt[crypto]==2.12.1 +pyjwt==2.12.1 # via # -r requirements/quality.txt # social-auth-core @@ -352,7 +352,7 @@ snowballstemmer==3.0.1 # via # -r requirements/quality.txt # pydocstyle -social-auth-core==4.8.5 +social-auth-core==4.5.4 # via # -c requirements/constraints.txt # -r requirements/quality.txt diff --git a/requirements/doc.txt b/requirements/doc.txt index f617ed5..f2cbf3d 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -41,11 +41,11 @@ coverage[toml]==7.13.5 cryptography==46.0.6 # via # -r requirements/test.txt - # pyjwt # secretstorage + # social-auth-core ddt==1.7.2 # via -r requirements/test.txt -defusedxml==0.7.1 +defusedxml==0.8.0rc2 # via # -r requirements/test.txt # python3-openid @@ -145,7 +145,7 @@ pygments==2.20.0 # readme-renderer # rich # sphinx -pyjwt[crypto]==2.12.1 +pyjwt==2.12.1 # via # -r requirements/test.txt # social-auth-core @@ -205,7 +205,7 @@ six==1.17.0 # via edx-sphinx-theme snowballstemmer==3.0.1 # via sphinx -social-auth-core==4.8.5 +social-auth-core==4.5.4 # via # -c requirements/constraints.txt # -r requirements/test.txt diff --git a/requirements/quality.txt b/requirements/quality.txt index 141340b..641c1e4 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -45,11 +45,11 @@ coverage[toml]==7.13.5 cryptography==46.0.6 # via # -r requirements/test.txt - # pyjwt # secretstorage + # social-auth-core ddt==1.7.2 # via -r requirements/test.txt -defusedxml==0.7.1 +defusedxml==0.8.0rc2 # via # -r requirements/test.txt # python3-openid @@ -150,7 +150,7 @@ pygments==2.20.0 # pytest # readme-renderer # rich -pyjwt[crypto]==2.12.1 +pyjwt==2.12.1 # via # -r requirements/test.txt # social-auth-core @@ -219,7 +219,7 @@ six==1.17.0 # via edx-lint snowballstemmer==3.0.1 # via pydocstyle -social-auth-core==4.8.5 +social-auth-core==4.5.4 # via # -c requirements/constraints.txt # -r requirements/test.txt diff --git a/requirements/test.txt b/requirements/test.txt index 53e7496..b4fdb9f 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -29,10 +29,10 @@ coverage[toml]==7.13.5 cryptography==46.0.6 # via # -r requirements/base.txt - # pyjwt + # social-auth-core ddt==1.7.2 # via -r requirements/test.in -defusedxml==0.7.1 +defusedxml==0.8.0rc2 # via # -r requirements/base.txt # python3-openid @@ -74,7 +74,7 @@ pycparser==3.0 # cffi pygments==2.20.0 # via pytest -pyjwt[crypto]==2.12.1 +pyjwt==2.12.1 # via # -r requirements/base.txt # social-auth-core @@ -108,7 +108,7 @@ requests-oauthlib==2.0.0 # via # -r requirements/base.txt # social-auth-core -social-auth-core==4.8.5 +social-auth-core==4.5.4 # via # -c requirements/constraints.txt # -r requirements/base.txt diff --git a/setup.cfg b/setup.cfg index abf6a65..07acb65 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.3.0 +current_version = 1.0.0 commit = True tag = True diff --git a/tox.ini b/tox.ini index 1d5379b..dbee9ae 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{311,312}-django{42,52}, quality +envlist = py311-django42, py311-django52, py312-django52, quality [doc8] ; D001 = Line too long @@ -36,8 +36,8 @@ norecursedirs = .* docs requirements site-packages [testenv] deps = - django42: Django>=4.2,<4.3 - django52: Django>=5.2,<5.3 + django42: Django>=4.2,<5.0 + django52: Django>=5.2,<6.0 -r{toxinidir}/requirements/test.txt commands = pytest {posargs} From 8fd3e1f3bfaaee8334daf716ab3a95eb1471f324 Mon Sep 17 00:00:00 2001 From: Steven Giron Date: Wed, 1 Apr 2026 15:55:30 -0500 Subject: [PATCH 6/6] fix: update ci workflow with correct versions --- .github/workflows/ci.yml | 25 +++++++++++++++---------- README.rst | 17 +++++++++++++++++ requirements/pip.txt | 14 ++++++++------ 3 files changed, 40 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 591555b..19f0f51 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,21 +13,26 @@ jobs: runs-on: ubuntu-24.04 strategy: matrix: - toxenv: [ - 'py311-django42', - 'py311-django52', - 'py312-django42', - 'py312-django52', - 'quality' - ] + include: + - python-version: "3.11" + toxenv: "py311-django42" + - python-version: "3.11" + toxenv: "py311-django52" + - python-version: "3.12" + toxenv: "py312-django52" + - python-version: "3.11" + toxenv: "quality" + steps: - uses: actions/checkout@v4 + - name: setup python uses: actions/setup-python@v5 with: - python-version: ${{ matrix.toxenv == 'py311-django42' && '3.11' || matrix.toxenv == 'py311-django52' && '3.11' || matrix.toxenv == 'py312-django42' && '3.12' || matrix.toxenv == 'py312-django52' && '3.12' || '3.11' }} - - name: Upgrade pip and setuptools - run: pip install --upgrade pip setuptools wheel + python-version: ${{ matrix.python-version }} + + - name: Install pip + run: pip install -r requirements/pip.txt - name: Install Dependencies run: pip install -r requirements/ci.txt diff --git a/README.rst b/README.rst index 3fb5a6a..23a68ab 100644 --- a/README.rst +++ b/README.rst @@ -195,3 +195,20 @@ For more information about these options, see the `Getting Help`_ page. .. |license-badge| image:: https://img.shields.io/github/license/eduNEXT/openedx-cas.svg :target: https://github.com/eduNEXT/openedx-cas/blob/main/LICENSE.txt :alt: License + +## Compatibility Notes +------------------------- + ++---------------------+----------------+ +| Open edX Release | Version | ++=====================+================+ +| Redwood | <= 0.2.4 | ++---------------------+----------------+ +| Sumac | >= 1.0.0 | ++---------------------+----------------+ +| Teak | >= 1.0.0 | ++---------------------+----------------+ +| Ulmo | >= 1.0.0 | ++---------------------+----------------+ + +**Note:** Version 0.3.0 and later are compatible with Sumac, Teak, and Ulmo. For releases Redwood and earlier, please use version 0.2.4 or any 0.2.x release. diff --git a/requirements/pip.txt b/requirements/pip.txt index 884d847..ec00bca 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,14 +1,16 @@ # -# This file is autogenerated by pip-compile -# To update, run: +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: # -# make upgrade +# pip-compile --allow-unsafe --output-file=requirements/pip.txt requirements/pip.in # -wheel==0.36.2 +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==20.3.3 +pip==26.0.1 # via -r requirements/pip.in -setuptools==51.3.3 +setuptools==82.0.1 # via -r requirements/pip.in