From 1ef90061a40cab5c4df9bef7620ba455597797c8 Mon Sep 17 00:00:00 2001 From: Usama Sadiq Date: Thu, 28 Mar 2024 22:00:35 +0500 Subject: [PATCH] feat: add python 311 support --- .github/workflows/ci.yml | 4 +- requirements/base.txt | 10 ++-- requirements/ci.txt | 30 +++++++----- requirements/common_constraints.txt | 11 ++++- requirements/constraints.txt | 4 -- requirements/dev.txt | 76 +++++++++++++++++++---------- requirements/pip-tools.txt | 16 +++--- requirements/pip.txt | 4 +- requirements/test.txt | 50 +++++++++++-------- setup.py | 4 +- tox.ini | 3 +- 11 files changed, 130 insertions(+), 82 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 168f1d26..51bf7e96 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,8 +14,8 @@ jobs: strategy: matrix: os: [ubuntu-20.04] - python-version: ['3.8'] - toxenv: [quality, django32, django42, check_keywords] + python-version: ['3.8', '3.11'] + toxenv: [quality, django42, check_keywords] steps: - uses: actions/checkout@v3 diff --git a/requirements/base.txt b/requirements/base.txt index 380073b2..79a90fa4 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -4,7 +4,9 @@ # # make upgrade # -asgiref==3.7.2 +asgiref==3.8.1 + # via django +backports-zoneinfo==0.2.1 # via django certifi==2024.2.2 # via requests @@ -20,7 +22,7 @@ defusedxml==0.8.0rc2 # via # python3-openid # social-auth-core -django==3.2.24 +django==4.2.11 # via # -c requirements/common_constraints.txt # -r requirements/base.in @@ -39,13 +41,11 @@ pyjwt[crypto]==2.8.0 # social-auth-core python3-openid==3.2.0 # via social-auth-core -pytz==2024.1 - # via django requests==2.31.0 # via # requests-oauthlib # social-auth-core -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via social-auth-core six==1.16.0 # via -r requirements/base.in diff --git a/requirements/ci.txt b/requirements/ci.txt index c8b65c2d..c085cbcf 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -4,27 +4,35 @@ # # make upgrade # +cachetools==5.3.3 + # via tox +chardet==5.2.0 + # via tox +colorama==0.4.6 + # via tox distlib==0.3.8 # via virtualenv -filelock==3.13.1 +filelock==3.13.3 # via # tox # virtualenv -packaging==23.2 - # via tox +packaging==24.0 + # via + # pyproject-api + # tox platformdirs==4.2.0 - # via virtualenv + # via + # tox + # virtualenv pluggy==1.4.0 # via tox -py==1.11.0 - # via tox -six==1.16.0 +pyproject-api==1.6.1 # via tox tomli==2.0.1 - # via tox -tox==3.28.0 # via - # -c requirements/constraints.txt - # -r requirements/ci.in + # pyproject-api + # tox +tox==4.14.2 + # via -r requirements/ci.in virtualenv==20.25.1 # via tox diff --git a/requirements/common_constraints.txt b/requirements/common_constraints.txt index 15aafb29..e3bf8eae 100644 --- a/requirements/common_constraints.txt +++ b/requirements/common_constraints.txt @@ -13,7 +13,7 @@ # using LTS django version -Django<4.0 +Django<5.0 # elasticsearch>=7.14.0 includes breaking changes in it which caused issues in discovery upgrade process. # elastic search changelog: https://www.elastic.co/guide/en/enterprise-search/master/release-notes-7.14.0.html @@ -21,3 +21,12 @@ elasticsearch<7.14.0 # django-simple-history>3.0.0 adds indexing and causes a lot of migrations to be affected django-simple-history==3.0.0 + +# opentelemetry requires version 6.x at the moment: +# https://github.com/open-telemetry/opentelemetry-python/issues/3570 +# Normally this could be added as a constraint in edx-django-utils, where we're +# adding the opentelemetry dependency. However, when we compile pip-tools.txt, +# that uses version 7.x, and then there's no undoing that when compiling base.txt. +# So we need to pin it globally, for now. +# Ticket for unpinning: https://github.com/openedx/edx-lint/issues/407 +importlib-metadata<7 diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 1b874c0b..aaea43da 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -9,7 +9,3 @@ # linking to it here is good. -c common_constraints.txt - -# tox>4.0.0 isn't yet compatible with many tox plugins, causing CI failures in almost all repos. -# Details can be found in this discussion: https://github.com/tox-dev/tox/discussions/1810 -tox<4.0.0 diff --git a/requirements/dev.txt b/requirements/dev.txt index cf90fd06..9b58ac3b 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -8,19 +8,29 @@ argparse==1.4.0 # via # -r requirements/test.txt # unittest2 -asgiref==3.7.2 +asgiref==3.8.1 # via # -r requirements/test.txt # django +astroid==3.1.0 astroid==3.1.0 # via # -r requirements/test.txt # pylint # pylint-celery -build==1.0.3 +backports-zoneinfo==0.2.1 + # via + # -r requirements/test.txt + # django +build==1.2.1 # via # -r requirements/pip-tools.txt # pip-tools +cachetools==5.3.3 + # via + # -r requirements/ci.txt + # -r requirements/test.txt + # tox certifi==2024.2.2 # via # -r requirements/test.txt @@ -29,6 +39,11 @@ cffi==1.16.0 # via # -r requirements/test.txt # cryptography +chardet==5.2.0 + # via + # -r requirements/ci.txt + # -r requirements/test.txt + # tox charset-normalizer==3.3.2 # via # -r requirements/test.txt @@ -45,14 +60,20 @@ click-log==0.4.0 # via # -r requirements/test.txt # edx-lint -code-annotations==1.6.0 +code-annotations==1.7.0 # via # -r requirements/test.txt # edx-lint -coverage[toml]==7.4.3 +colorama==0.4.6 + # via + # -r requirements/ci.txt + # -r requirements/test.txt + # tox +coverage[toml]==7.4.4 # via # -r requirements/test.txt # pytest-cov +cryptography==42.0.5 cryptography==42.0.5 # via # -r requirements/test.txt @@ -72,7 +93,7 @@ distlib==0.3.8 # -r requirements/ci.txt # -r requirements/test.txt # virtualenv -django==3.2.24 +django==4.2.11 # via # -c requirements/common_constraints.txt # -r requirements/test.txt @@ -86,7 +107,7 @@ exceptiongroup==1.2.0 # via # -r requirements/test.txt # pytest -filelock==3.13.1 +filelock==3.13.3 # via # -r requirements/ci.txt # -r requirements/test.txt @@ -98,8 +119,9 @@ idna==3.6 # via # -r requirements/test.txt # requests -importlib-metadata==7.0.1 +importlib-metadata==6.11.0 # via + # -c requirements/common_constraints.txt # -r requirements/pip-tools.txt # build iniconfig==2.0.0 @@ -131,25 +153,27 @@ oauthlib==3.2.2 # -r requirements/test.txt # requests-oauthlib # social-auth-core -packaging==23.2 +packaging==24.0 # via # -r requirements/ci.txt # -r requirements/pip-tools.txt # -r requirements/test.txt # build + # pyproject-api # pytest # tox pbr==6.0.0 # via # -r requirements/test.txt # stevedore -pip-tools==7.4.0 +pip-tools==7.4.1 # via -r requirements/pip-tools.txt platformdirs==4.2.0 # via # -r requirements/ci.txt # -r requirements/test.txt # pylint + # tox # virtualenv pluggy==1.4.0 # via @@ -157,11 +181,6 @@ pluggy==1.4.0 # -r requirements/test.txt # pytest # tox -py==1.11.0 - # via - # -r requirements/ci.txt - # -r requirements/test.txt - # tox pycodestyle==2.11.1 # via -r requirements/test.txt pycparser==2.21 @@ -174,6 +193,7 @@ pyjwt[crypto]==2.8.0 # via # -r requirements/test.txt # social-auth-core +pylint==3.1.0 pylint==3.1.0 # via # -r requirements/test.txt @@ -194,17 +214,22 @@ pylint-plugin-utils==0.8.2 # -r requirements/test.txt # pylint-celery # pylint-django +pyproject-api==1.6.1 + # via + # -r requirements/ci.txt + # -r requirements/test.txt + # tox pyproject-hooks==1.0.0 # via # -r requirements/pip-tools.txt # build # pip-tools -pytest==8.0.2 +pytest==8.1.1 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.txt pytest-django==4.8.0 # via -r requirements/test.txt @@ -216,10 +241,6 @@ python3-openid==3.2.0 # via # -r requirements/test.txt # social-auth-core -pytz==2024.1 - # via - # -r requirements/test.txt - # django pyyaml==6.0.1 # via # -r requirements/test.txt @@ -230,17 +251,15 @@ requests==2.31.0 # -r requirements/test.txt # requests-oauthlib # social-auth-core -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via # -r requirements/test.txt # social-auth-core six==1.16.0 # via - # -r requirements/ci.txt # -r requirements/test.txt # edx-django-release-util # edx-lint - # tox # unittest2 social-auth-app-django==5.4.0 # via -r requirements/test.txt @@ -252,6 +271,7 @@ sqlparse==0.4.4 # via # -r requirements/test.txt # django +stevedore==5.2.0 stevedore==5.2.0 # via # -r requirements/test.txt @@ -269,22 +289,24 @@ tomli==2.0.1 # coverage # pip-tools # pylint + # pyproject-api # pyproject-hooks # pytest # tox +tomlkit==0.12.4 tomlkit==0.12.4 # via # -r requirements/test.txt # pylint -tox==3.28.0 +tox==4.14.2 # via - # -c requirements/constraints.txt # -r requirements/ci.txt # -r requirements/test.txt traceback2==1.4.0 # via # -r requirements/test.txt # unittest2 +typing-extensions==4.10.0 typing-extensions==4.10.0 # via # -r requirements/test.txt @@ -302,11 +324,11 @@ virtualenv==20.25.1 # -r requirements/ci.txt # -r requirements/test.txt # tox -wheel==0.42.0 +wheel==0.43.0 # via # -r requirements/pip-tools.txt # pip-tools -zipp==3.17.0 +zipp==3.18.1 # via # -r requirements/pip-tools.txt # importlib-metadata diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 44c48d99..6401f544 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,15 +4,17 @@ # # make upgrade # -build==1.0.3 +build==1.2.1 # via pip-tools click==8.1.7 # via pip-tools -importlib-metadata==7.0.1 - # via build -packaging==23.2 +importlib-metadata==6.11.0 + # via + # -c requirements/common_constraints.txt + # build +packaging==24.0 # via build -pip-tools==7.4.0 +pip-tools==7.4.1 # via -r requirements/pip-tools.in pyproject-hooks==1.0.0 # via @@ -23,9 +25,9 @@ tomli==2.0.1 # build # pip-tools # pyproject-hooks -wheel==0.42.0 +wheel==0.43.0 # via pip-tools -zipp==3.17.0 +zipp==3.18.1 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/pip.txt b/requirements/pip.txt index 66656035..cf449024 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,11 +4,11 @@ # # make upgrade # -wheel==0.42.0 +wheel==0.43.0 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: pip==24.0 # via -r requirements/pip.in -setuptools==69.1.1 +setuptools==69.2.0 # via -r requirements/pip.in diff --git a/requirements/test.txt b/requirements/test.txt index 2df66a1c..18884af1 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -6,14 +6,21 @@ # argparse==1.4.0 # via unittest2 -asgiref==3.7.2 +asgiref==3.8.1 # via # -r requirements/base.txt # django +astroid==3.1.0 astroid==3.1.0 # via # pylint # pylint-celery +backports-zoneinfo==0.2.1 + # via + # -r requirements/base.txt + # django +cachetools==5.3.3 + # via tox certifi==2024.2.2 # via # -r requirements/base.txt @@ -22,6 +29,8 @@ cffi==1.16.0 # via # -r requirements/base.txt # cryptography +chardet==5.2.0 + # via tox charset-normalizer==3.3.2 # via # -r requirements/base.txt @@ -33,12 +42,15 @@ click==8.1.7 # edx-lint click-log==0.4.0 # via edx-lint -code-annotations==1.6.0 +code-annotations==1.7.0 # via edx-lint -coverage[toml]==7.4.3 +colorama==0.4.6 + # via tox +coverage[toml]==7.4.4 # via # -r requirements/test.in # pytest-cov +cryptography==42.0.5 cryptography==42.0.5 # via # -r requirements/base.txt @@ -64,7 +76,7 @@ edx-lint==5.3.6 # via -r requirements/test.in exceptiongroup==1.2.0 # via pytest -filelock==3.13.1 +filelock==3.13.3 # via # tox # virtualenv @@ -91,8 +103,9 @@ oauthlib==3.2.2 # -r requirements/base.txt # requests-oauthlib # social-auth-core -packaging==23.2 +packaging==24.0 # via + # pyproject-api # pytest # tox pbr==6.0.0 @@ -100,13 +113,12 @@ pbr==6.0.0 platformdirs==4.2.0 # via # pylint + # tox # virtualenv pluggy==1.4.0 # via # pytest # tox -py==1.11.0 - # via tox pycodestyle==2.11.1 # via -r requirements/test.in pycparser==2.21 @@ -119,6 +131,7 @@ pyjwt[crypto]==2.8.0 # via # -r requirements/base.txt # social-auth-core +pylint==3.1.0 pylint==3.1.0 # via # edx-lint @@ -133,11 +146,13 @@ pylint-plugin-utils==0.8.2 # via # pylint-celery # pylint-django -pytest==8.0.2 +pyproject-api==1.6.1 + # via tox +pytest==8.1.1 # via # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.in pytest-django==4.8.0 # via -r requirements/test.in @@ -147,10 +162,6 @@ python3-openid==3.2.0 # via # -r requirements/base.txt # social-auth-core -pytz==2024.1 - # via - # -r requirements/base.txt - # django pyyaml==6.0.1 # via # code-annotations @@ -160,7 +171,7 @@ requests==2.31.0 # -r requirements/base.txt # requests-oauthlib # social-auth-core -requests-oauthlib==1.3.1 +requests-oauthlib==2.0.0 # via # -r requirements/base.txt # social-auth-core @@ -169,7 +180,6 @@ six==1.16.0 # -r requirements/base.txt # edx-django-release-util # edx-lint - # tox # unittest2 social-auth-app-django==5.4.0 # via -r requirements/base.txt @@ -181,6 +191,7 @@ sqlparse==0.4.4 # via # -r requirements/base.txt # django +stevedore==5.2.0 stevedore==5.2.0 # via code-annotations text-unidecode==1.3 @@ -189,16 +200,17 @@ tomli==2.0.1 # via # coverage # pylint + # pyproject-api # pytest # tox +tomlkit==0.12.4 tomlkit==0.12.4 # via pylint -tox==3.28.0 - # via - # -c requirements/constraints.txt - # -r requirements/test.in +tox==4.14.2 + # via -r requirements/test.in traceback2==1.4.0 # via unittest2 +typing-extensions==4.10.0 typing-extensions==4.10.0 # via # -r requirements/base.txt diff --git a/setup.py b/setup.py index 9db7ba57..a1bddccd 100644 --- a/setup.py +++ b/setup.py @@ -106,9 +106,9 @@ def get_version(*file_paths): 'Operating System :: OS Independent', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.11', 'Framework :: Django', - 'Framework :: Django :: 3.2', - 'Framework :: Django :: 4.0', + 'Framework :: Django :: 4.2', 'Topic :: Internet', ], keywords='authentication edx', diff --git a/tox.ini b/tox.ini index bf771d59..87e3b1fc 100644 --- a/tox.ini +++ b/tox.ini @@ -1,12 +1,11 @@ [tox] -envlist = py38-django{32,42},quality +envlist = py{38, 311}-django{42}, quality, check_keywords [pycodestyle] max-line-length = 120 [testenv] deps = - django32: Django>=3.2,<4.0 django42: Django>=4.2,<4.3 -r{toxinidir}/requirements/test.txt commands =