From 4c7435bf1e0d993c30e6fd107f992962154e3f71 Mon Sep 17 00:00:00 2001 From: Aarif Date: Thu, 7 May 2020 18:05:07 +0500 Subject: [PATCH] Added support for python 3.8 and dropped support for older Django versions --- .travis.yml | 14 +--- HISTORY.rst | 5 ++ auth_backends/__init__.py | 2 +- auth_backends/backends.py | 1 + auth_backends/pipeline.py | 4 +- auth_backends/tests/mixins.py | 2 +- auth_backends/views.py | 1 + requirements/base.in | 2 +- requirements/base.txt | 27 ++++--- requirements/constraints.txt | 18 +---- requirements/dev.txt | 136 +++++++++++++++++----------------- requirements/pip-tools.txt | 7 +- requirements/test.txt | 91 +++++++++++------------ requirements/travis.txt | 36 ++++----- setup.py | 9 +-- tox.ini | 6 +- 16 files changed, 173 insertions(+), 188 deletions(-) diff --git a/.travis.yml b/.travis.yml index de17e3e8..f0114205 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,24 +5,18 @@ language: python python: - 3.5 + - 3.8 env: - - TOXENV=django111 - - TOXENV=django20 - - TOXENV=django21 - TOXENV=django22 - TOXENV=quality -matrix: - include: - - python: 2.7 - env: TOXENV=django111 - cache: - pip install: - - pip install -U pip wheel codecov + - pip install pip==20.0.2 + - pip install -U wheel codecov - pip install -r requirements/travis.txt script: @@ -40,4 +34,4 @@ deploy: on: tags: true python: 3.5 - condition: '$TOXENV = django111' + condition: '$TOXENV = django22' diff --git a/HISTORY.rst b/HISTORY.rst index 18bf890a..01a08d81 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -3,6 +3,11 @@ History ======= +3.1.0 (2020-05-08) +------------------ +- Added support for python 3.8 +- Removed support for Django versions older than 2.2 + 3.0.2 (2020-02-06) ------------------ diff --git a/auth_backends/__init__.py b/auth_backends/__init__.py index dca72fbf..e193af21 100644 --- a/auth_backends/__init__.py +++ b/auth_backends/__init__.py @@ -3,4 +3,4 @@ These package is designed to be used primarily with Open edX Django projects, but should be compatible with non-edX projects as well. """ -__version__ = '3.0.2' # pragma: no cover +__version__ = '3.1.0' # pragma: no cover diff --git a/auth_backends/backends.py b/auth_backends/backends.py index 4cf31f16..c3cef16d 100644 --- a/auth_backends/backends.py +++ b/auth_backends/backends.py @@ -61,6 +61,7 @@ class EdXOAuth2(BaseOAuth2): auth_complete_signal = Signal(providing_args=['user']) @property + # pylint: disable= missing-function-docstring def logout_url(self): if self.setting('LOGOUT_REDIRECT_URL'): return '{}?client_id={}&redirect_url={}'.format( diff --git a/auth_backends/pipeline.py b/auth_backends/pipeline.py index 229222eb..3e67c55b 100644 --- a/auth_backends/pipeline.py +++ b/auth_backends/pipeline.py @@ -11,7 +11,7 @@ # pylint: disable=unused-argument # The function parameters must be named exactly as they are below. # Do not change them to appease Pylint. -def get_user_if_exists(strategy, details, user=None, *args, **kwargs): +def get_user_if_exists(strategy, details, user=None, *args, **kwargs): # pylint: disable=keyword-arg-before-vararg """Return a User with the given username iff the User exists.""" if user: return {'is_new': False} @@ -31,7 +31,7 @@ def get_user_if_exists(strategy, details, user=None, *args, **kwargs): return {} -def update_email(strategy, details, user=None, *args, **kwargs): +def update_email(strategy, details, user=None, *args, **kwargs): # pylint: disable=keyword-arg-before-vararg """Update the user's email address using data from provider.""" if user: email = details.get('email') diff --git a/auth_backends/tests/mixins.py b/auth_backends/tests/mixins.py index 61887388..8a7f99d3 100644 --- a/auth_backends/tests/mixins.py +++ b/auth_backends/tests/mixins.py @@ -8,7 +8,7 @@ User = get_user_model() -class LogoutViewTestMixin(object): +class LogoutViewTestMixin: """ Mixin for tests of the LogoutRedirectBaseView children. """ def create_user(self): diff --git a/auth_backends/views.py b/auth_backends/views.py index 88efedbb..9e075df3 100644 --- a/auth_backends/views.py +++ b/auth_backends/views.py @@ -43,6 +43,7 @@ def dispatch(self, request, *args, **kwargs): return super(EdxOAuth2LogoutView, self).dispatch(request, *args, **kwargs) @property + # pylint: disable= missing-function-docstring def url(self): # NOTE: We use a property here so that we can take advantage of the base class' # get_redirect_url() with minimal effort. diff --git a/requirements/base.in b/requirements/base.in index 239390e8..cda498eb 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -1,7 +1,7 @@ # Core requirements for using this package template -c constraints.txt -Django>=1.11 +Django PyJWT six social-auth-app-django diff --git a/requirements/base.txt b/requirements/base.txt index 5ccca5ce..9c1da3df 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -4,17 +4,22 @@ # # make upgrade # -certifi==2019.11.28 # via requests +certifi==2020.4.5.1 # via requests +cffi==1.14.0 # via cryptography chardet==3.0.4 # via requests -django==1.11.28 -idna==2.8 # via requests +cryptography==2.9.2 # via social-auth-core +defusedxml==0.6.0 # via python3-openid, social-auth-core +django==2.2.12 # via -c requirements/constraints.txt, -r requirements/base.in +idna==2.9 # via requests oauthlib==3.1.0 # via requests-oauthlib, social-auth-core -pyjwt==1.7.1 -python-openid==2.2.5 # via social-auth-core -pytz==2019.3 # via django +pycparser==2.20 # via cffi +pyjwt==1.7.1 # via -r requirements/base.in, social-auth-core +python3-openid==3.1.0 # via social-auth-core +pytz==2020.1 # via django requests-oauthlib==1.3.0 # via social-auth-core -requests==2.22.0 # via requests-oauthlib, social-auth-core -six==1.14.0 -social-auth-app-django==3.1.0 -social-auth-core==3.2.0 -urllib3==1.25.8 # via requests +requests==2.23.0 # via requests-oauthlib, social-auth-core +six==1.14.0 # via -r requirements/base.in, cryptography, social-auth-app-django, social-auth-core +social-auth-app-django==3.1.0 # via -r requirements/base.in +social-auth-core==3.3.3 # via -r requirements/base.in, social-auth-app-django +sqlparse==0.3.1 # via django +urllib3==1.25.9 # via requests diff --git a/requirements/constraints.txt b/requirements/constraints.txt index 62144a5f..52794d2e 100644 --- a/requirements/constraints.txt +++ b/requirements/constraints.txt @@ -8,22 +8,8 @@ # pin when possible. Writing an issue against the offending project and # linking to it here is good. +# stay on LTS +Django<2.3 -# futures is not valid for Python 3, and will cause dependency -# conflicts in tox if not constrained here, possibly because only the -# most recent versions of futures declare this. -futures ; python_version < "3" -# NOTE: The following allows us to run "make upgrade" under Python 3 and get dependencies -# that work for Python 2. - -# A dependency of pytest. Pytest doesn't constrain it and 6.0.0 onward -# only works with python 3 -more-itertools<6.0.0 - -# Constrained for Python 2 support -astroid<2.0.0 - -# Constrained for Python 2 support -edx-lint<1.4.0 diff --git a/requirements/dev.txt b/requirements/dev.txt index dd1acb80..3b754b51 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -4,71 +4,71 @@ # # make upgrade # -appdirs==1.4.3 -argparse==1.4.0 -astroid==1.5.3 -atomicwrites==1.3.0 -attrs==19.3.0 -backports.functools-lru-cache==1.6.1 -certifi==2019.11.28 -chardet==3.0.4 -click-log==0.3.2 -click==7.0 -codecov==2.0.15 -configparser==4.0.2 -contextlib2==0.6.0.post1 -coverage==5.0.3 -django==1.11.28 -edx-lint==1.3.1 -enum34==1.1.6 -filelock==3.0.12 -funcsigs==1.0.2 -future==0.18.2 -futures==3.3.0 ; python_version < "3" -httpretty==0.9.7 -idna==2.8 -importlib-metadata==1.5.0 -importlib-resources==1.0.2 -isort==4.3.21 -lazy-object-proxy==1.4.3 -linecache2==1.0.0 -mccabe==0.6.1 -more-itertools==5.0.0 -oauthlib==3.1.0 -packaging==20.1 -pathlib2==2.3.5 -pip-tools==4.4.1 -pluggy==0.13.1 -py==1.8.1 -pycodestyle==2.5.0 -pycryptodomex==3.9.6 -pyjwkest==1.4.2 -pyjwt==1.7.1 -pylint-celery==0.3 -pylint-django==0.7.2 -pylint-plugin-utils==0.6 -pylint==1.7.6 -pyparsing==2.4.6 -pytest-cov==2.8.1 -pytest-django==3.8.0 -pytest==4.6.9 -python-openid==2.2.5 -pytz==2019.3 -requests-oauthlib==1.3.0 -requests==2.22.0 -scandir==1.10.0 -singledispatch==3.4.0.3 -six==1.14.0 -social-auth-app-django==3.1.0 -social-auth-core==3.2.0 -toml==0.10.0 -tox-battery==0.5.2 -tox==3.14.3 -traceback2==1.4.0 -typing==3.7.4.1 -unittest2==1.1.0 -urllib3==1.25.8 -virtualenv==20.0.0 -wcwidth==0.1.8 -wrapt==1.11.2 -zipp==1.1.0 +appdirs==1.4.3 # via -r requirements/test.txt, -r requirements/travis.txt, virtualenv +argparse==1.4.0 # via -r requirements/test.txt, unittest2 +astroid==2.3.3 # via -r requirements/test.txt, pylint, pylint-celery +attrs==19.3.0 # via -r requirements/test.txt, pytest +certifi==2020.4.5.1 # via -r requirements/test.txt, -r requirements/travis.txt, requests +cffi==1.14.0 # via -r requirements/test.txt, cryptography +chardet==3.0.4 # via -r requirements/test.txt, -r requirements/travis.txt, requests +click-log==0.3.2 # via -r requirements/test.txt, edx-lint +click==7.1.2 # via -r requirements/pip-tools.txt, -r requirements/test.txt, click-log, edx-lint, pip-tools +codecov==2.0.22 # via -r requirements/travis.txt +coverage==5.1 # via -r requirements/test.txt, -r requirements/travis.txt, codecov, pytest-cov +cryptography==2.9.2 # via -r requirements/test.txt, social-auth-core +defusedxml==0.6.0 # via -r requirements/test.txt, python3-openid, social-auth-core +distlib==0.3.0 # via -r requirements/test.txt, -r requirements/travis.txt, virtualenv +django==2.2.12 # via -c requirements/constraints.txt, -r requirements/test.txt +edx-lint==1.4.1 # via -r requirements/test.txt +filelock==3.0.12 # via -r requirements/test.txt, -r requirements/travis.txt, tox, virtualenv +future==0.18.2 # via -r requirements/test.txt, pyjwkest +httpretty==1.0.2 # via -r requirements/test.txt +idna==2.9 # via -r requirements/test.txt, -r requirements/travis.txt, requests +importlib-metadata==1.6.0 # via -r requirements/test.txt, -r requirements/travis.txt, importlib-resources, pluggy, pytest, tox, virtualenv +importlib-resources==1.5.0 # via -r requirements/test.txt, -r requirements/travis.txt, virtualenv +isort==4.3.21 # via -r requirements/test.txt, pylint +lazy-object-proxy==1.4.3 # via -r requirements/test.txt, astroid +linecache2==1.0.0 # via -r requirements/test.txt, traceback2 +mccabe==0.6.1 # via -r requirements/test.txt, pylint +more-itertools==8.2.0 # via -r requirements/test.txt, pytest +oauthlib==3.1.0 # via -r requirements/test.txt, requests-oauthlib, social-auth-core +packaging==20.3 # via -r requirements/test.txt, -r requirements/travis.txt, pytest, tox +pathlib2==2.3.5 # via -r requirements/test.txt, pytest +pip-tools==5.1.2 # via -r requirements/pip-tools.txt +pluggy==0.13.1 # via -r requirements/test.txt, -r requirements/travis.txt, pytest, tox +py==1.8.1 # via -r requirements/test.txt, -r requirements/travis.txt, pytest, tox +pycodestyle==2.5.0 # via -r requirements/test.txt +pycparser==2.20 # via -r requirements/test.txt, cffi +pycryptodomex==3.9.7 # via -r requirements/test.txt, pyjwkest +pyjwkest==1.4.2 # via -r requirements/test.txt +pyjwt==1.7.1 # via -r requirements/test.txt, social-auth-core +pylint-celery==0.3 # via -r requirements/test.txt, edx-lint +pylint-django==2.0.11 # via -r requirements/test.txt, edx-lint +pylint-plugin-utils==0.6 # via -r requirements/test.txt, pylint-celery, pylint-django +pylint==2.4.2 # via -r requirements/test.txt, edx-lint, pylint-celery, pylint-django, pylint-plugin-utils +pyparsing==2.4.7 # via -r requirements/test.txt, -r requirements/travis.txt, packaging +pytest-cov==2.8.1 # via -r requirements/test.txt +pytest-django==3.9.0 # via -r requirements/test.txt +pytest==5.4.1 # via -r requirements/test.txt, pytest-cov, pytest-django +python3-openid==3.1.0 # via -r requirements/test.txt, social-auth-core +pytz==2020.1 # via -r requirements/test.txt, django +requests-oauthlib==1.3.0 # via -r requirements/test.txt, social-auth-core +requests==2.23.0 # via -r requirements/test.txt, -r requirements/travis.txt, codecov, pyjwkest, requests-oauthlib, social-auth-core +six==1.14.0 # via -r requirements/pip-tools.txt, -r requirements/test.txt, -r requirements/travis.txt, astroid, cryptography, edx-lint, packaging, pathlib2, pip-tools, pyjwkest, social-auth-app-django, social-auth-core, tox, unittest2, virtualenv +social-auth-app-django==3.1.0 # via -r requirements/test.txt +social-auth-core==3.3.3 # via -r requirements/test.txt, social-auth-app-django +sqlparse==0.3.1 # via -r requirements/test.txt, django +toml==0.10.0 # via -r requirements/test.txt, -r requirements/travis.txt, tox +tox-battery==0.5.2 # via -r requirements/travis.txt +tox==3.15.0 # via -r requirements/test.txt, -r requirements/travis.txt, tox-battery +traceback2==1.4.0 # via -r requirements/test.txt, unittest2 +typed-ast==1.4.1 # via -r requirements/test.txt, astroid +unittest2==1.1.0 # via -r requirements/test.txt +urllib3==1.25.9 # via -r requirements/test.txt, -r requirements/travis.txt, requests +virtualenv==20.0.20 # via -r requirements/test.txt, -r requirements/travis.txt, tox +wcwidth==0.1.9 # via -r requirements/test.txt, pytest +wrapt==1.11.2 # via -r requirements/test.txt, astroid +zipp==1.2.0 # via -r requirements/test.txt, -r requirements/travis.txt, importlib-metadata, importlib-resources + +# The following packages are considered to be unsafe in a requirements file: +# pip diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 085e56d3..89fbde99 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,6 +4,9 @@ # # make upgrade # -click==7.0 # via pip-tools -pip-tools==4.4.1 +click==7.1.2 # via pip-tools +pip-tools==5.1.2 # via -r requirements/pip-tools.in six==1.14.0 # via pip-tools + +# The following packages are considered to be unsafe in a requirements file: +# pip diff --git a/requirements/test.txt b/requirements/test.txt index 95cf063d..bfd39998 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -6,65 +6,62 @@ # appdirs==1.4.3 # via virtualenv argparse==1.4.0 # via unittest2 -astroid==1.5.3 # via pylint, pylint-celery -atomicwrites==1.3.0 # via pytest +astroid==2.3.3 # via pylint, pylint-celery attrs==19.3.0 # via pytest -backports.functools-lru-cache==1.6.1 # via astroid, isort, pylint -certifi==2019.11.28 -chardet==3.0.4 +certifi==2020.4.5.1 # via -r requirements/base.txt, requests +cffi==1.14.0 # via -r requirements/base.txt, cryptography +chardet==3.0.4 # via -r requirements/base.txt, requests click-log==0.3.2 # via edx-lint -click==7.0 # via click-log, edx-lint -configparser==4.0.2 # via importlib-metadata, pylint -contextlib2==0.6.0.post1 # via importlib-metadata, virtualenv, zipp -coverage==5.0.3 -edx-lint==1.3.1 -enum34==1.1.6 # via astroid +click==7.1.2 # via click-log, edx-lint +coverage==5.1 # via -r requirements/test.in, pytest-cov +cryptography==2.9.2 # via -r requirements/base.txt, social-auth-core +defusedxml==0.6.0 # via -r requirements/base.txt, python3-openid, social-auth-core +distlib==0.3.0 # via virtualenv +edx-lint==1.4.1 # via -r requirements/test.in filelock==3.0.12 # via tox, virtualenv -funcsigs==1.0.2 # via pytest future==0.18.2 # via pyjwkest -futures==3.3.0 ; python_version < "3" # via isort -httpretty==0.9.7 -idna==2.8 -importlib-metadata==1.5.0 # via pluggy, pytest, tox, virtualenv -importlib-resources==1.0.2 # via virtualenv +httpretty==1.0.2 # via -r requirements/test.in +idna==2.9 # via -r requirements/base.txt, requests +importlib-metadata==1.6.0 # via importlib-resources, pluggy, pytest, tox, virtualenv +importlib-resources==1.5.0 # via virtualenv isort==4.3.21 # via pylint lazy-object-proxy==1.4.3 # via astroid linecache2==1.0.0 # via traceback2 mccabe==0.6.1 # via pylint -more-itertools==5.0.0 # via pytest -oauthlib==3.1.0 -packaging==20.1 # via pytest, tox -pathlib2==2.3.5 # via importlib-metadata, importlib-resources, pytest, pytest-django, virtualenv +more-itertools==8.2.0 # via pytest +oauthlib==3.1.0 # via -r requirements/base.txt, requests-oauthlib, social-auth-core +packaging==20.3 # via pytest, tox +pathlib2==2.3.5 # via pytest pluggy==0.13.1 # via pytest, tox py==1.8.1 # via pytest, tox -pycodestyle==2.5.0 -pycryptodomex==3.9.6 # via pyjwkest -pyjwkest==1.4.2 -pyjwt==1.7.1 +pycodestyle==2.5.0 # via -r requirements/test.in +pycparser==2.20 # via -r requirements/base.txt, cffi +pycryptodomex==3.9.7 # via pyjwkest +pyjwkest==1.4.2 # via -r requirements/test.in +pyjwt==1.7.1 # via -r requirements/base.txt, social-auth-core pylint-celery==0.3 # via edx-lint -pylint-django==0.7.2 # via edx-lint +pylint-django==2.0.11 # via edx-lint pylint-plugin-utils==0.6 # via pylint-celery, pylint-django -pylint==1.7.6 # via edx-lint, pylint-celery, pylint-django, pylint-plugin-utils -pyparsing==2.4.6 # via packaging -pytest-cov==2.8.1 -pytest-django==3.8.0 -pytest==4.6.9 # via pytest-cov, pytest-django -python-openid==2.2.5 -pytz==2019.3 -requests-oauthlib==1.3.0 -requests==2.22.0 -scandir==1.10.0 # via pathlib2 -singledispatch==3.4.0.3 # via astroid, pylint -six==1.14.0 -social-auth-app-django==3.1.0 -social-auth-core==3.2.0 +pylint==2.4.2 # via edx-lint, pylint-celery, pylint-django, pylint-plugin-utils +pyparsing==2.4.7 # via packaging +pytest-cov==2.8.1 # via -r requirements/test.in +pytest-django==3.9.0 # via -r requirements/test.in +pytest==5.4.1 # via pytest-cov, pytest-django +python3-openid==3.1.0 # via -r requirements/base.txt, social-auth-core +pytz==2020.1 # via -r requirements/base.txt, django +requests-oauthlib==1.3.0 # via -r requirements/base.txt, social-auth-core +requests==2.23.0 # via -r requirements/base.txt, pyjwkest, requests-oauthlib, social-auth-core +six==1.14.0 # via -r requirements/base.txt, astroid, cryptography, edx-lint, packaging, pathlib2, pyjwkest, social-auth-app-django, social-auth-core, tox, unittest2, virtualenv +social-auth-app-django==3.1.0 # via -r requirements/base.txt +social-auth-core==3.3.3 # via -r requirements/base.txt, social-auth-app-django +sqlparse==0.3.1 # via -r requirements/base.txt, django toml==0.10.0 # via tox -tox==3.14.3 +tox==3.15.0 # via -r requirements/test.in traceback2==1.4.0 # via unittest2 -typing==3.7.4.1 # via importlib-resources -unittest2==1.1.0 -urllib3==1.25.8 -virtualenv==20.0.0 # via tox -wcwidth==0.1.8 # via pytest +typed-ast==1.4.1 # via astroid +unittest2==1.1.0 # via -r requirements/test.in +urllib3==1.25.9 # via -r requirements/base.txt, requests +virtualenv==20.0.20 # via tox +wcwidth==0.1.9 # via pytest wrapt==1.11.2 # via astroid -zipp==1.1.0 # via importlib-metadata +zipp==1.2.0 # via importlib-metadata, importlib-resources diff --git a/requirements/travis.txt b/requirements/travis.txt index dd971423..ab313ce9 100644 --- a/requirements/travis.txt +++ b/requirements/travis.txt @@ -5,28 +5,24 @@ # make upgrade # appdirs==1.4.3 # via virtualenv -certifi==2019.11.28 # via requests +certifi==2020.4.5.1 # via requests chardet==3.0.4 # via requests -codecov==2.0.15 -configparser==4.0.2 # via importlib-metadata -contextlib2==0.6.0.post1 # via importlib-metadata, virtualenv, zipp -coverage==5.0.3 # via codecov +codecov==2.0.22 # via -r requirements/travis.in +coverage==5.1 # via codecov +distlib==0.3.0 # via virtualenv filelock==3.0.12 # via tox, virtualenv -idna==2.8 # via requests -importlib-metadata==1.5.0 # via pluggy, tox, virtualenv -importlib-resources==1.0.2 # via virtualenv -packaging==20.1 # via tox -pathlib2==2.3.5 # via importlib-metadata, importlib-resources, virtualenv +idna==2.9 # via requests +importlib-metadata==1.6.0 # via importlib-resources, pluggy, tox, virtualenv +importlib-resources==1.5.0 # via virtualenv +packaging==20.3 # via tox pluggy==0.13.1 # via tox py==1.8.1 # via tox -pyparsing==2.4.6 # via packaging -requests==2.22.0 # via codecov -scandir==1.10.0 # via pathlib2 -six==1.14.0 # via packaging, pathlib2, tox, virtualenv +pyparsing==2.4.7 # via packaging +requests==2.23.0 # via codecov +six==1.14.0 # via packaging, tox, virtualenv toml==0.10.0 # via tox -tox-battery==0.5.2 -tox==3.14.3 -typing==3.7.4.1 # via importlib-resources -urllib3==1.25.8 # via requests -virtualenv==20.0.0 # via tox -zipp==1.1.0 # via importlib-metadata +tox-battery==0.5.2 # via -r requirements/travis.in +tox==3.15.0 # via -r requirements/travis.in, tox-battery +urllib3==1.25.9 # via requests +virtualenv==20.0.20 # via tox +zipp==1.2.0 # via importlib-metadata, importlib-resources diff --git a/setup.py b/setup.py index fc737465..7792a2df 100644 --- a/setup.py +++ b/setup.py @@ -7,6 +7,7 @@ with open('README.rst') as a, open('HISTORY.rst') as b, open('AUTHORS') as c: long_description = '{}\n\n{}\n\n{}'.format(a.read(), b.read(), c.read()) + def load_requirements(*requirements_paths): """ Load all requirements from the specified requirements files. @@ -29,6 +30,7 @@ def is_requirement(line): """ return line and not line.startswith(('-r', '#', '-e', 'git+', '-c')) + setup( name='edx-auth-backends', version=__version__, @@ -40,13 +42,10 @@ def is_requirement(line): 'Intended Audience :: Developers', 'License :: OSI Approved :: GNU Affero General Public License v3', 'Operating System :: OS Independent', - 'Programming Language :: Python', - 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.8', 'Framework :: Django', - 'Framework :: Django :: 1.11', - 'Framework :: Django :: 2.0', - 'Framework :: Django :: 2.1', 'Framework :: Django :: 2.2', 'Topic :: Internet', ], diff --git a/tox.ini b/tox.ini index 7ba41a17..611db328 100644 --- a/tox.ini +++ b/tox.ini @@ -1,15 +1,13 @@ [tox] -envlist = py27-django{111}, py35-django{111,20,21,22}, quality +envlist = py35-django22,py38-django{22,30},quality [pycodestyle] max-line-length = 120 [testenv] deps = - django111: Django>=1.11,<2.0 - django20: Django>=2.0,<2.1 - django21: Django>=2.1,<2.2 django22: Django>=2.2,<2.3 + django30: Django>=3.0,<3.1 -r{toxinidir}/requirements/test.txt commands =