diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bea400c..b6c28a6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,16 +10,17 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - tox-env: [django32, quality] + python-version: ['3.8', '3.12'] + tox-env: [quality, django42] steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 - with: - python-version: '3.8' - architecture: x64 - - name: Install requirements - run: pip install -r requirements/ci.txt - - name: Run tox - env: - TOXENV: ${{ matrix.tox-env }} - run: tox + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + architecture: x64 + - name: Install requirements + run: pip install -r requirements/ci.txt + - name: Run tox + env: + TOXENV: ${{ matrix.tox-env }} + run: tox diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 3d763d4..a4ec56b 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,6 +14,12 @@ Change Log Unreleased ~~~~~~~~~~ +[3.3.1] - 2024-02-26 +~~~~~~~~~~~~~~~~~~~~ +Added +_______ +* Added support for ``Python 3.12`` + [3.3.0] - 2024-01-23 ~~~~~~~~~~~~~~~~~~~~ Changed diff --git a/Makefile b/Makefile index f831242..febdde3 100644 --- a/Makefile +++ b/Makefile @@ -30,13 +30,13 @@ docs: ## generate Sphinx HTML documentation, including API docs $(BROWSER)docs/_build/html/index.html # Define CMD_PIP_COMPILE_OPTS=-v to get more information during make upgrade. -CMD_PIP_COMPILE ?= pip-compile --rebuild --upgrade $(CMD_PIP_COMPILE_OPTS) +CMD_PIP_COMPILE ?= pip-compile --rebuild --upgrade --allow-unsafe $(CMD_PIP_COMPILE_OPTS) upgrade: export CUSTOM_COMPILE_COMMAND=make upgrade upgrade: ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in pip install -qr requirements/pip-tools.txt # Make sure to compile files after any other files they include! - $(CMD_PIP_COMPILE) --allow-unsafe --rebuild -o requirements/pip.txt requirements/pip.in + $(CMD_PIP_COMPILE) --rebuild -o requirements/pip.txt requirements/pip.in $(CMD_PIP_COMPILE) -o requirements/pip-tools.txt requirements/pip-tools.in pip install -qr requirements/pip.txt pip install -qr requirements/pip-tools.txt diff --git a/edx_arch_experiments/__init__.py b/edx_arch_experiments/__init__.py index 2bf1c4b..caa53b3 100644 --- a/edx_arch_experiments/__init__.py +++ b/edx_arch_experiments/__init__.py @@ -2,4 +2,4 @@ A plugin to include applications under development by the architecture team at 2U. """ -__version__ = '3.3.0' +__version__ = '3.3.1' diff --git a/edx_arch_experiments/config_watcher/signals/tests/test_receivers.py b/edx_arch_experiments/config_watcher/signals/tests/test_receivers.py index e07572b..7efa84c 100644 --- a/edx_arch_experiments/config_watcher/signals/tests/test_receivers.py +++ b/edx_arch_experiments/config_watcher/signals/tests/test_receivers.py @@ -43,6 +43,6 @@ def test_send_to_slack(self, slack_url, service_name, expected_message): if expected_message is None: mock_req.assert_not_called() else: - assert mock_req.called_once() + mock_req.assert_called_once() (call_args, call_kwargs) = mock_req.call_args_list[0] assert json.loads(call_kwargs['data'])['text'] == expected_message diff --git a/pylintrc b/pylintrc index 27a237d..1533c2f 100644 --- a/pylintrc +++ b/pylintrc @@ -64,7 +64,7 @@ # SERIOUSLY. # # ------------------------------ -# Generated by edx-lint version: 5.3.4 +# Generated by edx-lint version: 5.3.6 # ------------------------------ [MASTER] ignore = migrations @@ -141,7 +141,6 @@ enable = no-self-argument, no-value-for-parameter, non-iterator-returned, - non-parent-method-called, nonexistent-operator, not-a-mapping, not-an-iterable, @@ -161,13 +160,10 @@ enable = return-outside-function, signature-differs, super-init-not-called, - super-method-not-called, syntax-error, - test-inherits-tests, too-few-format-args, too-many-format-args, too-many-function-args, - translation-of-non-string, truncated-format-string, undefined-all-variable, undefined-loop-variable, @@ -213,7 +209,6 @@ enable = consider-using-enumerate, global-at-module-level, global-variable-not-assigned, - literal-used-as-attribute, logging-format-interpolation, logging-not-lazy, multiple-imports, @@ -224,7 +219,6 @@ enable = redundant-unittest-assert, reimported, simplifiable-if-statement, - simplifiable-range, singleton-comparison, superfluous-parens, unidiomatic-typecheck, @@ -233,7 +227,6 @@ enable = unnecessary-semicolon, unneeded-not, useless-else-on-loop, - wrong-assert-type, deprecated-method, deprecated-module, @@ -283,9 +276,6 @@ disable = unused-wildcard-import, use-maxsplit-arg, - feature-toggle-needs-doc, - illegal-waffle-usage, - logging-fstring-interpolation, invalid-name, django-not-configured, @@ -386,4 +376,4 @@ int-import-graph = [EXCEPTIONS] overgeneral-exceptions = builtins.Exception -# 3cb34afb74e2aafe0c7e4dbe243a24d908c1af5d +# 705beaa0a7838cb087019c51be357f5949892713 diff --git a/requirements/base.in b/requirements/base.in index 924dd37..0c30bbe 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -9,3 +9,4 @@ djangorestframework # Used by codejail_service app edx-drf-extensions # Used by codejail_service app edx-toggles # Used by codejail_service app jsonschema # Parse and validate JSON; used by codejail_service app +setuptools diff --git a/requirements/base.txt b/requirements/base.txt index d3585c4..49b4e84 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -69,10 +69,6 @@ edx-toggles==5.1.1 # via -r requirements/base.in idna==3.6 # via requests -importlib-resources==6.1.1 - # via - # jsonschema - # jsonschema-specifications jinja2==3.1.3 # via code-annotations jsonschema==4.21.1 @@ -85,8 +81,6 @@ newrelic==9.7.0 # via edx-django-utils pbr==6.0.0 # via stevedore -pkgutil-resolve-name==1.3.10 - # via jsonschema psutil==5.9.8 # via edx-django-utils pycparser==2.21 @@ -130,11 +124,11 @@ stevedore==5.2.0 # edx-opaque-keys text-unidecode==1.3 # via python-slugify -typing-extensions==4.9.0 - # via - # asgiref - # edx-opaque-keys +typing-extensions==4.10.0 + # via edx-opaque-keys urllib3==2.2.1 # via requests -zipp==3.17.0 - # via importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +setuptools==69.1.1 + # via -r requirements/base.in diff --git a/requirements/ci.txt b/requirements/ci.txt index e7a8760..5757c41 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -28,10 +28,6 @@ pluggy==1.4.0 # via tox pyproject-api==1.6.1 # via tox -tomli==2.0.1 - # via - # pyproject-api - # tox tox==4.13.0 # via -r requirements/ci.in virtualenv==20.25.1 diff --git a/requirements/dev.txt b/requirements/dev.txt index ee4d56f..02331a6 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -8,7 +8,7 @@ asgiref==3.7.2 # via # -r requirements/quality.txt # django -astroid==3.0.3 +astroid==3.1.0 # via # -r requirements/quality.txt # pylint @@ -74,8 +74,7 @@ cryptography==42.0.5 # via # -r requirements/quality.txt # pyjwt - # secretstorage -ddt==1.7.1 +ddt==1.7.2 # via -r requirements/quality.txt diff-cover==8.0.3 # via -r requirements/dev.in @@ -142,10 +141,6 @@ edx-opaque-keys==2.5.1 # edx-drf-extensions edx-toggles==5.1.1 # via -r requirements/quality.txt -exceptiongroup==1.2.0 - # via - # -r requirements/quality.txt - # pytest filelock==3.13.1 # via # -r requirements/ci.txt @@ -157,17 +152,8 @@ idna==3.6 # requests importlib-metadata==7.0.1 # via - # -r requirements/pip-tools.txt # -r requirements/quality.txt - # build - # keyring # twine -importlib-resources==6.1.1 - # via - # -r requirements/quality.txt - # jsonschema - # jsonschema-specifications - # keyring iniconfig==2.0.0 # via # -r requirements/quality.txt @@ -180,11 +166,6 @@ jaraco-classes==3.3.1 # via # -r requirements/quality.txt # keyring -jeepney==0.8.0 - # via - # -r requirements/quality.txt - # keyring - # secretstorage jinja2==3.1.3 # via # -r requirements/quality.txt @@ -251,10 +232,6 @@ pkginfo==1.9.6 # via # -r requirements/quality.txt # twine -pkgutil-resolve-name==1.3.10 - # via - # -r requirements/quality.txt - # jsonschema platformdirs==4.2.0 # via # -r requirements/ci.txt @@ -294,7 +271,7 @@ pyjwt[crypto]==2.8.0 # -r requirements/quality.txt # drf-jwt # edx-drf-extensions -pylint==3.0.4 +pylint==3.1.0 # via # -r requirements/quality.txt # edx-lint @@ -386,10 +363,6 @@ rpds-py==0.18.0 # -r requirements/quality.txt # jsonschema # referencing -secretstorage==3.3.3 - # via - # -r requirements/quality.txt - # keyring semantic-version==2.10.0 # via # -r requirements/quality.txt @@ -417,19 +390,6 @@ text-unidecode==1.3 # via # -r requirements/quality.txt # python-slugify -tomli==2.0.1 - # via - # -r requirements/ci.txt - # -r requirements/pip-tools.txt - # -r requirements/quality.txt - # build - # coverage - # pip-tools - # pylint - # pyproject-api - # pyproject-hooks - # pytest - # tox tomlkit==0.12.3 # via # -r requirements/quality.txt @@ -438,14 +398,10 @@ tox==4.13.0 # via -r requirements/ci.txt twine==5.0.0 # via -r requirements/quality.txt -typing-extensions==4.9.0 +typing-extensions==4.10.0 # via # -r requirements/quality.txt - # asgiref - # astroid # edx-opaque-keys - # pylint - # rich urllib3==2.2.1 # via # -r requirements/quality.txt @@ -461,11 +417,16 @@ wheel==0.42.0 # pip-tools zipp==3.17.0 # via - # -r requirements/pip-tools.txt # -r requirements/quality.txt # importlib-metadata - # importlib-resources # The following packages are considered to be unsafe in a requirements file: -# pip -# setuptools +pip==24.0 + # via + # -r requirements/pip-tools.txt + # pip-tools +setuptools==69.1.1 + # via + # -r requirements/pip-tools.txt + # -r requirements/quality.txt + # pip-tools diff --git a/requirements/doc.txt b/requirements/doc.txt index 8cd0319..476f536 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -1,10 +1,10 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade # -alabaster==0.7.13 +alabaster==0.7.16 # via sphinx asgiref==3.7.2 # via @@ -47,7 +47,7 @@ cryptography==42.0.5 # via # -r requirements/test.txt # pyjwt -ddt==1.7.1 +ddt==1.7.2 # via -r requirements/test.txt django==3.2.24 # via @@ -105,23 +105,12 @@ edx-sphinx-theme==3.1.0 # via -r requirements/doc.in edx-toggles==5.1.1 # via -r requirements/test.txt -exceptiongroup==1.2.0 - # via - # -r requirements/test.txt - # pytest idna==3.6 # via # -r requirements/test.txt # requests imagesize==1.4.1 # via sphinx -importlib-metadata==7.0.1 - # via sphinx -importlib-resources==6.1.1 - # via - # -r requirements/test.txt - # jsonschema - # jsonschema-specifications iniconfig==2.0.0 # via # -r requirements/test.txt @@ -156,10 +145,6 @@ pbr==6.0.0 # via # -r requirements/test.txt # stevedore -pkgutil-resolve-name==1.3.10 - # via - # -r requirements/test.txt - # jsonschema pluggy==1.4.0 # via # -r requirements/test.txt @@ -206,7 +191,6 @@ python-slugify==8.0.4 pytz==2024.1 # via # -r requirements/test.txt - # babel # django # djangorestframework pyyaml==6.0.1 @@ -247,17 +231,17 @@ sphinx==5.3.0 # via # -r requirements/doc.in # edx-sphinx-theme -sphinxcontrib-applehelp==1.0.4 +sphinxcontrib-applehelp==1.0.8 # via sphinx -sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-devhelp==1.0.6 # via sphinx -sphinxcontrib-htmlhelp==2.0.1 +sphinxcontrib-htmlhelp==2.0.5 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-qthelp==1.0.7 # via sphinx -sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib-serializinghtml==1.1.10 # via sphinx sqlparse==0.4.4 # via @@ -274,23 +258,15 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -tomli==2.0.1 +typing-extensions==4.10.0 # via # -r requirements/test.txt - # coverage - # doc8 - # pytest -typing-extensions==4.9.0 - # via - # -r requirements/test.txt - # asgiref # edx-opaque-keys urllib3==2.2.1 # via # -r requirements/test.txt # requests -zipp==3.17.0 - # via - # -r requirements/test.txt - # importlib-metadata - # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +setuptools==69.1.1 + # via -r requirements/test.txt diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 44c48d9..3ed9776 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -8,8 +8,6 @@ build==1.0.3 # via pip-tools click==8.1.7 # via pip-tools -importlib-metadata==7.0.1 - # via build packaging==23.2 # via build pip-tools==7.4.0 @@ -18,16 +16,11 @@ pyproject-hooks==1.0.0 # via # build # pip-tools -tomli==2.0.1 - # via - # build - # pip-tools - # pyproject-hooks wheel==0.42.0 # via pip-tools -zipp==3.17.0 - # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: -# pip -# setuptools +pip==24.0 + # via pip-tools +setuptools==69.1.1 + # via pip-tools diff --git a/requirements/pip.txt b/requirements/pip.txt index 6665603..e45232f 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade diff --git a/requirements/quality.txt b/requirements/quality.txt index 43e75ce..16a5fdf 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -8,7 +8,7 @@ asgiref==3.7.2 # via # -r requirements/test.txt # django -astroid==3.0.3 +astroid==3.1.0 # via # pylint # pylint-celery @@ -52,8 +52,7 @@ cryptography==42.0.5 # via # -r requirements/test.txt # pyjwt - # secretstorage -ddt==1.7.1 +ddt==1.7.2 # via -r requirements/test.txt dill==0.3.8 # via pylint @@ -107,24 +106,12 @@ edx-opaque-keys==2.5.1 # edx-drf-extensions edx-toggles==5.1.1 # via -r requirements/test.txt -exceptiongroup==1.2.0 - # via - # -r requirements/test.txt - # pytest idna==3.6 # via # -r requirements/test.txt # requests importlib-metadata==7.0.1 - # via - # keyring - # twine -importlib-resources==6.1.1 - # via - # -r requirements/test.txt - # jsonschema - # jsonschema-specifications - # keyring + # via twine iniconfig==2.0.0 # via # -r requirements/test.txt @@ -135,10 +122,6 @@ isort==5.13.2 # pylint jaraco-classes==3.3.1 # via keyring -jeepney==0.8.0 - # via - # keyring - # secretstorage jinja2==3.1.3 # via # -r requirements/test.txt @@ -179,10 +162,6 @@ pbr==6.0.0 # stevedore pkginfo==1.9.6 # via twine -pkgutil-resolve-name==1.3.10 - # via - # -r requirements/test.txt - # jsonschema platformdirs==4.2.0 # via pylint pluggy==1.4.0 @@ -210,7 +189,7 @@ pyjwt[crypto]==2.8.0 # -r requirements/test.txt # drf-jwt # edx-drf-extensions -pylint==3.0.4 +pylint==3.1.0 # via # edx-lint # pylint-celery @@ -278,8 +257,6 @@ rpds-py==0.18.0 # -r requirements/test.txt # jsonschema # referencing -secretstorage==3.3.3 - # via keyring semantic-version==2.10.0 # via # -r requirements/test.txt @@ -305,31 +282,22 @@ 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.12.3 # via pylint twine==5.0.0 # via -r requirements/quality.in -typing-extensions==4.9.0 +typing-extensions==4.10.0 # via # -r requirements/test.txt - # asgiref - # astroid # edx-opaque-keys - # pylint - # rich urllib3==2.2.1 # via # -r requirements/test.txt # requests # twine zipp==3.17.0 - # via - # -r requirements/test.txt - # importlib-metadata - # importlib-resources + # via importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +setuptools==69.1.1 + # via -r requirements/test.txt diff --git a/requirements/scripts.txt b/requirements/scripts.txt index 4a68f6d..4c29368 100644 --- a/requirements/scripts.txt +++ b/requirements/scripts.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -107,11 +107,6 @@ idna==3.6 # via # -r requirements/base.txt # requests -importlib-resources==6.1.1 - # via - # -r requirements/base.txt - # jsonschema - # jsonschema-specifications jinja2==3.1.3 # via # -r requirements/base.txt @@ -136,10 +131,6 @@ pbr==6.0.0 # via # -r requirements/base.txt # stevedore -pkgutil-resolve-name==1.3.10 - # via - # -r requirements/base.txt - # jsonschema psutil==5.9.8 # via # -r requirements/base.txt @@ -211,16 +202,15 @@ text-unidecode==1.3 # via # -r requirements/base.txt # python-slugify -typing-extensions==4.9.0 +typing-extensions==4.10.0 # via # -r requirements/base.txt - # asgiref # edx-opaque-keys urllib3==2.2.1 # via # -r requirements/base.txt # requests -zipp==3.17.0 - # via - # -r requirements/base.txt - # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +setuptools==69.1.1 + # via -r requirements/base.txt diff --git a/requirements/test.txt b/requirements/test.txt index 445b44a..20da224 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.8 +# This file is autogenerated by pip-compile with Python 3.12 # by the following command: # # make upgrade @@ -42,7 +42,7 @@ cryptography==42.0.5 # via # -r requirements/base.txt # pyjwt -ddt==1.7.1 +ddt==1.7.2 # via -r requirements/test.in # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt @@ -89,17 +89,10 @@ edx-opaque-keys==2.5.1 # edx-drf-extensions edx-toggles==5.1.1 # via -r requirements/base.txt -exceptiongroup==1.2.0 - # via pytest idna==3.6 # via # -r requirements/base.txt # requests -importlib-resources==6.1.1 - # via - # -r requirements/base.txt - # jsonschema - # jsonschema-specifications iniconfig==2.0.0 # via pytest jinja2==3.1.3 @@ -126,10 +119,6 @@ pbr==6.0.0 # via # -r requirements/base.txt # stevedore -pkgutil-resolve-name==1.3.10 - # via - # -r requirements/base.txt - # jsonschema pluggy==1.4.0 # via pytest psutil==5.9.8 @@ -210,20 +199,15 @@ text-unidecode==1.3 # via # -r requirements/base.txt # python-slugify -tomli==2.0.1 - # via - # coverage - # pytest -typing-extensions==4.9.0 +typing-extensions==4.10.0 # via # -r requirements/base.txt - # asgiref # edx-opaque-keys urllib3==2.2.1 # via # -r requirements/base.txt # requests -zipp==3.17.0 - # via - # -r requirements/base.txt - # importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +setuptools==69.1.1 + # via -r requirements/base.txt diff --git a/tox.ini b/tox.ini index b418095..2d29123 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py38-django{32,40}, quality +envlist = py{38, 312}-django{42}, quality [doc8] ; D001 = Line too long @@ -36,8 +36,7 @@ norecursedirs = .* requirements site-packages [testenv] deps = - django32: Django>=3.2,<4.0 - django40: Django>=4.0,<4.1 + django42: Django>=4.2,<4.3 -r{toxinidir}/requirements/test.txt commands = pytest {posargs}