From 1e8c51a9e116abb6c6bdb57ff119cc7459ef0ae8 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Fri, 6 Mar 2026 15:03:00 -0500 Subject: [PATCH 1/3] chore: drop Python 3.11 support Removes Python 3.11 from CI matrix, pypi-publish workflow, tox envlist, and setup.py classifiers. Updates coverage step condition to 3.12. Part of https://github.com/openedx/public-engineering/issues/499 --- .github/workflows/ci.yml | 3 +-- .github/workflows/pypi-publish.yml | 2 +- .readthedocs.yaml | 2 +- docs/conf.py | 5 +++++ setup.py | 1 - tox.ini | 2 +- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6291ed9e..29f21303 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,6 @@ jobs: matrix: os: [ubuntu-latest] python-version: - - '3.11' - '3.12' toxenv: [django42-celery53-drflatest, django52-celery54-drflatest, quality, docs] @@ -37,7 +36,7 @@ jobs: run: tox - name: Run coverage - if: matrix.python-version == '3.11' && matrix.toxenv == 'django52-celery54-drflatest' + if: matrix.python-version == '3.12' && matrix.toxenv == 'django52-celery54-drflatest' uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml index 4209a526..6befbd77 100644 --- a/.github/workflows/pypi-publish.yml +++ b/.github/workflows/pypi-publish.yml @@ -16,7 +16,7 @@ jobs: - name: setup python uses: actions/setup-python@v6 with: - python-version: 3.11 + python-version: 3.12 - name: Install pip run: pip install -r requirements/pip.txt diff --git a/.readthedocs.yaml b/.readthedocs.yaml index b5bceeb4..412ddb64 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -12,7 +12,7 @@ sphinx: build: os: ubuntu-lts-latest tools: - python: "3.11" + python: "3.12" python: install: diff --git a/docs/conf.py b/docs/conf.py index c22eaed6..2d50fe93 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -52,6 +52,11 @@ 'sphinxcontrib.openapi', ] +# Sphinx 9.0 rewrote autodoc to call repr() on class members, which triggers +# Django queryset evaluation against a non-existent database during docs builds. +# Use the legacy class-based implementation to avoid this. +autodoc_use_legacy_class_based = True + # A list of warning types to suppress arbitrary warning messages. suppress_warnings = [ 'image.nonlocal_uri', diff --git a/setup.py b/setup.py index 96c432f2..393cc609 100644 --- a/setup.py +++ b/setup.py @@ -154,7 +154,6 @@ def is_requirement(line): 'License :: OSI Approved :: Apache Software License', 'Natural Language :: English', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', ], ) diff --git a/tox.ini b/tox.ini index eaa11d6d..e18b9c1d 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] envlist = - py{311,312}-django{42, 52}-celery{53, 54}-drf{313,latest} + py{312}-django{42, 52}-celery{53, 54}-drf{313,latest} quality docs [testenv] From 4d29966c27f3baaf2230bf298a19b91615b039d3 Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Fri, 6 Mar 2026 15:10:38 -0500 Subject: [PATCH 2/3] chore: update requirements for Python 3.12 --- requirements/base.txt | 28 ++++++----- requirements/ci.txt | 24 ++++++---- requirements/dev.txt | 97 +++++++++++++++++++++----------------- requirements/doc.txt | 89 +++++++++++++++++----------------- requirements/pip-tools.txt | 16 ++++--- requirements/pip.txt | 10 ++-- requirements/quality.txt | 22 ++++----- requirements/test.txt | 46 +++++++++--------- 8 files changed, 177 insertions(+), 155 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 79e85e4e..d4a0bd42 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,20 +1,20 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # amqp==5.3.1 # via kombu -asgiref==3.10.0 +asgiref==3.11.1 # via django -billiard==4.2.2 +billiard==4.2.4 # via celery -celery==5.5.3 +celery==5.6.2 # via # -c requirements/constraints.txt # -r requirements/base.in -click==8.3.0 +click==8.3.1 # via # celery # click-didyoumean @@ -26,7 +26,7 @@ click-plugins==1.1.1.2 # via celery click-repl==0.3.0 # via celery -django==4.2.25 +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.in @@ -39,13 +39,13 @@ djangorestframework==3.16.1 # via # -r requirements/base.in # drf-yasg -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via -r requirements/base.in inflection==0.5.1 # via drf-yasg -kombu==5.5.4 +kombu==5.6.2 # via celery -packaging==25.0 +packaging==26.0 # via # drf-yasg # kombu @@ -53,16 +53,18 @@ prompt-toolkit==3.0.52 # via click-repl python-dateutil==2.9.0.post0 # via celery -pytz==2025.2 +pytz==2026.1.post1 # via drf-yasg pyyaml==6.0.3 # via drf-yasg six==1.17.0 # via python-dateutil -sqlparse==0.5.3 +sqlparse==0.5.5 # via django -tzdata==2025.2 +tzdata==2025.3 # via kombu +tzlocal==5.3.1 + # via celery uritemplate==4.2.0 # via drf-yasg vine==5.1.0 @@ -70,5 +72,5 @@ vine==5.1.0 # amqp # celery # kombu -wcwidth==0.2.14 +wcwidth==0.6.0 # via prompt-toolkit diff --git a/requirements/ci.txt b/requirements/ci.txt index 29cd3650..6af155fe 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,36 +1,40 @@ # -# 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 # -cachetools==6.2.1 - # via tox -chardet==5.2.0 +cachetools==7.0.3 # via tox colorama==0.4.6 # via tox -coverage==7.11.0 +coverage==7.13.4 # via -r requirements/ci.in distlib==0.4.0 # via virtualenv -filelock==3.20.0 +filelock==3.25.0 # via + # python-discovery # tox # virtualenv -packaging==25.0 +packaging==26.0 # via # pyproject-api # tox -platformdirs==4.5.0 +platformdirs==4.9.4 # via + # python-discovery # tox # virtualenv pluggy==1.6.0 # via tox pyproject-api==1.10.0 # via tox -tox==4.31.0 +python-discovery==1.1.0 + # via virtualenv +tomli-w==1.2.0 + # via tox +tox==4.49.0 # via -r requirements/ci.in -virtualenv==20.35.3 +virtualenv==21.1.0 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index 5560df8c..c5c4878d 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,43 +8,39 @@ amqp==5.3.1 # via # -r requirements/test.txt # kombu -asgiref==3.10.0 +asgiref==3.11.1 # via # -r requirements/test.txt # django -astroid==3.3.11 +astroid==4.0.4 # via # -r requirements/quality.txt # pylint # pylint-celery -billiard==4.2.2 +billiard==4.2.4 # via # -r requirements/test.txt # celery -boto3==1.40.55 +boto3==1.42.62 # via -r requirements/test.txt -botocore==1.40.55 +botocore==1.42.62 # via # -r requirements/test.txt # boto3 # s3transfer -build==1.3.0 +build==1.4.0 # via # -r requirements/pip-tools.txt # pip-tools -cachetools==6.2.1 +cachetools==7.0.3 # via # -r requirements/ci.txt # tox -celery==5.5.3 +celery==5.6.2 # via # -c requirements/constraints.txt # -r requirements/test.txt -chardet==5.2.0 - # via - # -r requirements/ci.txt - # tox -click==8.3.0 +click==8.3.1 # via # -r requirements/pip-tools.txt # -r requirements/quality.txt @@ -73,7 +69,7 @@ click-repl==0.3.0 # via # -r requirements/test.txt # celery -code-annotations==2.3.0 +code-annotations==2.3.2 # via # -r requirements/quality.txt # edx-lint @@ -81,12 +77,12 @@ colorama==0.4.6 # via # -r requirements/ci.txt # tox -coverage[toml]==7.11.0 +coverage[toml]==7.13.4 # via # -r requirements/ci.txt # -r requirements/test.txt # pytest-cov -dill==0.4.0 +dill==0.4.1 # via # -r requirements/quality.txt # pylint @@ -94,7 +90,7 @@ distlib==0.4.0 # via # -r requirements/ci.txt # virtualenv -django==4.2.25 +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -111,7 +107,7 @@ djangorestframework==3.16.1 # via # -r requirements/test.txt # drf-yasg -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via -r requirements/test.txt edx-i18n-tools==1.9.0 # via -r requirements/dev.in @@ -119,9 +115,10 @@ edx-lint==5.6.0 # via # -r requirements/dev.in # -r requirements/quality.txt -filelock==3.20.0 +filelock==3.25.0 # via # -r requirements/ci.txt + # python-discovery # tox # virtualenv inflection==0.5.1 @@ -132,7 +129,7 @@ iniconfig==2.3.0 # via # -r requirements/test.txt # pytest -isort==6.1.0 +isort==8.0.1 # via # -r requirements/quality.txt # pylint @@ -140,12 +137,12 @@ jinja2==3.1.6 # via # -r requirements/quality.txt # code-annotations -jmespath==1.0.1 +jmespath==1.1.0 # via # -r requirements/test.txt # boto3 # botocore -kombu==5.5.4 +kombu==5.6.2 # via # -r requirements/test.txt # celery @@ -153,7 +150,7 @@ lxml[html-clean]==6.0.2 # via # edx-i18n-tools # lxml-html-clean -lxml-html-clean==0.4.3 +lxml-html-clean==0.4.4 # via lxml markupsafe==3.0.3 # via @@ -165,7 +162,7 @@ mccabe==0.7.0 # pylint mock==5.2.0 # via -r requirements/test.txt -packaging==25.0 +packaging==26.0 # via # -r requirements/ci.txt # -r requirements/pip-tools.txt @@ -176,15 +173,17 @@ packaging==25.0 # pyproject-api # pytest # tox + # wheel path==16.16.0 # via edx-i18n-tools -pip-tools==7.5.1 +pip-tools==7.5.3 # via -r requirements/pip-tools.txt -platformdirs==4.5.0 +platformdirs==4.9.4 # via # -r requirements/ci.txt # -r requirements/quality.txt # pylint + # python-discovery # tox # virtualenv pluggy==1.6.0 @@ -208,7 +207,7 @@ pygments==2.19.2 # via # -r requirements/test.txt # pytest -pylint==3.3.9 +pylint==4.0.5 # via # -r requirements/quality.txt # edx-lint @@ -219,7 +218,7 @@ pylint-celery==0.3 # via # -r requirements/quality.txt # edx-lint -pylint-django==2.6.1 +pylint-django==2.7.0 # via # -r requirements/quality.txt # edx-lint @@ -237,25 +236,29 @@ pyproject-hooks==1.2.0 # -r requirements/pip-tools.txt # build # pip-tools -pytest==8.4.2 +pytest==9.0.2 # via # -r requirements/test.txt # pytest-cov # pytest-django pytest-cov==7.0.0 # via -r requirements/test.txt -pytest-django==4.11.1 +pytest-django==4.12.0 # via -r requirements/test.txt python-dateutil==2.9.0.post0 # via # -r requirements/test.txt # botocore # celery +python-discovery==1.1.0 + # via + # -r requirements/ci.txt + # virtualenv python-slugify==8.0.4 # via # -r requirements/quality.txt # code-annotations -pytz==2025.2 +pytz==2026.1.post1 # via # -r requirements/test.txt # drf-yasg @@ -268,7 +271,7 @@ pyyaml==6.0.3 # edx-i18n-tools rules==3.5 # via -r requirements/test.txt -s3transfer==0.14.0 +s3transfer==0.16.0 # via # -r requirements/test.txt # boto3 @@ -282,35 +285,43 @@ snowballstemmer==3.0.1 # via # -r requirements/quality.txt # pydocstyle -sqlparse==0.5.3 +sqlparse==0.5.5 # via # -r requirements/test.txt # django -stevedore==5.5.0 +stevedore==5.7.0 # via # -r requirements/quality.txt # code-annotations -testfixtures==9.2.0 +testfixtures==10.0.0 # via -r requirements/test.txt text-unidecode==1.3 # via # -r requirements/quality.txt # python-slugify -tomlkit==0.13.3 +tomli-w==1.2.0 + # via + # -r requirements/ci.txt + # tox +tomlkit==0.14.0 # via # -r requirements/quality.txt # pylint -tox==4.31.0 +tox==4.49.0 # via -r requirements/ci.txt -tzdata==2025.2 +tzdata==2025.3 # via # -r requirements/test.txt # kombu +tzlocal==5.3.1 + # via + # -r requirements/test.txt + # celery uritemplate==4.2.0 # via # -r requirements/test.txt # drf-yasg -urllib3==2.5.0 +urllib3==2.6.3 # via # -r requirements/test.txt # botocore @@ -320,15 +331,15 @@ vine==5.1.0 # amqp # celery # kombu -virtualenv==20.35.3 +virtualenv==21.1.0 # via # -r requirements/ci.txt # tox -wcwidth==0.2.14 +wcwidth==0.6.0 # via # -r requirements/test.txt # prompt-toolkit -wheel==0.45.1 +wheel==0.46.3 # via # -r requirements/pip-tools.txt # pip-tools diff --git a/requirements/doc.txt b/requirements/doc.txt index b7587d7a..c64712c0 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -12,7 +12,7 @@ amqp==5.3.1 # via # -r requirements/base.txt # kombu -asgiref==3.10.0 +asgiref==3.11.1 # via # -r requirements/base.txt # django @@ -20,29 +20,27 @@ attrs==25.4.0 # via # jsonschema # referencing -babel==2.17.0 +babel==2.18.0 # via # pydata-sphinx-theme # sphinx -backports-tarfile==1.2.0 - # via jaraco-context -beautifulsoup4==4.14.2 +beautifulsoup4==4.14.3 # via pydata-sphinx-theme -billiard==4.2.2 +billiard==4.2.4 # via # -r requirements/base.txt # celery -celery==5.5.3 +celery==5.6.2 # via # -c requirements/constraints.txt # -r requirements/base.txt -certifi==2025.10.5 +certifi==2026.2.25 # via requests cffi==2.0.0 # via cryptography -charset-normalizer==3.4.4 +charset-normalizer==3.4.5 # via requests -click==8.3.0 +click==8.3.1 # via # -r requirements/base.txt # celery @@ -67,11 +65,11 @@ coreapi==2.3.3 # openapi-codec coreschema==0.0.4 # via coreapi -cryptography==46.0.3 +cryptography==46.0.5 # via secretstorage deepmerge==2.0 # via sphinxcontrib-openapi -django==4.2.25 +django==5.2.12 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt @@ -97,16 +95,14 @@ docutils==0.21.2 # restructuredtext-lint # sphinx # sphinx-mdinclude -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via -r requirements/base.txt -id==1.5.0 +id==1.6.1 # via twine idna==3.11 # via requests -imagesize==1.4.1 +imagesize==2.0.0 # via sphinx -importlib-metadata==8.7.0 - # via keyring inflection==0.5.1 # via # -r requirements/base.txt @@ -115,9 +111,9 @@ itypes==1.2.0 # via coreapi jaraco-classes==3.4.0 # via keyring -jaraco-context==6.0.1 +jaraco-context==6.1.0 # via keyring -jaraco-functools==4.3.0 +jaraco-functools==4.4.0 # via keyring jeepney==0.9.0 # via @@ -127,13 +123,13 @@ jinja2==3.1.6 # via # coreschema # sphinx -jsonschema==4.25.1 +jsonschema==4.26.0 # via sphinxcontrib-openapi jsonschema-specifications==2025.9.1 # via jsonschema -keyring==25.6.0 +keyring==25.7.0 # via twine -kombu==5.5.4 +kombu==5.6.2 # via # -r requirements/base.txt # celery @@ -143,17 +139,17 @@ markupsafe==3.0.3 # via jinja2 mdurl==0.1.2 # via markdown-it-py -mistune==3.1.4 +mistune==3.2.0 # via sphinx-mdinclude more-itertools==10.8.0 # via # jaraco-classes # jaraco-functools -nh3==0.3.1 +nh3==0.3.3 # via readme-renderer openapi-codec==1.3.2 # via django-rest-swagger -packaging==25.0 +packaging==26.0 # via # -r requirements/base.txt # drf-yasg @@ -167,7 +163,7 @@ prompt-toolkit==3.0.52 # via # -r requirements/base.txt # click-repl -pycparser==2.23 +pycparser==3.0 # via cffi pydata-sphinx-theme==0.15.4 # via sphinx-book-theme @@ -184,7 +180,7 @@ python-dateutil==2.9.0.post0 # via # -r requirements/base.txt # celery -pytz==2025.2 +pytz==2026.1.post1 # via # -r requirements/base.txt # drf-yasg @@ -202,27 +198,26 @@ referencing==0.37.0 requests==2.32.5 # via # coreapi - # id # requests-toolbelt # sphinx # twine requests-toolbelt==1.0.0 # via twine -restructuredtext-lint==1.4.0 +restructuredtext-lint==2.0.2 # via doc8 rfc3986==2.0.0 # via twine -rich==14.2.0 +rich==14.3.3 # via twine -roman-numerals-py==3.1.0 +roman-numerals==4.1.0 # via sphinx -rpds-py==0.27.1 +rpds-py==0.30.0 # via # jsonschema # referencing rules==3.5 # via -r requirements/doc.in -secretstorage==3.4.0 +secretstorage==3.5.0 # via keyring simplejson==3.20.2 # via django-rest-swagger @@ -230,12 +225,11 @@ six==1.17.0 # via # -r requirements/base.txt # python-dateutil - # sphinxcontrib-httpdomain snowballstemmer==3.0.1 # via sphinx -soupsieve==2.8 +soupsieve==2.8.3 # via beautifulsoup4 -sphinx==8.2.3 +sphinx==9.1.0 # via # -r requirements/doc.in # pydata-sphinx-theme @@ -253,21 +247,21 @@ sphinxcontrib-devhelp==2.0.0 # via sphinx sphinxcontrib-htmlhelp==2.1.0 # via sphinx -sphinxcontrib-httpdomain==1.8.1 +sphinxcontrib-httpdomain==2.0.0 # via sphinxcontrib-openapi sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-openapi==0.8.4 +sphinxcontrib-openapi==0.9.0 # via -r requirements/doc.in sphinxcontrib-qthelp==2.0.0 # via sphinx sphinxcontrib-serializinghtml==2.0.0 # via sphinx -sqlparse==0.5.3 +sqlparse==0.5.5 # via # -r requirements/base.txt # django -stevedore==5.5.0 +stevedore==5.7.0 # via doc8 twine==6.2.0 # via -r requirements/doc.in @@ -276,17 +270,22 @@ typing-extensions==4.15.0 # beautifulsoup4 # pydata-sphinx-theme # referencing -tzdata==2025.2 +tzdata==2025.3 # via # -r requirements/base.txt # kombu +tzlocal==5.3.1 + # via + # -r requirements/base.txt + # celery uritemplate==4.2.0 # via # -r requirements/base.txt # coreapi # drf-yasg -urllib3==2.5.0 +urllib3==2.6.3 # via + # id # requests # twine vine==5.1.0 @@ -295,9 +294,7 @@ vine==5.1.0 # amqp # celery # kombu -wcwidth==0.2.14 +wcwidth==0.6.0 # via # -r requirements/base.txt # prompt-toolkit -zipp==3.23.0 - # via importlib-metadata diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index e97cb1b3..d89516b8 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -1,22 +1,24 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # -build==1.3.0 +build==1.4.0 # via pip-tools -click==8.3.0 +click==8.3.1 # via pip-tools -packaging==25.0 - # via build -pip-tools==7.5.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.1 +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 dec15874..084d708e 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,14 +1,16 @@ # -# This file is autogenerated by pip-compile with Python 3.11 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # -wheel==0.45.1 +packaging==26.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==25.2 +pip==26.0.1 # via -r requirements/pip.in -setuptools==80.9.0 +setuptools==82.0.0 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index cca50f5e..a80fe858 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -1,27 +1,27 @@ # -# 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 # -astroid==3.3.11 +astroid==4.0.4 # via # pylint # pylint-celery -click==8.3.0 +click==8.3.1 # via # click-log # code-annotations # edx-lint click-log==0.4.0 # via edx-lint -code-annotations==2.3.0 +code-annotations==2.3.2 # via edx-lint -dill==0.4.0 +dill==0.4.1 # via pylint edx-lint==5.6.0 # via -r requirements/quality.in -isort==6.1.0 +isort==8.0.1 # via # -r requirements/quality.in # pylint @@ -31,13 +31,13 @@ markupsafe==3.0.3 # via jinja2 mccabe==0.7.0 # via pylint -platformdirs==4.5.0 +platformdirs==4.9.4 # via pylint pycodestyle==2.14.0 # via -r requirements/quality.in pydocstyle==6.3.0 # via -r requirements/quality.in -pylint==3.3.9 +pylint==4.0.5 # via # edx-lint # pylint-celery @@ -45,7 +45,7 @@ pylint==3.3.9 # pylint-plugin-utils pylint-celery==0.3 # via edx-lint -pylint-django==2.6.1 +pylint-django==2.7.0 # via edx-lint pylint-plugin-utils==0.9.0 # via @@ -59,9 +59,9 @@ six==1.17.0 # via edx-lint snowballstemmer==3.0.1 # via pydocstyle -stevedore==5.5.0 +stevedore==5.7.0 # via code-annotations text-unidecode==1.3 # via python-slugify -tomlkit==0.13.3 +tomlkit==0.14.0 # via pylint diff --git a/requirements/test.txt b/requirements/test.txt index 49a810ed..f0481e71 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,25 +8,25 @@ amqp==5.3.1 # via # -r requirements/base.txt # kombu -asgiref==3.10.0 +asgiref==3.11.1 # via # -r requirements/base.txt # django -billiard==4.2.2 +billiard==4.2.4 # via # -r requirements/base.txt # celery -boto3==1.40.55 +boto3==1.42.62 # via -r requirements/test.in -botocore==1.40.55 +botocore==1.42.62 # via # boto3 # s3transfer -celery==5.5.3 +celery==5.6.2 # via # -c requirements/constraints.txt # -r requirements/base.txt -click==8.3.0 +click==8.3.1 # via # -r requirements/base.txt # celery @@ -45,7 +45,7 @@ click-repl==0.3.0 # via # -r requirements/base.txt # celery -coverage[toml]==7.11.0 +coverage[toml]==7.13.4 # via pytest-cov # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt @@ -61,7 +61,7 @@ django-storages==1.14.6 # via # -r requirements/base.txt # drf-yasg -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via -r requirements/base.txt inflection==0.5.1 # via @@ -69,17 +69,17 @@ inflection==0.5.1 # drf-yasg iniconfig==2.3.0 # via pytest -jmespath==1.0.1 +jmespath==1.1.0 # via # boto3 # botocore -kombu==5.5.4 +kombu==5.6.2 # via # -r requirements/base.txt # celery mock==5.2.0 # via -r requirements/test.in -packaging==25.0 +packaging==26.0 # via # -r requirements/base.txt # -r requirements/test.in @@ -96,20 +96,20 @@ prompt-toolkit==3.0.52 # click-repl pygments==2.19.2 # via pytest -pytest==8.4.2 +pytest==9.0.2 # via # pytest-cov # pytest-django pytest-cov==7.0.0 # via -r requirements/test.in -pytest-django==4.11.1 +pytest-django==4.12.0 # via -r requirements/test.in python-dateutil==2.9.0.post0 # via # -r requirements/base.txt # botocore # celery -pytz==2025.2 +pytz==2026.1.post1 # via # -r requirements/base.txt # drf-yasg @@ -119,27 +119,31 @@ pyyaml==6.0.3 # drf-yasg rules==3.5 # via -r requirements/test.in -s3transfer==0.14.0 +s3transfer==0.16.0 # via boto3 six==1.17.0 # via # -r requirements/base.txt # python-dateutil -sqlparse==0.5.3 +sqlparse==0.5.5 # via # -r requirements/base.txt # django -testfixtures==9.2.0 +testfixtures==10.0.0 # via -r requirements/test.in -tzdata==2025.2 +tzdata==2025.3 # via # -r requirements/base.txt # kombu +tzlocal==5.3.1 + # via + # -r requirements/base.txt + # celery uritemplate==4.2.0 # via # -r requirements/base.txt # drf-yasg -urllib3==2.5.0 +urllib3==2.6.3 # via botocore vine==5.1.0 # via @@ -147,7 +151,7 @@ vine==5.1.0 # amqp # celery # kombu -wcwidth==0.2.14 +wcwidth==0.6.0 # via # -r requirements/base.txt # prompt-toolkit From 907609f8d6470fea95eb93f8703391643a83a42d Mon Sep 17 00:00:00 2001 From: Feanil Patel Date: Fri, 6 Mar 2026 15:10:44 -0500 Subject: [PATCH 3/3] chore: bump version to 4.0.0 Co-Authored-By: Claude Sonnet 4.6 --- user_tasks/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user_tasks/__init__.py b/user_tasks/__init__.py index 54076234..903f5b8e 100644 --- a/user_tasks/__init__.py +++ b/user_tasks/__init__.py @@ -4,7 +4,7 @@ from django.dispatch import Signal -__version__ = '3.4.4' +__version__ = '4.0.0' # This signal is emitted when a user task reaches any final state: