diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..9d95e6ee --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,89 @@ +--- +version: 2.1 + +executors: + python: + docker: + - image: cimg/python:3.9 + +jobs: + flake8_lint: + executor: python + steps: + - checkout + - run: pip install tox + - run: tox -e flake8 + isort_lint: + executor: python + steps: + - checkout + - run: pip install tox + - run: tox -e isort + test: + parameters: + python: + type: string + docker: + - image: circleci/python:<< parameters.python >> + environment: + TOXENV: "py<< parameters.python >>" + steps: + - checkout + - run: echo 'export PATH=$HOME/.local/bin:$PATH' >> $BASH_ENV + - run: pip install --user tox + - run: tox + test_nooptionals: + parameters: + python: + type: string + docker: + - image: cimg/python:<< parameters.python >> + environment: + TOXENV: "py<< parameters.python >>-nooptionals" + steps: + - checkout + - run: pip install tox + - run: tox + test_pypy: + parameters: + python: + type: string + docker: + - image: pypy:<< parameters.python >> + environment: + TOXENV: "pypy<< parameters.python >>" + steps: + - checkout + - run: pip install tox + - run: tox + + +workflows: + version: 2 + client_python: + jobs: + - flake8_lint + - isort_lint + - test: + matrix: + parameters: + python: + - "2.7" + - "3.4" + - "3.5" + - "3.6" + - "3.7" + - "3.8" + - "3.9" + - test_nooptionals: + matrix: + parameters: + python: + - "2.7" + - "3.9" + - test_pypy: + matrix: + parameters: + python: + - "2.7" + - "3.7" diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 6d254710..00000000 --- a/.travis.yml +++ /dev/null @@ -1,64 +0,0 @@ -os: linux -dist: xenial -cache: - directories: - - $HOME/.cache/pip - -language: python - -jobs: - include: - - stage: lint - name: flake8_lint - script: - - tox -e flake8 - - stage: lint - name: isort_lint - script: - - tox -e isort - - stage: test - python: "2.6" - env: TOXENV=py26 - dist: trusty - - stage: test - python: "2.7" - env: TOXENV=py27 - - stage: test - python: "2.7" - env: TOXENV=py27-nooptionals - - stage: test - python: "3.4" - env: TOXENV=py34 - - stage: test - python: "3.5" - env: TOXENV=py35 - - stage: test - python: "3.6" - env: TOXENV=py36 - - stage: test - python: "3.7" - env: TOXENV=py37 - - stage: test - python: "3.8" - env: TOXENV=py38 - - stage: test - python: "3.9" - env: TOXENV=py39 - - stage: test - python: "3.9" - env: TOXENV=py39-nooptionals - - stage: test - python: "pypy" - env: TOXENV=pypy - - stage: test - python: "pypy3" - env: TOXENV=pypy3 - -install: - - pip install tox - -script: - - tox - -notifications: - email: false diff --git a/setup.py b/setup.py index 8327e508..edf55f7a 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,7 @@ 'twisted': ['twisted'], }, test_suite="tests", - python_requires=">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", + python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", classifiers=[ "Development Status :: 4 - Beta", "Intended Audience :: Developers", @@ -39,7 +39,6 @@ "Intended Audience :: System Administrators", "Programming Language :: Python", "Programming Language :: Python :: 2", - "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", diff --git a/tox.ini b/tox.ini index 21dd09fb..a84275b0 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = coverage-clean,py26,py27,py34,py35,py36,py37,py38,py39,pypy,pypy3,{py27,py39}-nooptionals,coverage-report,flake8,isort +envlist = coverage-clean,py2.7,py3.4,py3.5,py3.6,py3.7,py3.8,py3.9,pypy2.7,pypy3.7,{py2.7,py3.9}-nooptionals,coverage-report,flake8,isort [base] @@ -7,21 +7,12 @@ deps = coverage pytest -[testenv:py26] -; Last pytest and py version supported on py26 . -deps = - unittest2 - py==1.4.31 - pytest==2.9.2 - coverage - futures - -[testenv:py27] +[testenv:py2.7] deps = {[base]deps} futures -[testenv:pypy] +[testenv:pypy2.7] deps = {[base]deps} futures @@ -29,18 +20,18 @@ deps = [testenv] deps = {[base]deps} - {py27,py37,pypy,pypy3}: twisted - {py37,pypy3}: asgiref + {py2.7,py3.7,pypy2.7,pypy3.7}: twisted + {py3.7,pypy3.7}: asgiref commands = coverage run --parallel -m pytest {posargs} ; Ensure test suite passes if no optional dependencies are present. -[testenv:py27-nooptionals] +[testenv:py2.7-nooptionals] deps = {[base]deps} futures commands = coverage run --parallel -m pytest {posargs} -[testenv:py39-nooptionals] +[testenv:py3.9-nooptionals] commands = coverage run --parallel -m pytest {posargs} [testenv:coverage-clean]