# Tox (http://codespeak.net/~hpk/tox/) is a tool for running tests # in multiple virtualenvs. This configuration file will run the # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox" from this directory. [tox] envlist = # === Core === py{2.7,3.4,3.5,3.6,3.7,3.8} pypy # === Integrations === # Formatting: 1 blank line between different integrations. py3.7-django-{2.2,dev} {py3.5,py3.6,py3.7}-django-{2.0,2.1} {pypy,py2.7,py3.5}-django-1.11 {pypy,py2.7,py3.4,py3.5}-django-{1.8,1.9,1.10} {pypy,py2.7,py3.4}-django-1.7 {pypy,py2.7}-django-1.6 {pypy,py2.7,py3.5,py3.6,py3.7,py3.8}-flask-{1.1,1.0,0.11,0.12,dev} {pypy,py2.7,py3.5,py3.6,py3.7,py3.8}-bottle-0.12 {pypy,py2.7,py3.5,py3.6,py3.7,py3.8}-falcon-1.4 {pypy,py2.7,py3.5,py3.6,py3.7,py3.8}-falcon-2.0 {py3.5,py3.6,py3.7}-sanic-{0.8,18} {pypy,py2.7,py3.5,py3.6,py3.7,py3.8}-celery-{4.1,4.2,4.3} {pypy,py2.7}-celery-3 py2.7-beam-{12,13} py3.7-beam-{12,13, master} # The aws_lambda tests deploy to the real AWS and have their own matrix of Python versions. py3.7-aws_lambda {pypy,py2.7,py3.5,py3.6,py3.7,py3.8}-pyramid-{1.3,1.4,1.5,1.6,1.7,1.8,1.9,1.10} {pypy,py2.7,py3.5,py3.6}-rq-{0.6,0.7,0.8,0.9,0.10,0.11} {pypy,py2.7,py3.5,py3.6,py3.7,py3.8}-rq-{0.12,0.13,1.0,1.1} py3.7-aiohttp-{3.5,3.6} {py3.7,py3.8}-tornado-{5,6} {py2.7,py3.7}-requests {py2.7,py3.7}-redis py3.7-asgi {py2.7,py3.7}-sqlalchemy-{1.2,1.3} [testenv] deps = -r test-requirements.txt django-{1.11,2.0,2.1,2.2}: djangorestframework>=3.0.0,<4.0.0 py3.7-django-{1.11,2.0,2.1,2.2}: channels>2 py3.7-django-{1.11,2.0,2.1,2.2}: pytest-asyncio {py2.7,py3.7}-django-{1.11,2.2}: psycopg2-binary django-{1.6,1.7,1.8}: pytest-django<3.0 django-{1.9,1.10,1.11,2.0,2.1,2.2,dev}: pytest-django>=3.0 django-1.6: Django>=1.6,<1.7 django-1.7: Django>=1.7,<1.8 django-1.8: Django>=1.8,<1.9 django-1.9: Django>=1.9,<1.10 django-1.10: Django>=1.10,<1.11 django-1.11: Django>=1.11,<1.12 django-2.0: Django>=2.0,<2.1 django-2.1: Django>=2.1,<2.2 django-2.2: Django>=2.2,<2.3 django-dev: git+https://github.com/django/django.git#egg=Django flask: flask-login flask-0.11: Flask>=0.11,<0.12 flask-0.12: Flask>=0.12,<0.13 flask-1.0: Flask>=1.0,<1.1 flask-1.1: Flask>=1.1,<1.2 flask-dev: git+https://github.com/pallets/flask.git#egg=flask bottle-0.12: bottle>=0.12,<0.13 bottle-dev: git+https://github.com/bottlepy/bottle#egg=bottle falcon-1.4: falcon>=1.4,<1.5 falcon-2.0: falcon>=2.0.0rc3,<3.0 sanic-0.8: sanic>=0.8,<0.9 sanic-18: sanic>=18.0,<19.0 {py3.5,py3.6}-sanic: aiocontextvars==0.2.1 sanic: aiohttp beam-12: apache-beam>=2.12.0, <2.13.0 beam-13: apache-beam>=2.13.0, <2.14.0 beam-master: git+https://github.com/apache/beam#egg=apache-beam&subdirectory=sdks/python celery-3: Celery>=3.1,<4.0 celery-4.1: Celery>=4.1,<4.2 celery-4.2: Celery>=4.2,<4.3 celery-4.3: Celery>=4.3,<4.4 requests: requests>=2.0 aws_lambda: boto3 pyramid-1.3: pyramid>=1.3,<1.4 pyramid-1.4: pyramid>=1.4,<1.5 pyramid-1.5: pyramid>=1.5,<1.6 pyramid-1.6: pyramid>=1.6,<1.7 pyramid-1.7: pyramid>=1.7,<1.8 pyramid-1.8: pyramid>=1.8,<1.9 pyramid-1.9: pyramid>=1.9,<1.10 pyramid-1.10: pyramid>=1.10,<1.11 rq-{0.6,0.7,0.8,0.9,0.10,0.11,0.12}: fakeredis<1.0 rq-{0.13,1.0,1.1}: fakeredis>=1.0 # https://github.com/jamesls/fakeredis/issues/245 rq: redis<3.2.2 rq-0.6: rq>=0.6,<0.7 rq-0.7: rq>=0.7,<0.8 rq-0.8: rq>=0.8,<0.9 rq-0.9: rq>=0.9,<0.10 rq-0.10: rq>=0.10,<0.11 rq-0.11: rq>=0.11,<0.12 rq-0.12: rq>=0.12,<0.13 rq-0.13: rq>=0.13,<0.14 rq-1.0: rq>=1.0,<1.1 rq-1.1: rq>=1.1,<1.2 aiohttp-3.4: aiohttp>=3.4.0,<3.5.0 aiohttp-3.5: aiohttp>=3.5.0,<3.6.0 aiohttp: pytest-aiohttp tornado-5: tornado>=5,<6 tornado-6: tornado>=6.0a1 redis: fakeredis # https://github.com/jamesls/fakeredis/issues/245 redis: redis<3.2.2 asgi: starlette asgi: requests sqlalchemy-1.2: sqlalchemy>=1.2,<1.3 sqlalchemy-1.3: sqlalchemy>=1.3,<1.4 linters: black linters: flake8 linters: flake8-import-order linters: mypy>=0.720 # https://github.com/PyCQA/flake8-bugbear/pull/77 linters: git+https://github.com/untitaker/flake8-bugbear#branch=fix/b901-yield-expr setenv = PYTHONDONTWRITEBYTECODE=1 TESTPATH=tests beam: TESTPATH=tests/integrations/beam django: TESTPATH=tests/integrations/django flask: TESTPATH=tests/integrations/flask bottle: TESTPATH=tests/integrations/bottle falcon: TESTPATH=tests/integrations/falcon celery: TESTPATH=tests/integrations/celery requests: TESTPATH=tests/integrations/requests aws_lambda: TESTPATH=tests/integrations/aws_lambda sanic: TESTPATH=tests/integrations/sanic pyramid: TESTPATH=tests/integrations/pyramid rq: TESTPATH=tests/integrations/rq aiohttp: TESTPATH=tests/integrations/aiohttp tornado: TESTPATH=tests/integrations/tornado redis: TESTPATH=tests/integrations/redis asgi: TESTPATH=tests/integrations/asgi sqlalchemy: TESTPATH=tests/integrations/sqlalchemy COVERAGE_FILE=.coverage-{envname} passenv = SENTRY_PYTHON_TEST_AWS_ACCESS_KEY_ID SENTRY_PYTHON_TEST_AWS_SECRET_ACCESS_KEY SENTRY_PYTHON_TEST_AWS_IAM_ROLE SENTRY_PYTHON_TEST_POSTGRES_USER SENTRY_PYTHON_TEST_POSTGRES_NAME usedevelop = True extras = flask: flask bottle: bottle falcon: falcon basepython = py2.7: python2.7 py3.4: python3.4 py3.5: python3.5 py3.6: python3.6 py3.7: python3.7 py3.8: python3.8 linters: python3 pypy: pypy commands = py.test {env:TESTPATH} {posargs} [testenv:linters] commands = flake8 tests examples sentry_sdk black --check tests examples sentry_sdk mypy examples sentry_sdk