diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ff6bb95..642eacf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,8 +2,7 @@ variables: GITLAB_CI_IMAGE_ALPINE: 'alpine:3.9' GITLAB_CI_IMAGE_DOCKER: 'docker:18.09' GITLAB_CI_IMAGE_NODE: 'node:12.13.1' - GITLAB_CI_IMAGE_PYTHON2: 'python:2' - GITLAB_CI_IMAGE_PYTHON3: 'python:3' + GITLAB_CI_IMAGE_PYTHON: 'python:3' GITLAB_CI_PYPI_DOCKER_COMPOSE: 'docker-compose~=1.23.0' GITLAB_CI_PYPI_TOX: 'tox~=3.8.0' stages: @@ -25,21 +24,14 @@ static_js_css: - network/static/lib static_python: stage: static - image: ${GITLAB_CI_IMAGE_PYTHON2} + image: ${GITLAB_CI_IMAGE_PYTHON} before_script: - pip install "$GITLAB_CI_PYPI_TOX" script: - - tox -e "py2-flake8,isort,yapf,py2-pylint" -static_python3: - stage: static - image: ${GITLAB_CI_IMAGE_PYTHON3} - before_script: - - pip install "$GITLAB_CI_PYPI_TOX" - script: - - tox -e "py3-flake8,py3-pylint" + - tox -e "flake8,isort,yapf,pylint" docs: stage: build - image: ${GITLAB_CI_IMAGE_PYTHON3} + image: ${GITLAB_CI_IMAGE_PYTHON} before_script: - pip install "$GITLAB_CI_PYPI_TOX" script: @@ -52,18 +44,7 @@ docs: - docs/_build/html build: stage: build - image: ${GITLAB_CI_IMAGE_PYTHON2} - script: - - rm -rf dist - - python setup.py sdist bdist_wheel - artifacts: - expire_in: 1 week - when: always - paths: - - dist -build3: - stage: build - image: ${GITLAB_CI_IMAGE_PYTHON3} + image: ${GITLAB_CI_IMAGE_PYTHON} script: - rm -rf dist - python setup.py sdist bdist_wheel @@ -74,22 +55,13 @@ build3: - dist test: stage: test - image: ${GITLAB_CI_IMAGE_PYTHON2} + image: ${GITLAB_CI_IMAGE_PYTHON} before_script: - pip install "$GITLAB_CI_PYPI_TOX" - apt-get update - apt-get install -y ruby-sass script: - - tox -e deps,py2-pytest -test3: - stage: test - image: ${GITLAB_CI_IMAGE_PYTHON3} - before_script: - - pip install "$GITLAB_CI_PYPI_TOX" - - apt-get update - - apt-get install -y ruby-sass - script: - - tox -e deps,py3-pytest + - tox -e deps,pytest docker: stage: deploy image: ${GITLAB_CI_IMAGE_DOCKER} diff --git a/.pylintrc3 b/.pylintrc3 deleted file mode 100644 index 146f8bb..0000000 --- a/.pylintrc3 +++ /dev/null @@ -1,12 +0,0 @@ -[MASTER] -ignore=_version.py,migrations -load-plugins=pylint_django -ignored-argument-names=args|kwargs - -[MESSAGES CONTROL] -disable= - E1121, # too-many-function-args - R0801, # needs to remain disabled see https://github.com/PyCQA/pylint/issues/214 - R0912, # too-many-branches - R0913, # too-many-arguments - R0914, # too-many-locals diff --git a/Dockerfile b/Dockerfile index ed3310a..232c646 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:2 +FROM python:3 MAINTAINER SatNOGS project WORKDIR /workdir/ diff --git a/network/users/migrations/0004_username_unicode_validator.py b/network/users/migrations/0004_username_unicode_validator.py new file mode 100644 index 0000000..b96aad6 --- /dev/null +++ b/network/users/migrations/0004_username_unicode_validator.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-01-10 19:48 +from __future__ import unicode_literals + +import django.contrib.auth.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0003_auto_20160922_1505'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='username', + field=models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username'), + ), + ] diff --git a/requirements-dev.txt b/requirements-dev.txt index 1e9b6aa..0d27eae 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -5,23 +5,20 @@ -r requirements.txt apipkg==1.5 -atomicwrites==1.3.0 attrs==19.3.0 -coverage==5.0.1 +coverage==5.0.2 execnet==1.7.1 factory-boy==2.11.1 Faker==0.8.18 filelock==3.0.12 -funcsigs==1.0.2 -ipaddress==1.0.23 mock==2.0.0 -packaging==19.2 +packaging==20.0 pbr==5.4.4 pluggy==0.13.1 pur==5.2.2 py==1.8.1 pyparsing==2.4.6 -pytest==4.6.8 +pytest==5.3.2 pytest-cov==2.6.1 pytest-django==3.4.8 pytest-forked==0.2 diff --git a/requirements.txt b/requirements.txt index f432403..4257c6e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,8 +12,8 @@ certifi==2019.11.28 chardet==3.0.4 Click==7.0 clint==0.5.1 -configparser==4.0.2 contextlib2==0.5.5 +defusedxml==0.6.0 dj-database-url==0.5.0 Django==1.11.27 django-allauth==0.35.0 @@ -32,7 +32,6 @@ django-shortuuidfield==0.1.3 djangorestframework==3.7.7 dnspython==1.16.0 docopt==0.6.2 -enum34==1.1.6 ephem==3.7.7.0 eventlet==0.25.1 future==0.18.2 @@ -46,15 +45,14 @@ jsonpointer==2.0 kombu==4.6.7 Markdown==2.6.11 monotonic==1.5 -more-itertools==5.0.0 +more-itertools==8.0.2 mysqlclient==1.3.14 oauthlib==3.1.0 -pathlib2==2.3.5 Pillow==5.0.0 PyJWT==1.7.1 python-decouple==3.1 python-dotenv==0.6.5 -python-openid==2.2.5 +python3-openid==3.1.0 pytz==2019.3 rcssmin==1.0.6 redis==3.3.11 @@ -62,7 +60,6 @@ requests==2.22.0 requests-oauthlib==1.3.0 rjsmin==1.0.12 satellitetle==0.8.1 -scandir==1.10.0 schema==0.7.1 sentry-sdk==0.7.14 sgp4==1.4 diff --git a/setup.cfg b/setup.cfg index b4a4608..cfe577b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -13,7 +13,7 @@ classifiers = License :: OSI Approved :: GNU Affero General Public License v3 Operating System :: POSIX :: Linux Programming Language :: Python - Programming Language :: Python :: 2.7 + Programming Language :: Python :: 3 Topic :: Communications :: Ham Radio Topic :: Internet :: WWW/HTTP Topic :: Internet :: WWW/HTTP :: Dynamic Content diff --git a/tox.ini b/tox.ini index 093d6cf..be11349 100644 --- a/tox.ini +++ b/tox.ini @@ -1,17 +1,15 @@ [tox] -envlist = py2-flake8,isort,yapf,py2-pylint,py-pylint-py3k,{py2,py3}-build,py2-pytest,docs +envlist = flake8,isort,yapf,pylint,build,pytest,docs [depversions] flake8 = 3.7.8 isort = 4.3.18 yapf = 0.28.0 -pylint = 1.9.5 -pylint3 = 2.3.1 -pylint_django = 0.11.1 -pylint_django3 = 2.0.11 +pylint = 2.3.1 +pylint_django = 2.0.11 sphinx_rtd_theme = 0.4.3 -[testenv:py2-flake8] +[testenv:flake8] deps = flake8=={[depversions]flake8} skip_install = True @@ -39,39 +37,16 @@ deps = skip_install = True commands = yapf -i -r . -[testenv:py2-pylint] +[testenv:pylint] deps = pylint=={[depversions]pylint} pylint-django=={[depversions]pylint_django} extras = dev -commands = pylint\ +commands = pylint \ {envsitepackagesdir}/network \ {envsitepackagesdir}/auth0login -[testenv:py2-pylint-py3k] -deps = - pylint=={[depversions]pylint} - pylint-django=={[depversions]pylint_django} -extras = dev -commands = pylint --py3k\ - {envsitepackagesdir}/network \ - {envsitepackagesdir}/auth0login - -[testenv:py3-pylint] -deps = - pylint=={[depversions]pylint3} - pylint-django=={[depversions]pylint_django3} -extras = dev -commands = pylint --rcfile=.pylintrc3 \ - {envsitepackagesdir}/network \ - {envsitepackagesdir}/auth0login - -[testenv:py2-build] -skip_install = True -commands = - python setup.py sdist bdist_wheel - -[testenv:py3-build] +[testenv:build] skip_install = True commands = python setup.py sdist bdist_wheel @@ -91,15 +66,7 @@ deps = extras = dev commands = pip check -[testenv:py2-pytest] -install_command = python -m pip install --no-deps {opts} {packages} -deps = - -rrequirements-dev.txt -usedevelop = True -extras = dev -commands = pytest - -[testenv:py3-pytest] +[testenv:pytest] install_command = python -m pip install --no-deps {opts} {packages} deps = -rrequirements-dev.txt