mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 05:32:30 +08:00
762 lines
30 KiB
INI
762 lines
30 KiB
INI
# the tox file specifies a way of running our test suite
|
|
# against different combinations of libraries and python
|
|
# versions.
|
|
|
|
[tox]
|
|
# Our various test environments. The py*-all tasks will run the core
|
|
# library tests and all contrib tests with the latest library versions.
|
|
# The others will test specific versions of libraries.
|
|
#
|
|
# FIXME[gabin]:
|
|
# If the env name is longer than 128 characters (linux kernel limit specified
|
|
# in "master/include/linux/binfmts.h"), we'll get a "bad interpreter: No such file or directory" error.
|
|
#
|
|
#See linux kernel limitation:
|
|
# - https://github.com/torvalds/linux/blob/master/include/linux/binfmts.h#L12
|
|
#
|
|
#See related github topic:
|
|
# - https://github.com/pypa/virtualenv/issues/596
|
|
envlist =
|
|
flake8
|
|
black
|
|
wait
|
|
{py34,py35,py36,py37}-tracer
|
|
{py34,py35,py36,py37}-internal
|
|
{py34,py35,py36,py37}-integration
|
|
{py34,py35,py36,py37}-ddtracerun
|
|
{py34,py35,py36,py37}-test_utils
|
|
{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,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}
|
|
aiopg_contrib-py37-aiopg015
|
|
algoliasearch_contrib-{py34,py35,py36,py37}-algoliasearch{1,2}
|
|
asyncio_contrib-{py34,py35,py36,py37}
|
|
# boto needs moto<1 and moto<1 does not support Python >= 3.7
|
|
boto_contrib-{py34,py35,py36}-boto
|
|
botocore_contrib-{py34,py35,py36,py37}-botocore
|
|
bottle_contrib{,_autopatch}-{py34,py35,py36,py37}-bottle{11,12}-webtest
|
|
cassandra_contrib-{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-{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
|
|
# older redis with an older kombu, and newer kombu/newer redis.
|
|
# https://github.com/celery/kombu/blob/3e60e6503a77b9b1a987cf7954659929abac9bac/Changelog#L35
|
|
celery_contrib-{py34,py35,py36}-celery{40,41}-{redis210-kombu43,redis320-kombu44}
|
|
# Celery 4.2 is now limited to Kombu 4.3
|
|
# https://github.com/celery/celery/commit/1571d414461f01ae55be63a03e2adaa94dbcb15d
|
|
celery_contrib-{py34,py35,py36}-celery42-redis210-kombu43
|
|
# Celery 4.3 wants Kombu >= 4.4 and Redis >= 3.2
|
|
# Python 3.7 needs Celery 4.3
|
|
celery_contrib-{py34,py35,py36,py37}-celery43-redis320-kombu44
|
|
consul_contrib-py{34,35,36,37}-consul{07,10,11}
|
|
dbapi_contrib-{py34,py35,py36}
|
|
django_contrib{,_autopatch}-{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
|
|
django_drf_contrib-{py34,py35,py36}-django{111}-djangorestframework{34,37,38}
|
|
django_drf_contrib-{py34,py35,py36}-django{200}-djangorestframework{37,38}
|
|
dogpile_contrib-{py35,py36,py37}-dogpilecache{06,07,08,latest}
|
|
elasticsearch_contrib-{py34,py35,py36}-elasticsearch{16,17,18,23,24,51,52,53,54,63,64}
|
|
elasticsearch_contrib-{py34,py35,py36}-elasticsearch1{100}
|
|
elasticsearch_contrib-{py34,py35,py36}-elasticsearch2{50}
|
|
elasticsearch_contrib-{py34,py35,py36}-elasticsearch5{50}
|
|
elasticsearch_contrib-{py34,py35,py36}-elasticsearch6{40}
|
|
falcon_contrib{,_autopatch}-{py34,py35,py36}-falcon{10,11,12,13,14}
|
|
flask_contrib{,_autopatch}-{py34,py35,py36}-flask{010,011,012,10}-blinker
|
|
flask_cache_contrib{,_autopatch}-{py34,py35,py36,py37}-flask{010,011,012}-flaskcache{013}-memcached-redis{210}-blinker
|
|
futures_contrib-{py34,py35,py36,py37}
|
|
gevent_contrib-{py34,py35,py36}-gevent{11,12,13}
|
|
gevent_contrib-py37-gevent{13,14}
|
|
grpc_contrib-{py34,py35,py36,py37}-grpc{112,113,114,115,116,117,118,119,120,121,122}
|
|
httplib_contrib-{py34,py35,py36,py37}
|
|
jinja2_contrib-{py34,py35,py36,py37}-jinja{27,28,29,210}
|
|
mako_contrib-{py34,py35,py36,py37}-mako{010,100}
|
|
molten_contrib-py{36,37}-molten{070,072}
|
|
mongoengine_contrib-{py34,py35,py36,py37}-mongoengine{015,016,017,018,latest}-pymongo{latest}
|
|
mysql_contrib-{py34,py35,py36,py37}-mysqlconnector
|
|
mysqldb_contrib-{py27}-mysqldb{12}
|
|
mysqldb_contrib-{py34,py35,py36,py37}-mysqlclient{13}
|
|
psycopg_contrib-{py34,py35,py36}-psycopg2{24,25,26,27,28}
|
|
psycopg_contrib-py37-psycopg2{27,28}
|
|
pylibmc_contrib-{py34,py35,py36,py37}-pylibmc{140,150}
|
|
pymemcache_contrib{,_autopatch}-{py34,py35,py36,py37}-pymemcache{130,140}
|
|
pymongo_contrib-{py34,py35,py36,py37}-pymongo{30,31,32,33,34,35,36,37,38,39,latest}-mongoengine{latest}
|
|
pymysql_contrib-{py34,py35,py36,py37}-pymysql{07,08,09}
|
|
pyramid_contrib{,_autopatch}-{py34,py35,py36,py37}-pyramid{17,18,19}-webtest
|
|
redis_contrib-{py34,py35,py36,py37}-redis{26,27,28,29,210,300}
|
|
rediscluster_contrib-{py34,py35,py36,py37}-rediscluster{135,136}-redis210
|
|
requests_contrib{,_autopatch}-{py34,py35,py36,py37}-requests{208,209,210,211,212,213,219}
|
|
kombu_contrib-{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}
|
|
requests_gevent_contrib-py37-requests{208,209,210,211,212,213,219}-gevent13
|
|
sqlalchemy_contrib-{py34,py35,py36,py37}-sqlalchemy{10,11,12}-psycopg228-mysqlconnector
|
|
sqlite3_contrib-{py34,py35,py36,py37}-sqlite3
|
|
tornado_contrib-{py34,py35,py36,py37}-tornado{40,41,42,43,44,45}
|
|
tornado_contrib-{py37}-tornado{50,51,60}
|
|
vertica_contrib-{py34,py35,py36,py37}-vertica{060,070}
|
|
# Opentracer
|
|
{py34,py35,py36,py37}-opentracer
|
|
{py34,py35,py36,py37}-opentracer_asyncio
|
|
{py34,py35,py36,py37}-opentracer_tornado-tornado{40,41,42,43,44}
|
|
{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-{py34,py35,py36,py37}
|
|
benchmarks-{py34,py35,py36,py37}
|
|
|
|
[testenv]
|
|
# Always re-run `setup.py develop` to ensure the proper C-extension .so files are created
|
|
# DEV: If we don't do this sometimes CircleCI gets messed up and only has the py27 .so
|
|
# meaning running on py3.x will fail
|
|
# https://stackoverflow.com/questions/57459123/why-do-i-need-to-run-tox-twice-to-test-a-python-package-with-c-extension
|
|
commands_pre={envpython} {toxinidir}/setup.py develop
|
|
usedevelop = True
|
|
basepython =
|
|
py34: python3.4
|
|
py35: python3.5
|
|
py36: python3.6
|
|
py37: python3.7
|
|
|
|
deps =
|
|
pdbpp
|
|
pytest>=3
|
|
pytest-benchmark
|
|
pytest-cov
|
|
pytest-django
|
|
pytest-mock
|
|
opentracing
|
|
# test dependencies installed in all envs
|
|
mock
|
|
# force the downgrade as a workaround
|
|
# https://github.com/aio-libs/aiohttp/issues/2662
|
|
yarl: yarl==0.18.0
|
|
yarl10: yarl>=1.0,<1.1
|
|
# integrations
|
|
aiobotocore010: aiobotocore>=0.10,<0.11
|
|
aiobotocore09: aiobotocore>=0.9,<0.10
|
|
aiobotocore08: aiobotocore>=0.8,<0.9
|
|
aiobotocore07: aiobotocore>=0.7,<0.8
|
|
# aiobotocore06 does not work
|
|
aiobotocore05: aiobotocore>=0.5,<0.6
|
|
aiobotocore04: aiobotocore>=0.4,<0.5
|
|
aiobotocore03: aiobotocore>=0.3,<0.4
|
|
aiobotocore02: aiobotocore>=0.2,<0.3
|
|
aiobotocore02: multidict==4.5.2
|
|
aiobotocore{02,03,04}-{py34}: typing
|
|
aiopg012: aiopg>=0.12,<0.13
|
|
aiopg015: aiopg>=0.15,<0.16
|
|
aiopg: sqlalchemy
|
|
aiohttp12: aiohttp>=1.2,<1.3
|
|
aiohttp13: aiohttp>=1.3,<1.4
|
|
aiohttp20: aiohttp>=2.0,<2.1
|
|
aiohttp21: aiohttp>=2.1,<2.2
|
|
aiohttp22: aiohttp>=2.2,<2.3
|
|
aiohttp23: aiohttp>=2.3,<2.4
|
|
aiohttp30: aiohttp>=3.0,<3.1
|
|
aiohttp31: aiohttp>=3.1,<3.2
|
|
aiohttp32: aiohttp>=3.2,<3.3
|
|
aiohttp33: aiohttp>=3.3,<3.4
|
|
aiohttp34: aiohttp>=3.4,<3.5
|
|
aiohttp35: aiohttp>=3.5,<3.6
|
|
aiohttp_jinja012: aiohttp_jinja2>=0.12,<0.13
|
|
aiohttp_jinja013: aiohttp_jinja2>=0.13,<0.14
|
|
aiohttp_jinja015: aiohttp_jinja2>=0.15,<0.16
|
|
algoliasearch1: algoliasearch>=1.2,<2
|
|
algoliasearch2: algoliasearch>=2,<3
|
|
blinker: blinker
|
|
boto: boto
|
|
boto: moto<1.0
|
|
botocore: botocore
|
|
py34-botocore: PyYAML<5.3
|
|
py34-botocore: jsonpatch<1.25
|
|
botocore: moto>=1.0,<2
|
|
bottle11: bottle>=0.11,<0.12
|
|
bottle12: bottle>=0.12,<0.13
|
|
cassandra35: cassandra-driver>=3.5,<3.6
|
|
cassandra36: cassandra-driver>=3.6,<3.7
|
|
cassandra37: cassandra-driver>=3.7,<3.8
|
|
cassandra38: cassandra-driver>=3.8,<3.9
|
|
cassandra315: cassandra-driver>=3.15,<3.16
|
|
celery31: celery>=3.1,<3.2
|
|
celery40: celery>=4.0,<4.1
|
|
celery41: celery>=4.1,<4.2
|
|
celery42: celery>=4.2,<4.3
|
|
celery43: celery>=4.3,<4.4
|
|
consul07: python-consul>=0.7,<1.0
|
|
consul10: python-consul>=1.0,<1.1
|
|
consul11: python-consul>=1.1,<1.2
|
|
ddtracerun: redis
|
|
django18: django>=1.8,<1.9
|
|
django111: django>=1.11,<1.12
|
|
django200: django>=2.0,<2.1
|
|
djangopylibmc06: django-pylibmc>=0.6,<0.7
|
|
djangoredis45: django-redis>=4.5,<4.6
|
|
djangorestframework34: djangorestframework>=3.4,<3.5
|
|
djangorestframework37: djangorestframework>=3.7,<3.8
|
|
djangorestframework38: djangorestframework>=3.8,<3.9
|
|
dogpilecache06: dogpile.cache==0.6.*
|
|
dogpilecache07: dogpile.cache==0.7.*
|
|
dogpilecache08: dogpile.cache==0.8.*
|
|
dogpilecachelatest: dogpile.cache
|
|
elasticsearch16: elasticsearch>=1.6,<1.7
|
|
elasticsearch17: elasticsearch>=1.7,<1.8
|
|
elasticsearch18: elasticsearch>=1.8,<1.9
|
|
elasticsearch23: elasticsearch>=2.3,<2.4
|
|
elasticsearch24: elasticsearch>=2.4,<2.5
|
|
elasticsearch51: elasticsearch>=5.1,<5.2
|
|
elasticsearch52: elasticsearch>=5.2,<5.3
|
|
elasticsearch53: elasticsearch>=5.3,<5.4
|
|
elasticsearch54: elasticsearch>=5.4,<5.5
|
|
elasticsearch63: elasticsearch>=6.3,<6.4
|
|
elasticsearch64: elasticsearch>=6.4,<6.5
|
|
# elasticsearch1 package
|
|
elasticsearch1100: elasticsearch1>=1.10.0,<1.11.0
|
|
# elasticsearch2 package
|
|
elasticsearch250: elasticsearch2>=2.5.0,<2.6.0
|
|
# elasticsearch5 package
|
|
elasticsearch550: elasticsearch5>=5.5.0,<5.6.0
|
|
# elasticsearch6 package
|
|
elasticsearch640: elasticsearch6>=6.4.0,<6.5.0
|
|
falcon10: falcon>=1.0,<1.1
|
|
falcon11: falcon>=1.1,<1.2
|
|
falcon12: falcon>=1.2,<1.3
|
|
falcon13: falcon>=1.3,<1.4
|
|
falcon14: falcon>=1.4,<1.5
|
|
flask010: flask>=0.10,<0.11
|
|
flask011: flask>=0.11,<0.12
|
|
flask012: flask>=0.12,<0.13
|
|
flask10: flask>=1.0,<1.1
|
|
flaskcache012: flask_cache>=0.12,<0.13
|
|
flaskcache013: flask_cache>=0.13,<0.14
|
|
futures: futures
|
|
futures30: futures>=3.0,<3.1
|
|
futures31: futures>=3.1,<3.2
|
|
futures32: futures>=3.2,<3.3
|
|
gevent11: gevent>=1.1,<1.2
|
|
gevent12: gevent>=1.2,<1.3
|
|
gevent13: gevent>=1.3,<1.4
|
|
gevent14: gevent>=1.4,<1.5
|
|
grpc112: grpcio>=1.12.0,<1.13.0
|
|
grpc113: grpcio>=1.13.0,<1.14.0
|
|
grpc114: grpcio>=1.14.0,<1.15.0
|
|
grpc115: grpcio>=1.15.0,<1.16.0
|
|
grpc116: grpcio>=1.16.0,<1.17.0
|
|
grpc117: grpcio>=1.17.0,<1.18.0
|
|
grpc118: grpcio>=1.18.0,<1.19.0
|
|
grpc119: grpcio>=1.19.0,<1.20.0
|
|
grpc120: grpcio>=1.20.0,<1.21.0
|
|
grpc121: grpcio>=1.21.0,<1.22.0
|
|
grpc122: grpcio>=1.22.0,<1.23.0
|
|
grpc112: googleapis-common-protos
|
|
grpc113: googleapis-common-protos
|
|
grpc114: googleapis-common-protos
|
|
grpc115: googleapis-common-protos
|
|
grpc116: googleapis-common-protos
|
|
grpc117: googleapis-common-protos
|
|
grpc118: googleapis-common-protos
|
|
grpc119: googleapis-common-protos
|
|
grpc120: googleapis-common-protos
|
|
grpc121: googleapis-common-protos
|
|
grpc122: googleapis-common-protos
|
|
jinja27: jinja2>=2.7,<2.8
|
|
jinja28: jinja2>=2.8,<2.9
|
|
jinja29: jinja2>=2.9,<2.10
|
|
jinja210: jinja2>=2.10,<2.11
|
|
mako100: mako>=1.0.0,<1.1.0
|
|
mako010: mako>=0.1.0,<1.0.0
|
|
memcached: python-memcached
|
|
molten070: molten>=0.7.0,<0.7.2
|
|
molten072: molten>=0.7.2,<0.8.0
|
|
mongoengine015: mongoengine>=0.15<0.16
|
|
mongoengine016: mongoengine>=0.16<0.17
|
|
mongoengine017: mongoengine>=0.17<0.18
|
|
mongoengine018: mongoengine>=0.18<0.19
|
|
mongoenginelatest: mongoengine>=0.18
|
|
mysqlconnector: mysql-connector-python!=8.0.18
|
|
mysqldb12: mysql-python>=1.2,<1.3
|
|
mysqlclient13: mysqlclient>=1.3,<1.4
|
|
pylibmc: pylibmc
|
|
pylibmc140: pylibmc>=1.4.0,<1.5.0
|
|
pylibmc150: pylibmc>=1.5.0,<1.6.0
|
|
pymemcache130: pymemcache>=1.3.0,<1.4.0
|
|
pymemcache140: pymemcache>=1.4.0,<1.5.0
|
|
pymongo30: pymongo>=3.0,<3.1
|
|
pymongo31: pymongo>=3.1,<3.2
|
|
pymongo32: pymongo>=3.2,<3.3
|
|
pymongo33: pymongo>=3.3,<3.4
|
|
pymongo34: pymongo>=3.4,<3.5
|
|
pymongo36: pymongo>=3.6,<3.7
|
|
pymongo37: pymongo>=3.7,<3.8
|
|
pymongo38: pymongo>=3.8,<3.9
|
|
pymongo39: pymongo>=3.9,<3.10
|
|
pymongolatest: pymongo>=3.9
|
|
pymysql07: pymysql>=0.7,<0.8
|
|
pymysql08: pymysql>=0.8,<0.9
|
|
pymysql09: pymysql>=0.9,<0.10
|
|
pyramid17: pyramid>=1.7,<1.8
|
|
pyramid18: pyramid>=1.8,<1.9
|
|
pyramid19: pyramid>=1.9,<1.10
|
|
psycopg224: psycopg2>=2.4,<2.5
|
|
psycopg225: psycopg2>=2.5,<2.6
|
|
psycopg226: psycopg2>=2.6,<2.7
|
|
psycopg227: psycopg2>=2.7,<2.8
|
|
psycopg228: psycopg2>=2.8,<2.9
|
|
redis26: redis>=2.6,<2.7
|
|
redis27: redis>=2.7,<2.8
|
|
redis28: redis>=2.8,<2.9
|
|
redis29: redis>=2.9,<2.10
|
|
redis210: redis>=2.10,<2.11
|
|
redis300: redis>=3.0.0,<3.1.0
|
|
redis320: redis>=3.2.0,<3.3.0
|
|
rediscluster135: redis-py-cluster>=1.3.5,<1.3.6
|
|
rediscluster136: redis-py-cluster>=1.3.6,<1.3.7
|
|
kombu44: kombu>=4.4,<4.5
|
|
kombu43: kombu>=4.3,<4.4
|
|
kombu42: kombu>=4.2,<4.3
|
|
kombu41: kombu>=4.1,<4.2
|
|
kombu40: kombu>=4.0,<4.1
|
|
requests_contrib: requests-mock>=1.4
|
|
requests200: requests>=2.0,<2.1
|
|
requests208: requests>=2.8,<2.9
|
|
requests209: requests>=2.9,<2.10
|
|
requests210: requests>=2.10,<2.11
|
|
requests211: requests>=2.11,<2.12
|
|
requests212: requests>=2.12,<2.13
|
|
requests213: requests>=2.13,<2.14
|
|
requests218: requests>=2.18,<2.19
|
|
requests219: requests>=2.19,<2.20
|
|
sqlalchemy10: sqlalchemy>=1.0,<1.1
|
|
sqlalchemy11: sqlalchemy>=1.1,<1.2
|
|
sqlalchemy12: sqlalchemy>=1.2,<1.3
|
|
tornado40: tornado>=4.0,<4.1
|
|
tornado41: tornado>=4.1,<4.2
|
|
tornado42: tornado>=4.2,<4.3
|
|
tornado43: tornado>=4.3,<4.4
|
|
tornado44: tornado>=4.4,<4.5
|
|
tornado45: tornado>=4.5,<4.6
|
|
tornado50: tornado>=5.0,<5.1
|
|
tornado51: tornado>=5.1,<5.2
|
|
tornado60: tornado>=6.0,<6.1
|
|
vertica060: vertica-python>=0.6.0,<0.7.0
|
|
vertica070: vertica-python>=0.7.0,<0.8.0
|
|
webtest: WebTest
|
|
|
|
# pass along test env variables
|
|
passenv=TEST_*
|
|
|
|
commands =
|
|
# run only essential tests related to the tracing client
|
|
tracer: pytest {posargs} --ignore="tests/contrib" --ignore="tests/test_integration.py" --ignore="tests/commands" --ignore="tests/opentracer" --ignore="tests/unit" --ignore="tests/internal" tests
|
|
# run only the `ddtrace.internal` tests
|
|
internal: pytest {posargs} tests/internal
|
|
# run only the opentrace tests
|
|
opentracer: pytest {posargs} tests/opentracer/test_tracer.py tests/opentracer/test_span.py tests/opentracer/test_span_context.py tests/opentracer/test_dd_compatibility.py tests/opentracer/test_utils.py
|
|
opentracer_asyncio: pytest {posargs} tests/opentracer/test_tracer_asyncio.py
|
|
opentracer_tornado-tornado{40,41,42,43,44}: pytest {posargs} tests/opentracer/test_tracer_tornado.py
|
|
opentracer_gevent: pytest {posargs} tests/opentracer/test_tracer_gevent.py
|
|
# integration tests
|
|
integration: pytest {posargs} tests/test_integration.py
|
|
# Contribs
|
|
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
|
|
boto_contrib: pytest {posargs} tests/contrib/boto
|
|
botocore_contrib: pytest {posargs} tests/contrib/botocore
|
|
bottle_contrib: pytest {posargs} --ignore="tests/contrib/bottle/test_autopatch.py" tests/contrib/bottle/
|
|
bottle_contrib_autopatch: python tests/ddtrace_run.py pytest {posargs} tests/contrib/bottle/test_autopatch.py
|
|
cassandra_contrib: pytest {posargs} tests/contrib/cassandra
|
|
celery_contrib: pytest {posargs} tests/contrib/celery
|
|
consul_contrib: pytest {posargs} tests/contrib/consul
|
|
dbapi_contrib: pytest {posargs} tests/contrib/dbapi
|
|
django_contrib: pytest {posargs} tests/contrib/django
|
|
django_contrib_autopatch: python tests/ddtrace_run.py pytest {posargs} tests/contrib/django
|
|
django_drf_contrib: pytest {posargs} tests/contrib/djangorestframework
|
|
dogpile_contrib: pytest {posargs} tests/contrib/dogpile_cache
|
|
elasticsearch_contrib: pytest {posargs} tests/contrib/elasticsearch
|
|
falcon_contrib: pytest {posargs} tests/contrib/falcon/test_middleware.py tests/contrib/falcon/test_distributed_tracing.py
|
|
falcon_contrib_autopatch: python tests/ddtrace_run.py pytest {posargs} tests/contrib/falcon/test_autopatch.py
|
|
flask_contrib: pytest {posargs} tests/contrib/flask
|
|
flask_contrib_autopatch: python tests/ddtrace_run.py pytest {posargs} tests/contrib/flask_autopatch
|
|
flask_cache_contrib: pytest {posargs} tests/contrib/flask_cache
|
|
futures_contrib: pytest {posargs} tests/contrib/futures
|
|
gevent_contrib: pytest {posargs} tests/contrib/gevent
|
|
grpc_contrib: pytest {posargs} tests/contrib/grpc
|
|
httplib_contrib: pytest {posargs} tests/contrib/httplib
|
|
jinja2_contrib: pytest {posargs} tests/contrib/jinja2
|
|
mako_contrib: pytest {posargs} tests/contrib/mako
|
|
molten_contrib: pytest {posargs} tests/contrib/molten
|
|
mongoengine_contrib: pytest {posargs} tests/contrib/mongoengine
|
|
mysql_contrib: pytest {posargs} tests/contrib/mysql
|
|
mysqldb_contrib: pytest {posargs} tests/contrib/mysqldb
|
|
psycopg_contrib: pytest {posargs} tests/contrib/psycopg
|
|
pylibmc_contrib: pytest {posargs} tests/contrib/pylibmc
|
|
pymemcache_contrib: pytest {posargs} --ignore="tests/contrib/pymemcache/autopatch" tests/contrib/pymemcache/
|
|
pymemcache_contrib_autopatch: python tests/ddtrace_run.py pytest {posargs} tests/contrib/pymemcache/autopatch/
|
|
pymongo_contrib: pytest {posargs} tests/contrib/pymongo
|
|
pymysql_contrib: pytest {posargs} tests/contrib/pymysql
|
|
pyramid_contrib: pytest {posargs} tests/contrib/pyramid/test_pyramid.py
|
|
pyramid_contrib_autopatch: python tests/ddtrace_run.py pytest {posargs} tests/contrib/pyramid/test_pyramid_autopatch.py
|
|
redis_contrib: pytest {posargs} tests/contrib/redis
|
|
rediscluster_contrib: pytest {posargs} tests/contrib/rediscluster
|
|
requests_contrib: pytest {posargs} tests/contrib/requests
|
|
requests_gevent_contrib: pytest {posargs} tests/contrib/requests_gevent
|
|
kombu_contrib: pytest {posargs} tests/contrib/kombu
|
|
sqlalchemy_contrib: pytest {posargs} tests/contrib/sqlalchemy
|
|
sqlite3_contrib: pytest {posargs} tests/contrib/sqlite3
|
|
tornado_contrib: pytest {posargs} tests/contrib/tornado
|
|
vertica_contrib: pytest {posargs} tests/contrib/vertica/
|
|
# run subsets of the tests for particular library versions
|
|
ddtracerun: pytest {posargs} tests/commands/test_runner.py
|
|
test_utils: pytest {posargs} tests/contrib/test_utils.py
|
|
test_logging: pytest {posargs} tests/contrib/logging/
|
|
# Unit tests: pytest based test suite that do not require any additional dependency.
|
|
unit_tests: pytest {posargs} tests/unit
|
|
benchmarks: pytest --benchmark-only {posargs} tests/benchmark.py
|
|
|
|
[testenv:wait]
|
|
commands=python tests/wait-for-services.py {posargs}
|
|
basepython=python
|
|
deps=
|
|
cassandra-driver
|
|
psycopg2
|
|
mysql-connector-python!=8.0.18
|
|
redis-py-cluster>=1.3.6,<1.4.0
|
|
vertica-python>=0.6.0,<0.7.0
|
|
kombu>=4.2.0,<4.3.0
|
|
|
|
|
|
# this is somewhat flaky (can fail and still be up) so try the tests anyway
|
|
ignore_outcome=true
|
|
|
|
[testenv:black]
|
|
deps=black
|
|
commands=black --check .
|
|
basepython=python3.7
|
|
|
|
[testenv:flake8]
|
|
deps=
|
|
flake8>=3.7,<=3.8
|
|
flake8-blind-except
|
|
flake8-builtins
|
|
flake8-docstrings
|
|
flake8-logging-format
|
|
flake8-rst-docstrings
|
|
# needed for some features from flake8-rst-docstrings
|
|
pygments
|
|
commands=flake8 .
|
|
basepython=python3.7
|
|
|
|
# do not use develop mode with celery as running multiple python versions within
|
|
# same job will cause problem for tests that use ddtrace-run
|
|
[celery_contrib]
|
|
usedevelop = False
|
|
[testenv:celery_contrib-py34-celery31-redis210]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py35-celery31-redis210]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py36-celery31-redis210]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py34-celery40-redis210-kombu43]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py34-celery40-redis320-kombu44]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py34-celery41-redis210-kombu43]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py34-celery41-redis320-kombu44]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py35-celery40-redis210-kombu43]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py35-celery40-redis320-kombu44]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py35-celery41-redis210-kombu43]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py35-celery41-redis320-kombu44]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py36-celery40-redis210-kombu43]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py36-celery40-redis320-kombu44]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py36-celery41-redis210-kombu43]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py36-celery41-redis320-kombu44]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py34-celery42-redis210-kombu43]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py35-celery42-redis210-kombu43]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py36-celery42-redis210-kombu43]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py34-celery43-redis320-kombu44]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py35-celery43-redis320-kombu44]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py36-celery43-redis320-kombu44]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
[testenv:celery_contrib-py37-celery43-redis320-kombu44]
|
|
usedevelop = {[celery_contrib]usedevelop}
|
|
|
|
[falcon_autopatch]
|
|
setenv =
|
|
DATADOG_SERVICE_NAME=my-falcon
|
|
[testenv:falcon_contrib_autopatch-py34-falcon10]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py34-falcon11]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py34-falcon12]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py34-falcon13]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py34-falcon14]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py35-falcon10]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py35-falcon11]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py35-falcon12]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py35-falcon13]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py35-falcon14]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py36-falcon10]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py36-falcon11]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py36-falcon12]
|
|
setenv =
|
|
{[falcon_autopatch]setenv}
|
|
[testenv:falcon_contrib_autopatch-py36-falcon13]
|
|
setenv =
|
|
{[falcon_autopatch]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]
|
|
setenv =
|
|
DATADOG_SERVICE_NAME = foobar
|
|
DATADOG_PYRAMID_DISTRIBUTED_TRACING = True
|
|
[testenv:pyramid_contrib_autopatch-py34-pyramid17-webtest]
|
|
setenv =
|
|
{[pyramid_autopatch]setenv}
|
|
[testenv:pyramid_contrib_autopatch-py34-pyramid18-webtest]
|
|
setenv =
|
|
{[pyramid_autopatch]setenv}
|
|
[testenv:pyramid_contrib_autopatch-py34-pyramid19-webtest]
|
|
setenv =
|
|
{[pyramid_autopatch]setenv}
|
|
[testenv:pyramid_contrib_autopatch-py35-pyramid17-webtest]
|
|
setenv =
|
|
{[pyramid_autopatch]setenv}
|
|
[testenv:pyramid_contrib_autopatch-py35-pyramid18-webtest]
|
|
setenv =
|
|
{[pyramid_autopatch]setenv}
|
|
[testenv:pyramid_contrib_autopatch-py35-pyramid19-webtest]
|
|
setenv =
|
|
{[pyramid_autopatch]setenv}
|
|
[testenv:pyramid_contrib_autopatch-py36-pyramid17-webtest]
|
|
setenv =
|
|
{[pyramid_autopatch]setenv}
|
|
[testenv:pyramid_contrib_autopatch-py36-pyramid18-webtest]
|
|
setenv =
|
|
{[pyramid_autopatch]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]
|
|
setenv =
|
|
DATADOG_SERVICE_NAME = test.flask.service
|
|
DATADOG_PATCH_MODULES = jinja2:false
|
|
[testenv:flask_contrib_autopatch-py34-flask010-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py34-flask011-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py34-flask012-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py34-flask10-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py35-flask010-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py35-flask011-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py35-flask012-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py35-flask10-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py36-flask010-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py36-flask011-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py36-flask012-blinker]
|
|
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-py34-flask010-flaskcache013-memcached-redis210-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py34-flask011-flaskcache013-memcached-redis210-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py34-flask012-flaskcache013-memcached-redis210-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py35-flask010-flaskcache013-memcached-redis210-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py35-flask011-flaskcache013-memcached-redis210-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py35-flask012-flaskcache013-memcached-redis210-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py36-flask010-flaskcache013-memcached-redis210-blinker]
|
|
setenv =
|
|
{[flask_autopatch]setenv}
|
|
[testenv:flask_contrib_autopatch-py36-flask011-flaskcache013-memcached-redis210-blinker]
|
|
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}
|
|
|
|
[bottle_autopatch]
|
|
setenv =
|
|
DATADOG_SERVICE_NAME = bottle-app
|
|
[testenv:bottle_contrib_autopatch-py34-bottle11-webtest]
|
|
setenv =
|
|
{[bottle_autopatch]setenv}
|
|
[testenv:bottle_contrib_autopatch-py35-bottle11-webtest]
|
|
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-py34-bottle12-webtest]
|
|
setenv =
|
|
{[bottle_autopatch]setenv}
|
|
[testenv:bottle_contrib_autopatch-py35-bottle12-webtest]
|
|
setenv =
|
|
{[bottle_autopatch]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
|
|
[pytest]
|
|
# Common directories to ignore
|
|
addopts = --ignore "tests/utils" --ignore "tests/base"
|
|
# DEV: The default is `test_*\.py` which will miss `test.py` files
|
|
python_files = test*\.py
|
|
|
|
[flake8]
|
|
max-line-length=120
|
|
exclude=
|
|
.ddtox,.tox,
|
|
.git,__pycache__,
|
|
.eggs,*.egg,
|
|
build,
|
|
# We shouldn't lint our vendored dependencies
|
|
ddtrace/vendor/
|
|
# Ignore:
|
|
# A003: XXX is a python builtin, consider renaming the class attribute
|
|
# G201 Logging: .exception(...) should be used instead of .error(..., exc_info=True)
|
|
# E231,W503: not respected by black
|
|
# We ignore most of the D errors because there are too many; the goal is to fix them eventually
|
|
ignore = W503,E231,A003,G201,D100,D101,D102,D103,D104,D105,D106,D107,D200,D202,D204,D205,D208,D210,D300,D400,D401,D403,D413
|
|
enable-extensions=G
|
|
rst-roles = class,meth,obj,ref
|
|
rst-directives = py:data
|