diff --git a/.github/workflows/instrumentations_0.yml b/.github/workflows/instrumentations_0.yml index be5e3f7cb8..f4d82498ce 100644 --- a/.github/workflows/instrumentations_0.yml +++ b/.github/workflows/instrumentations_0.yml @@ -57,7 +57,7 @@ jobs: - "logging" - "mysql" - "mysqlclient" - - "pika" + - "sio-pika" - "psycopg2" - "pymemcache" - "pymongo" diff --git a/.github/workflows/instrumentations_1.yml b/.github/workflows/instrumentations_1.yml index d85897251b..a920f34dca 100644 --- a/.github/workflows/instrumentations_1.yml +++ b/.github/workflows/instrumentations_1.yml @@ -26,7 +26,7 @@ jobs: python-version: [py37, py38, py39, py310, py311, pypy3] package: - "urllib" - - "urllib3" + - "urllib3v" - "wsgi" - "distro" - "richconsole" diff --git a/tox.ini b/tox.ini index 013b74e45d..ccf1cc0c14 100644 --- a/tox.ini +++ b/tox.ini @@ -22,9 +22,6 @@ envlist = py3{7,8,9,10,11}-test-opentelemetry-instrumentation pypy3-test-opentelemetry-instrumentation - py3{7,8,9,10,11}-test-instrumentation-aio-pika - pypy3-test-instrumentation-aio-pika - ; opentelemetry-instrumentation-aiohttp-client py3{7,8,9,10,11}-test-instrumentation-aiohttp-client pypy3-test-instrumentation-aiohttp-client @@ -54,11 +51,11 @@ envlist = ; Only officially supported Python versions are tested for each Django ; major release. Updated list can be found at: ; https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django - py3{7}-test-instrumentation-django1 - py3{7,8,9}-test-instrumentation-django2 - py3{7,8,9,10,11}-test-instrumentation-django3 - py3{8,9,10,11}-test-instrumentation-django4 - pypy3-test-instrumentation-django{1,2,3} + py3{7}-test-instrumentation-django-1 + py3{7,8,9}-test-instrumentation-django-2 + py3{7,8,9,10,11}-test-instrumentation-django-3 + py3{8,9,10,11}-test-instrumentation-django-4 + pypy3-test-instrumentation-django-{1,2,3} ; opentelemetry-instrumentation-dbapi py3{7,8,9,10,11}-test-instrumentation-dbapi @@ -70,41 +67,39 @@ envlist = ; pypy3-test-instrumentation-boto ; opentelemetry-instrumentation-elasticsearch - py3{7,8,9,10,11}-test-instrumentation-elasticsearch{2,6} - pypy3-test-instrumentation-elasticsearch{2,6} - - ; opentelemetry-instrumentation-elasticsearch5 - py3{7,8,9}-test-instrumentation-elasticsearch5 - pypy3-test-instrumentation-elasticsearch5 + py3{7,8,9,10,11}-test-instrumentation-elasticsearch-{2,6} + pypy3-test-instrumentation-elasticsearch-{2,6} + py3{7,8,9}-test-instrumentation-elasticsearch-5 + pypy3-test-instrumentation-elasticsearch-5 ; opentelemetry-instrumentation-falcon ; py310 does not work with falcon 1 - py3{7,8,9}-test-instrumentation-falcon1 - py3{7,8,9,10,11}-test-instrumentation-falcon{2,3} - pypy3-test-instrumentation-falcon{1,2,3} + py3{7,8,9}-test-instrumentation-falcon-1 + py3{7,8,9,10,11}-test-instrumentation-falcon-{2,3} + pypy3-test-instrumentation-falcon-{1,2,3} ; opentelemetry-instrumentation-fastapi py3{7,8,9,10,11}-test-instrumentation-fastapi pypy3-test-instrumentation-fastapi ; opentelemetry-instrumentation-flask - py3{7,8,9,10,11}-test-instrumentation-flask{213,220} - py3{8,9,10,11}-test-instrumentation-flask{300} - pypy3-test-instrumentation-flask{213,220} + py3{7,8,9,10,11}-test-instrumentation-flask-{213,220} + py3{8,9,10,11}-test-instrumentation-flask-{300} + pypy3-test-instrumentation-flask-{213,220} ; opentelemetry-instrumentation-urllib py3{7,8,9,10,11}-test-instrumentation-urllib pypy3-test-instrumentation-urllib ; opentelemetry-instrumentation-urllib3 - py3{7,8,9,10,11}-test-instrumentation-urllib3v{1,2} - ;pypy3-test-instrumentation-urllib3v{1,2} + py3{7,8,9,10,11}-test-instrumentation-urllib3v-{1,2} + ;pypy3-test-instrumentation-urllib3v-{1,2} ; opentelemetry-instrumentation-requests py3{7,8,9,10,11}-test-instrumentation-requests ;pypy3-test-instrumentation-requests - ; opentelemetry-instrumentation-starlette. + ; opentelemetry-instrumentation-starlette py3{7,8,9,10,11}-test-instrumentation-starlette pypy3-test-instrumentation-starlette @@ -135,8 +130,8 @@ envlist = ; ext-psycopg2 intentionally excluded from pypy3 ; opentelemetry-instrumentation-pymemcache - py3{7,8,9,10,11}-test-instrumentation-pymemcache{135,200,300,342,400} - pypy3-test-instrumentation-pymemcache{135,200,300,342,400} + py3{7,8,9,10,11}-test-instrumentation-pymemcache-{135,200,300,342,400} + pypy3-test-instrumentation-pymemcache-{135,200,300,342,400} ; opentelemetry-instrumentation-pymongo py3{7,8,9,10,11}-test-instrumentation-pymongo @@ -170,9 +165,9 @@ envlist = py3{7,8,9,10,11}-test-instrumentation-grpc ; opentelemetry-instrumentation-sqlalchemy - py3{7}-test-instrumentation-sqlalchemy{11} - py3{7,8,9,10,11}-test-instrumentation-sqlalchemy{14} - pypy3-test-instrumentation-sqlalchemy{11,14} + py3{7}-test-instrumentation-sqlalchemy-{11} + py3{7,8,9,10,11}-test-instrumentation-sqlalchemy-{14} + pypy3-test-instrumentation-sqlalchemy-{11,14} ; opentelemetry-instrumentation-redis py3{7,8,9,10,11}-test-instrumentation-redis @@ -206,8 +201,8 @@ envlist = pypy3-test-instrumentation-tortoiseorm ; opentelemetry-instrumentation-httpx - py3{7,8,9,10,11}-test-instrumentation-httpx{18,21} - pypy3-test-instrumentation-httpx{18,21} + py3{7,8,9,10,11}-test-instrumentation-httpx-{18,21} + pypy3-test-instrumentation-httpx-{18,21} ; opentelemetry-util-http py3{7,8,9,10,11}-test-util-http @@ -221,13 +216,13 @@ envlist = py3{7,8,9,10,11}-test-propagator-ot-trace pypy3-test-propagator-ot-trace - ; opentelemetry-instrumentation-pika - py3{7,8,9,10,11}-test-instrumentation-pika{0,1} - pypy3-test-instrumentation-pika{0,1} + ; opentelemetry-instrumentation-sio-pika + py3{7,8,9,10,11}-test-instrumentation-sio-pika-{0,1} + pypy3-test-instrumentation-sio-pika-{0,1} ; opentelemetry-instrumentation-aio-pika - py3{7,8,9,10,11}-test-instrumentation-aio-pika{7,8,9} - pypy3-test-instrumentation-aio-pika{7,8,9} + py3{7,8,9,10,11}-test-instrumentation-aio-pika-{7,8,9} + pypy3-test-instrumentation-aio-pika-{7,8,9} ; opentelemetry-instrumentation-kafka-python py3{7,8,9,10,11}-test-instrumentation-kafka-python @@ -255,50 +250,50 @@ deps = test: pytest-benchmark coverage: pytest coverage: pytest-cov - django1: django~=1.0 - django2: django~=2.0 - django3: django~=3.0 - django4: django>=4.0b1,<5.0 - elasticsearch2: elasticsearch-dsl>=2.0,<3.0 - elasticsearch2: elasticsearch>=2.0,<3.0 - elasticsearch5: elasticsearch-dsl>=5.0,<6.0 - elasticsearch5: elasticsearch>=5.0,<6.0 - elasticsearch6: elasticsearch-dsl>=6.0,<7.0 - elasticsearch6: elasticsearch>=6.0,<7.0 + django-1: django~=1.0 + django-2: django~=2.0 + django-3: django~=3.0 + django-4: django>=4.0b1,<5.0 + elasticsearch-2: elasticsearch-dsl>=2.0,<3.0 + elasticsearch-2: elasticsearch>=2.0,<3.0 + elasticsearch-5: elasticsearch-dsl>=5.0,<6.0 + elasticsearch-5: elasticsearch>=5.0,<6.0 + elasticsearch-6: elasticsearch-dsl>=6.0,<7.0 + elasticsearch-6: elasticsearch>=6.0,<7.0 ; FIXME: Elasticsearch >=7 causes CI workflow tests to hang, see open-telemetry/opentelemetry-python-contrib#620 - ; elasticsearch7: elasticsearch-dsl>=7.0,<8.0 - ; elasticsearch7: elasticsearch>=7.0,<8.0 - ; elasticsearch8: elasticsearch-dsl>=8.0,<9.0 - ; elasticsearch8: elasticsearch>=8.0,<9.0 - falcon1: falcon ==1.4.1 - falcon2: falcon >=2.0.0,<3.0.0 - falcon3: falcon >=3.0.0,<4.0.0 - flask213: Flask ==2.1.3 - flask213: Werkzeug <3.0.0 - flask220: Flask ==2.2.0 - flask220: Werkzeug <3.0.0 - flask300: Flask >=3.0.0 - flask300: Werkzeug >=3.0.0 + ; elasticsearch-7: elasticsearch-dsl>=7.0,<8.0 + ; elasticsearch-7: elasticsearch>=7.0,<8.0 + ; elasticsearch-8: elasticsearch-dsl>=8.0,<9.0 + ; elasticsearch-8: elasticsearch>=8.0,<9.0 + falcon-1: falcon ==1.4.1 + falcon-2: falcon >=2.0.0,<3.0.0 + falcon-3: falcon >=3.0.0,<4.0.0 + flask-213: Flask ==2.1.3 + flask-213: Werkzeug <3.0.0 + flask-220: Flask ==2.2.0 + flask-220: Werkzeug <3.0.0 + flask-300: Flask >=3.0.0 + flask-300: Werkzeug >=3.0.0 grpc: pytest-asyncio - sqlalchemy11: sqlalchemy>=1.1,<1.2 - sqlalchemy14: aiosqlite - sqlalchemy14: sqlalchemy~=1.4 - pika0: pika>=0.12.0,<1.0.0 - pika1: pika>=1.0.0 - aio-pika7: aio_pika~=7.2.0 - aio-pika8: aio_pika>=8.0.0,<9.0.0 - aio-pika9: aio_pika>=9.0.0,<10.0.0 - pymemcache135: pymemcache ==1.3.5 - pymemcache200: pymemcache >2.0.0,<3.0.0 - pymemcache300: pymemcache >3.0.0,<3.4.2 - pymemcache342: pymemcache ==3.4.2 - pymemcache400: pymemcache ==4.0.0 - httpx18: httpx>=0.18.0,<0.19.0 - httpx18: respx~=0.17.0 - httpx21: httpx>=0.19.0 - httpx21: respx~=0.20.1 - urllib3v1: urllib3 >=1.0.0,<2.0.0 - urllib3v2: urllib3 >=2.0.0,<3.0.0 + sqlalchemy-11: sqlalchemy>=1.1,<1.2 + sqlalchemy-14: aiosqlite + sqlalchemy-14: sqlalchemy~=1.4 + sio-pika-0: pika>=0.12.0,<1.0.0 + sio-pika-1: pika>=1.0.0 + aio-pika-7: aio_pika~=7.2.0 + aio-pika-8: aio_pika>=8.0.0,<9.0.0 + aio-pika-9: aio_pika>=9.0.0,<10.0.0 + pymemcache-135: pymemcache ==1.3.5 + pymemcache-200: pymemcache >2.0.0,<3.0.0 + pymemcache-300: pymemcache >3.0.0,<3.4.2 + pymemcache-342: pymemcache ==3.4.2 + pymemcache-400: pymemcache ==4.0.0 + httpx-18: httpx>=0.18.0,<0.19.0 + httpx-18: respx~=0.17.0 + httpx-21: httpx>=0.19.0 + httpx-21: respx~=0.20.1 + urllib3v-1: urllib3 >=1.0.0,<2.0.0 + urllib3v-2: urllib3 >=2.0.0,<3.0.0 ; FIXME: add coverage testing ; FIXME: add mypy testing @@ -312,7 +307,6 @@ setenv = changedir = test-distro: opentelemetry-distro/tests test-opentelemetry-instrumentation: opentelemetry-instrumentation/tests - test-instrumentation-aio-pika: instrumentation/opentelemetry-instrumentation-aio-pika/tests test-instrumentation-aiohttp-client: instrumentation/opentelemetry-instrumentation-aiohttp-client/tests test-instrumentation-aiohttp-server: instrumentation/opentelemetry-instrumentation-aiohttp-server/tests test-instrumentation-aiopg: instrumentation/opentelemetry-instrumentation-aiopg/tests @@ -325,13 +319,13 @@ changedir = test-instrumentation-cassandra: instrumentation/opentelemetry-instrumentation-cassandra/tests test-instrumentation-celery: instrumentation/opentelemetry-instrumentation-celery/tests test-instrumentation-dbapi: instrumentation/opentelemetry-instrumentation-dbapi/tests - test-instrumentation-django{1,2,3,4}: instrumentation/opentelemetry-instrumentation-django/tests - test-instrumentation-elasticsearch{2,5,6}: instrumentation/opentelemetry-instrumentation-elasticsearch/tests - test-instrumentation-falcon{1,2,3}: instrumentation/opentelemetry-instrumentation-falcon/tests + test-instrumentation-django-{1,2,3,4}: instrumentation/opentelemetry-instrumentation-django/tests + test-instrumentation-elasticsearch-{2,5,6}: instrumentation/opentelemetry-instrumentation-elasticsearch/tests + test-instrumentation-falcon-{1,2,3}: instrumentation/opentelemetry-instrumentation-falcon/tests test-instrumentation-fastapi: instrumentation/opentelemetry-instrumentation-fastapi/tests - test-instrumentation-flask{213,220,300}: instrumentation/opentelemetry-instrumentation-flask/tests + test-instrumentation-flask-{213,220,300}: instrumentation/opentelemetry-instrumentation-flask/tests test-instrumentation-urllib: instrumentation/opentelemetry-instrumentation-urllib/tests - test-instrumentation-urllib3v{1,2}: instrumentation/opentelemetry-instrumentation-urllib3/tests + test-instrumentation-urllib3v-{1,2}: instrumentation/opentelemetry-instrumentation-urllib3/tests test-instrumentation-grpc: instrumentation/opentelemetry-instrumentation-grpc/tests test-instrumentation-jinja2: instrumentation/opentelemetry-instrumentation-jinja2/tests test-instrumentation-kafka-python: instrumentation/opentelemetry-instrumentation-kafka-python/tests @@ -339,10 +333,10 @@ changedir = test-instrumentation-logging: instrumentation/opentelemetry-instrumentation-logging/tests test-instrumentation-mysql: instrumentation/opentelemetry-instrumentation-mysql/tests test-instrumentation-mysqlclient: instrumentation/opentelemetry-instrumentation-mysqlclient/tests - test-instrumentation-pika{0,1}: instrumentation/opentelemetry-instrumentation-pika/tests - test-instrumentation-aio-pika{7,8,9}: instrumentation/opentelemetry-instrumentation-aio-pika/tests + test-instrumentation-sio-pika-{0,1}: instrumentation/opentelemetry-instrumentation-pika/tests + test-instrumentation-aio-pika-{7,8,9}: instrumentation/opentelemetry-instrumentation-aio-pika/tests test-instrumentation-psycopg2: instrumentation/opentelemetry-instrumentation-psycopg2/tests - test-instrumentation-pymemcache{135,200,300,342,400}: instrumentation/opentelemetry-instrumentation-pymemcache/tests + test-instrumentation-pymemcache-{135,200,300,342,400}: instrumentation/opentelemetry-instrumentation-pymemcache/tests test-instrumentation-pymongo: instrumentation/opentelemetry-instrumentation-pymongo/tests test-instrumentation-pymysql: instrumentation/opentelemetry-instrumentation-pymysql/tests test-instrumentation-pyramid: instrumentation/opentelemetry-instrumentation-pyramid/tests @@ -350,14 +344,14 @@ changedir = test-instrumentation-remoulade: instrumentation/opentelemetry-instrumentation-remoulade/tests test-instrumentation-requests: instrumentation/opentelemetry-instrumentation-requests/tests test-instrumentation-sklearn: instrumentation/opentelemetry-instrumentation-sklearn/tests - test-instrumentation-sqlalchemy{11,14}: instrumentation/opentelemetry-instrumentation-sqlalchemy/tests + test-instrumentation-sqlalchemy-{11,14}: instrumentation/opentelemetry-instrumentation-sqlalchemy/tests test-instrumentation-sqlite3: instrumentation/opentelemetry-instrumentation-sqlite3/tests test-instrumentation-starlette: instrumentation/opentelemetry-instrumentation-starlette/tests test-instrumentation-system-metrics: instrumentation/opentelemetry-instrumentation-system-metrics/tests test-instrumentation-tornado: instrumentation/opentelemetry-instrumentation-tornado/tests test-instrumentation-tortoiseorm: instrumentation/opentelemetry-instrumentation-tortoiseorm/tests test-instrumentation-wsgi: instrumentation/opentelemetry-instrumentation-wsgi/tests - test-instrumentation-httpx{18,21}: instrumentation/opentelemetry-instrumentation-httpx/tests + test-instrumentation-httpx-{18,21}: instrumentation/opentelemetry-instrumentation-httpx/tests test-util-http: util/opentelemetry-util-http/tests test-sdkextension-aws: sdk-extension/opentelemetry-sdk-extension-aws/tests test-resource-detector-container: resource/opentelemetry-resource-detector-container/tests @@ -381,9 +375,9 @@ commands_pre = celery: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-celery[test] - pika{0,1}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-pika[test] + sio-pika-{0,1}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-pika[test] - aio-pika{7,8,9}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika[test] + aio-pika-{7,8,9}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika[test] kafka-python: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-kafka-python[test] @@ -391,9 +385,9 @@ commands_pre = grpc: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-grpc[test] - falcon{1,2,3},flask{213,220,300},django{1,2,3,4},pyramid,tornado,starlette,fastapi,aiohttp,asgi,httpx{18,21},requests,urllib,urllib3v{1,2},wsgi: pip install {toxinidir}/util/opentelemetry-util-http[test] - wsgi,falcon{1,2,3},flask{213,220,300},django{1,2,3,4},pyramid: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-wsgi[test] - asgi,django{3,4},starlette,fastapi: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-asgi[test] + falcon-{1,2,3},flask-{213,220,300},django-{1,2,3,4},pyramid,tornado,starlette,fastapi,aiohttp,asgi,httpx-{18,21},requests,urllib,urllib3v-{1,2},wsgi: pip install {toxinidir}/util/opentelemetry-util-http + wsgi,falcon-{1,2,3},flask-{213,220,300},django-{1,2,3,4},pyramid: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-wsgi[test] + asgi,django-{3,4},starlette,fastapi: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-asgi[test] asyncpg: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncpg[test] @@ -404,13 +398,13 @@ commands_pre = boto3sqs: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-boto3sqs[test] - falcon{1,2,3}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon[test] + falcon-{1,2,3}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon[test] - flask{213,220,300}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-flask[test] + flask-{213,220,300}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-flask[test] urllib: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib[test] - urllib3v{1,2}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib3[test] + urllib3v-{1,2}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib3[test] botocore: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-botocore[test] @@ -418,7 +412,7 @@ commands_pre = dbapi: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-dbapi[test] - django{1,2,3,4}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-django[test] + django-{1,2,3,4}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-django[test] fastapi: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi[test] @@ -426,7 +420,7 @@ commands_pre = mysqlclient: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-dbapi {toxinidir}/instrumentation/opentelemetry-instrumentation-mysqlclient[test] - pymemcache{135,200,300,342,400}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache[test] + pymemcache-{135,200,300,342,400}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache[test] pymongo: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-pymongo[test] @@ -456,7 +450,7 @@ commands_pre = logging: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-logging[test] - aio-pika: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika[test] + aio-pika-{7,8,9}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika[test] aiohttp-client: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-aiohttp-client[test] @@ -470,17 +464,17 @@ commands_pre = sklearn: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-sklearn[test] - sqlalchemy{11,14}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy[test] + sqlalchemy-{11,14}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy[test] - elasticsearch{2,5,6}: pip install {toxinidir}/opentelemetry-instrumentation[test] {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch[test] + elasticsearch-{2,5,6}: pip install {toxinidir}/opentelemetry-instrumentation[test] {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch[test] - httpx{18,21}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-httpx[test] + httpx-{18,21}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-httpx[test] sdkextension-aws: pip install {toxinidir}/sdk-extension/opentelemetry-sdk-extension-aws[test] resource-detector-container: pip install {toxinidir}/resource/opentelemetry-resource-detector-container[test] - http: pip install {toxinidir}/util/opentelemetry-util-http[test] + http: pip install {toxinidir}/util/opentelemetry-util-http ; In order to get a health coverage report, propagator-ot-trace: pip install {toxinidir}/propagator/opentelemetry-propagator-ot-trace[test] @@ -531,7 +525,7 @@ commands_pre = python -m pip install "{env:CORE_REPO}#egg=opentelemetry-semantic-conventions&subdirectory=opentelemetry-semantic-conventions" python -m pip install "{env:CORE_REPO}#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk" python -m pip install "{env:CORE_REPO}#egg=opentelemetry-test-utils&subdirectory=tests/opentelemetry-test-utils" - python -m pip install -e {toxinidir}/util/opentelemetry-util-http[test] + python -m pip install -e {toxinidir}/util/opentelemetry-util-http python -m pip install -e {toxinidir}/opentelemetry-instrumentation[test] python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-wsgi[test] python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-dbapi[test]