Skip to content

Commit

Permalink
Add support for Python 3.7 (#864)
Browse files Browse the repository at this point in the history
  • Loading branch information
jd authored and brettlangdon committed Apr 29, 2019
1 parent cca6453 commit a7d6f3a
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 42 deletions.
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ def run_tests(self):
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
],
)

Expand Down
148 changes: 106 additions & 42 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -28,25 +28,29 @@ skipsdist={env:TOX_SKIP_DIST:False}
envlist =
flake8
wait
{py27,py34,py35,py36}-tracer
{py27,py34,py35,py36}-internal
{py27,py34,py35,py36}-integration
{py27,py34,py35,py36}-ddtracerun
{py27,py34,py35,py36}-test_utils
{py27,py34,py35,py36}-test_logging
{py27,py34,py35,py36,py37}-tracer
{py27,py34,py35,py36,py37}-internal
{py27,py34,py35,py36,py37}-integration
{py27,py34,py35,py36,py37}-ddtracerun
{py27,py34,py35,py36,py37}-test_utils
{py27,py34,py35,py36,py37}-test_logging
# Integrations environments
aiobotocore_contrib-py34-aiobotocore{02,03,04}
aiobotocore_contrib-{py35,py36}-aiobotocore{02,03,04,05,07,08,09,010}
# aiobotocore 0.2 and 0.4 do not work because they use async as a reserved keyword
aiobotocore_contrib-py37-aiobotocore{03,05,07,08,09,010}
# Python 3.7 needs at least aiohttp 2.3
aiohttp_contrib-{py34,py35,py36}-aiohttp{12,13,20,21,22}-aiohttp_jinja{012,013}-yarl
aiohttp_contrib-{py34,py35,py36}-aiohttp23-aiohttp_jinja{015}-yarl10
aiohttp_contrib-{py35,py36}-aiohttp{30,31,32,33,34,35}-aiohttp_jinja{015}-yarl10
aiohttp_contrib-{py34,py35,py36,py37}-aiohttp23-aiohttp_jinja{015}-yarl10
aiohttp_contrib-{py35,py36,py37}-aiohttp{30,31,32,33,34,35}-aiohttp_jinja{015}-yarl10
aiopg_contrib-{py34,py35,py36}-aiopg{012,015}
algoliasearch_contrib-{py27,py34,py35,py36}-algoliasearch{1,2}
asyncio_contrib-{py34,py35,py36}
aiopg_contrib-py37-aiopg015
algoliasearch_contrib-{py27,py34,py35,py36,py37}-algoliasearch{1,2}
asyncio_contrib-{py34,py35,py36,py37}
boto_contrib-{py27,py34}-boto
botocore_contrib-{py27,py34,py35,py36}-botocore
bottle_contrib{,_autopatch}-{py27,py34,py35,py36}-bottle{11,12}-webtest
cassandra_contrib-{py27,py34,py35,py36}-cassandra{35,36,37,38,315}
botocore_contrib-{py27,py34,py35,py36,py37}-botocore
bottle_contrib{,_autopatch}-{py27,py34,py35,py36,py37}-bottle{11,12}-webtest
cassandra_contrib-{py27,py34,py35,py36,py37}-cassandra{35,36,37,38,315}
# Non-4.x celery should be able to use the older redis lib, since it locks to an older kombu
celery_contrib-{py27,py34,py35,py36}-celery{31}-redis{210}
# 4.x celery bumps kombu to 4.4+, which requires redis 3.2 or later, this tests against
Expand All @@ -57,7 +61,8 @@ envlist =
# https://github.com/celery/celery/commit/1571d414461f01ae55be63a03e2adaa94dbcb15d
celery_contrib-{py27,py34,py35,py36}-celery42-redis210-kombu43
# Celery 4.3 wants Kombu >= 4.4 and Redis >= 3.2
celery_contrib-{py27,py34,py35,py36}-celery43-redis320-kombu44
# Python 3.7 needs Celery 4.3
celery_contrib-{py27,py34,py35,py36,py37}-celery43-redis320-kombu44
dbapi_contrib-{py27,py34,py35,py36}
django_contrib{,_autopatch}-{py27,py34,py35,py36}-django{18,111}-djangopylibmc06-djangoredis45-pylibmc-redis{210}-memcached
django_contrib{,_autopatch}-{py34,py35,py36}-django{200}-djangopylibmc06-djangoredis45-pylibmc-redis{210}-memcached
Expand All @@ -71,57 +76,64 @@ envlist =
flask_contrib{,_autopatch}-{py27,py34,py35,py36}-flask{010,011,012,10}-blinker
# Flask <=0.9 does not support Python 3
flask_contrib{,_autopatch}-{py27}-flask{09}-blinker
flask_cache_contrib{,_autopatch}-{py27,py34,py35,py36}-flask{010,011,012}-flaskcache{013}-memcached-redis{210}-blinker
flask_cache_contrib{,_autopatch}-{py27,py34,py35,py36,py37}-flask{010,011,012}-flaskcache{013}-memcached-redis{210}-blinker
flask_cache_contrib{,_autopatch}-{py27}-flask{010,011}-flaskcache{012}-memcached-redis{210}-blinker
futures_contrib-{py27}-futures{30,31,32}
futures_contrib-{py34,py35,py36}
futures_contrib-{py34,py35,py36,py37}
gevent_contrib-{py27,py34,py35,py36}-gevent{11,12,13}
gevent_contrib-py37-gevent{13,14}
# gevent 1.0 is not python 3 compatible
gevent_contrib-{py27}-gevent{10}
grpc_contrib-{py27,py34,py35,py36}-grpc
httplib_contrib-{py27,py34,py35,py36}
jinja2_contrib-{py27,py34,py35,py36}-jinja{27,28,29,210}
mako_contrib-{py27,py34,py35,py36}-mako{010,100}
molten_contrib-{py36}-molten{070,072}
mongoengine_contrib-{py27,py34,py35,py36}-mongoengine{015}
mysql_contrib-{py27,py34,py35,py36}-mysqlconnector
grpc_contrib-{py27,py34,py35,py36,py37}-grpc
httplib_contrib-{py27,py34,py35,py36,py37}
jinja2_contrib-{py27,py34,py35,py36,py37}-jinja{27,28,29,210}
mako_contrib-{py27,py34,py35,py36,py37}-mako{010,100}
molten_contrib-py{36,37}-molten{070,072}
mongoengine_contrib-{py27,py34,py35,py36,py37}-mongoengine{015}
mysql_contrib-{py27,py34,py35,py36,py37}-mysqlconnector
mysqldb_contrib-{py27}-mysqldb{12}
mysqldb_contrib-{py27,py34,py35,py36}-mysqlclient{13}
mysqldb_contrib-{py27,py34,py35,py36,py37}-mysqlclient{13}
psycopg_contrib-{py27,py34,py35,py36}-psycopg2{24,25,26,27,28}
pylibmc_contrib-{py27,py34,py35,py36}-pylibmc{140,150}
psycopg_contrib-py37-psycopg2{27,28}
pylibmc_contrib-{py27,py34,py35,py36,py37}-pylibmc{140,150}
pylons_contrib-{py27}-pylons{096,097,010,10}
pymemcache_contrib{,_autopatch}-{py27,py34,py35,py36}-pymemcache{130,140}
pymongo_contrib-{py27,py34,py35,py36}-pymongo{30,31,32,33,34,36}-mongoengine{015}
pymysql_contrib-{py27,py34,py35,py36}-pymysql{07,08,09}
pyramid_contrib{,_autopatch}-{py27,py34,py35,py36}-pyramid{17,18,19}-webtest
redis_contrib-{py27,py34,py35,py36}-redis{26,27,28,29,210,300}
rediscluster_contrib-{py27,py34,py35,py36}-rediscluster{135,136}-redis210
requests_contrib{,_autopatch}-{py27,py34,py35,py36}-requests{208,209,210,211,212,213,219}
pymemcache_contrib{,_autopatch}-{py27,py34,py35,py36,py37}-pymemcache{130,140}
pymongo_contrib-{py27,py34,py35,py36,py37}-pymongo{30,31,32,33,34,36}-mongoengine{015}
pymysql_contrib-{py27,py34,py35,py36,py37}-pymysql{07,08,09}
pyramid_contrib{,_autopatch}-{py27,py34,py35,py36,py37}-pyramid{17,18,19}-webtest
redis_contrib-{py27,py34,py35,py36,py37}-redis{26,27,28,29,210,300}
rediscluster_contrib-{py27,py34,py35,py36,py37}-rediscluster{135,136}-redis210
requests_contrib{,_autopatch}-{py27,py34,py35,py36,py37}-requests{208,209,210,211,212,213,219}
kombu_contrib-{py27,py34,py35,py36}-kombu{40,41,42}
# Python 3.7 needs Kombu >= 4.2
kombu_contrib-py37-kombu42
# python 3.6 requests + gevent regression test
# DEV: This is a known issue for gevent 1.1, suggestion is to upgrade to gevent > 1.2
# https://github.com/gevent/gevent/issues/903
requests_gevent_contrib-{py36}-requests{208,209,210,211,212,213,219}-gevent{12,13}
sqlalchemy_contrib-{py27,py34,py35,py36}-sqlalchemy{10,11,12}-psycopg228-mysqlconnector
sqlite3_contrib-{py27,py34,py35,py36}-sqlite3
tornado_contrib-{py27,py34,py35,py36}-tornado{40,41,42,43,44,45}
requests_gevent_contrib-py37-requests{208,209,210,211,212,213,219}-gevent13
sqlalchemy_contrib-{py27,py34,py35,py36,py37}-sqlalchemy{10,11,12}-psycopg228-mysqlconnector
sqlite3_contrib-{py27,py34,py35,py36,py37}-sqlite3
tornado_contrib-{py27,py34,py35,py36,py37}-tornado{40,41,42,43,44,45}
tornado_contrib-{py27}-tornado{40,41,42,43,44,45}-futures{30,31,32}
vertica_contrib-{py27,py34,py35,py36}-vertica{060,070}
vertica_contrib-{py27,py34,py35,py36,py37}-vertica{060,070}
# Opentracer
{py27,py34,py35,py36}-opentracer
{py34,py35,py36}-opentracer_asyncio
{py34,py35,py36}-opentracer_tornado-tornado{40,41,42,43,44}
{py27,py34,py35,py36,py37}-opentracer
{py34,py35,py36,py37}-opentracer_asyncio
{py34,py35,py36,py37}-opentracer_tornado-tornado{40,41,42,43,44}
{py27}-opentracer_gevent-gevent{10}
{py27,py34,py35,py36}-opentracer_gevent-gevent{11,12}
py37-opentracer_gevent-gevent{13,14}
# Unit tests: pytest based test suite that do not require any additional dependency
unit_tests-{py27,py34,py35,py36}
unit_tests-{py27,py34,py35,py36,py37}

[testenv]
basepython =
py27: python2.7
py34: python3.4
py35: python3.5
py36: python3.6
py37: python3.7

deps =
# Avoid installing wrapt and msgpack-python, our only packages declared, dependencies, when we are testing the real
Expand Down Expand Up @@ -230,6 +242,7 @@ deps =
gevent11: gevent>=1.1,<1.2
gevent12: gevent>=1.2,<1.3
gevent13: gevent>=1.3,<1.4
gevent14: gevent>=1.4,<1.5
grpc: grpcio>=1.8.0,<1.18.0
grpc: googleapis-common-protos
jinja27: jinja2>=2.7,<2.8
Expand Down Expand Up @@ -328,8 +341,8 @@ commands =
# integration tests
integration: pytest {posargs} tests/test_integration.py
# Contribs
aiobotocore_contrib-{py34,py35,py36}: pytest {posargs} tests/contrib/aiobotocore
aiopg_contrib-{py34,py35,py36}: pytest {posargs} tests/contrib/aiopg
aiobotocore_contrib-{py34,py35,py36,py37}: pytest {posargs} tests/contrib/aiobotocore
aiopg_contrib-{py34,py35,py36,py37}: pytest {posargs} tests/contrib/aiopg
aiohttp_contrib: pytest {posargs} tests/contrib/aiohttp
algoliasearch_contrib: pytest {posargs} tests/contrib/algoliasearch
asyncio_contrib: pytest {posargs} tests/contrib/asyncio
Expand Down Expand Up @@ -473,6 +486,21 @@ setenv =
[testenv:falcon_contrib_autopatch-py36-falcon14]
setenv =
{[falcon_autopatch]setenv}
[testenv:falcon_contrib_autopatch-py37-falcon10]
setenv =
{[falcon_autopatch]setenv}
[testenv:falcon_contrib_autopatch-py37-falcon11]
setenv =
{[falcon_autopatch]setenv}
[testenv:falcon_contrib_autopatch-py37-falcon12]
setenv =
{[falcon_autopatch]setenv}
[testenv:falcon_contrib_autopatch-py37-falcon13]
setenv =
{[falcon_autopatch]setenv}
[testenv:falcon_contrib_autopatch-py37-falcon14]
setenv =
{[falcon_autopatch]setenv}
[pyramid_autopatch]
Expand Down Expand Up @@ -516,6 +544,15 @@ setenv =
[testenv:pyramid_contrib_autopatch-py36-pyramid19-webtest]
setenv =
{[pyramid_autopatch]setenv}
[testenv:pyramid_contrib_autopatch-py37-pyramid17-webtest]
setenv =
{[pyramid_autopatch]setenv}
[testenv:pyramid_contrib_autopatch-py37-pyramid18-webtest]
setenv =
{[pyramid_autopatch]setenv}
[testenv:pyramid_contrib_autopatch-py37-pyramid19-webtest]
setenv =
{[pyramid_autopatch]setenv}
[flask_autopatch]
Expand Down Expand Up @@ -568,6 +605,18 @@ setenv =
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py36-flask10-blinker]
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py37-flask010-blinker]
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py37-flask011-blinker]
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py37-flask012-blinker]
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py37-flask10-blinker]
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py27-flask010-flaskcache013-memcached-redis210-blinker]
Expand Down Expand Up @@ -604,6 +653,15 @@ setenv =
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py36-flask012-flaskcache013-memcached-redis210-blinker]
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py37-flask010-flaskcache013-memcached-redis210-blinker]
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py37-flask011-flaskcache013-memcached-redis210-blinker]
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py37-flask012-flaskcache013-memcached-redis210-blinker]
setenv =
{[flask_autopatch]setenv}
[testenv:flask_contrib_autopatch-py27-flask010-flaskcache012-memcached-redis210-blinker]
Expand All @@ -627,6 +685,9 @@ setenv =
setenv =
{[bottle_autopatch]setenv}
[testenv:bottle_contrib_autopatch-py36-bottle11-webtest]
setenv =
{[bottle_autopatch]setenv}
[testenv:bottle_contrib_autopatch-py37-bottle11-webtest]
setenv =
{[bottle_autopatch]setenv}
[testenv:bottle_contrib_autopatch-py27-bottle12-webtest]
Expand All @@ -641,6 +702,9 @@ setenv =
[testenv:bottle_contrib_autopatch-py36-bottle12-webtest]
setenv =
{[bottle_autopatch]setenv}
[testenv:bottle_contrib_autopatch-py37-bottle12-webtest]
setenv =
{[bottle_autopatch]setenv}
# DEV: We use `conftest.py` as a local pytest plugin to configure hooks for collection
Expand Down

0 comments on commit a7d6f3a

Please sign in to comment.