diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py b/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py index bf795b7e64..dc2a75d81e 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/__init__.py @@ -103,6 +103,7 @@ def func(): from wrapt import wrap_function_wrapper as _wrap +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio.metrics import ( ASYNCIO_COROUTINE_ACTIVE, ASYNCIO_COROUTINE_CANCELLED, @@ -215,10 +216,10 @@ def _instrument(self, **kwargs): def _uninstrument(self, **kwargs): for method in self.methods_with_coroutine: - self.uninstrument_method_with_coroutine(method) - self.uninstrument_gather() - self.uninstrument_to_thread() - self.uninstrument_taskgroup_create_task() + uninstrument_method_with_coroutine(method) + uninstrument_gather() + uninstrument_to_thread() + uninstrument_taskgroup_create_task() def instrument_method_with_coroutine(self, method_name): """ @@ -245,24 +246,16 @@ def wrap_coro_or_future(method, instance, args, kwargs): _wrap(asyncio, method_name, wrap_coro_or_future) - def uninstrument_method_with_coroutine(self, method_name): - """ - Uninstrument specified asyncio method. - """ - unwrap(asyncio, method_name) - def instrument_gather(self): def wrap_coros_or_futures(method, instance, args, kwargs): if args and len(args) > 0: # Check if it's a coroutine or future and wrap it wrapped_args = tuple(self.trace_item(item) for item in args) return method(*wrapped_args, **kwargs) + return method(*args, **kwargs) _wrap(asyncio, "gather", wrap_coros_or_futures) - def uninstrument_gather(self): - unwrap(asyncio, "gather") - def instrument_to_thread(self): # to_thread was added in Python 3.9 if sys.version_info < (3, 9): @@ -276,15 +269,10 @@ def wrap_to_thread(method, instance, args, kwargs): wrapped_args = (wrapped_first_arg,) + args[1:] return method(*wrapped_args, **kwargs) + return method(*args, **kwargs) _wrap(asyncio, "to_thread", wrap_to_thread) - def uninstrument_to_thread(self): - # to_thread was added in Python 3.9 - if sys.version_info < (3, 9): - return - unwrap(asyncio, "to_thread") - def instrument_taskgroup_create_task(self): # TaskGroup.create_task was added in Python 3.11 if sys.version_info < (3, 11): @@ -296,14 +284,11 @@ def wrap_taskgroup_create_task(method, instance, args, kwargs): wrapped_coro = self.trace_coroutine(coro) wrapped_args = (wrapped_coro,) + args[1:] return method(*wrapped_args, **kwargs) + return method(*args, **kwargs) - _wrap(asyncio.TaskGroup, "create_task", wrap_taskgroup_create_task) - - def uninstrument_taskgroup_create_task(self): - # TaskGroup.create_task was added in Python 3.11 - if sys.version_info < (3, 11): - return - unwrap(asyncio.TaskGroup, "create_task") + _wrap( + asyncio.TaskGroup, "create_task", wrap_taskgroup_create_task # pylint: disable=no-member + ) def trace_to_thread(self, func): """Trace a function.""" @@ -343,7 +328,7 @@ def trace_item(self, coro_or_future): return coro_or_future if asyncio.iscoroutine(coro_or_future): return self.trace_coroutine(coro_or_future) - elif futures.isfuture(coro_or_future): + if futures.isfuture(coro_or_future): return self.trace_future(coro_or_future) return coro_or_future @@ -527,3 +512,28 @@ def create_to_thread_metric(self): description="Number of asyncio function finished", unit="1", ) + + +def uninstrument_taskgroup_create_task(): + # TaskGroup.create_task was added in Python 3.11 + if sys.version_info < (3, 11): + return + unwrap(asyncio.TaskGroup, "create_task") # pylint: disable=no-member + + +def uninstrument_to_thread(): + # to_thread was added in Python 3.9 + if sys.version_info < (3, 9): + return + unwrap(asyncio, "to_thread") + + +def uninstrument_gather(): + unwrap(asyncio, "gather") + + +def uninstrument_method_with_coroutine(method_name): + """ + Uninstrument specified asyncio method. + """ + unwrap(asyncio, method_name) diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/utils.py b/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/utils.py index 78d700fdff..c196a7bda7 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/utils.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/src/opentelemetry/instrumentation/asyncio/utils.py @@ -13,6 +13,7 @@ # limitations under the License. import os +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio.environment_variables import ( OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE, OTEL_PYTHON_ASYNCIO_FUTURE_TRACE_ENABLED, diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_cancellation.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_cancellation.py index ae887af44d..b812426685 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_cancellation.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_cancellation.py @@ -14,6 +14,7 @@ import asyncio from unittest.mock import patch +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio import ( ASYNCIO_COROUTINE_ACTIVE, ASYNCIO_COROUTINE_CANCELLED, diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_create_task.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_create_task.py index af62919156..38962c6b1e 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_create_task.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_create_task.py @@ -14,6 +14,7 @@ import asyncio from unittest.mock import patch +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio import AsyncioInstrumentor from opentelemetry.instrumentation.asyncio.environment_variables import ( OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE, @@ -46,8 +47,6 @@ async def async_func(): asyncio.run(async_func()) spans = self.memory_exporter.get_finished_spans() - """ - OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE: "sleep" - """ + self.assertEqual(len(spans), 1) self.assertEqual(spans[0].name, "asyncio.coro-sleep") diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_ensure_future.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_ensure_future.py index f0d89aa00c..a160c23850 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_ensure_future.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_ensure_future.py @@ -16,6 +16,7 @@ import pytest +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio import ( ASYNCIO_FUTURES_ACTIVE, ASYNCIO_FUTURES_CANCELLED, @@ -92,7 +93,7 @@ async def test(): if span.name == "root": self.assertEqual(span.parent, None) if span.name == "asyncio.future": - self.assertNotEquals(span.parent.trace_id, 0) + self.assertNotEqual(span.parent.trace_id, 0) for metric in ( self.memory_metrics_reader.get_metrics_data() @@ -101,7 +102,7 @@ async def test(): .metrics ): if metric.name == ASYNCIO_FUTURES_DURATION: - self.assertEquals(metric.data.data_points[0].count, 1) + self.assertEqual(metric.data.data_points[0].count, 1) elif metric.name == ASYNCIO_FUTURES_ACTIVE: self.assertEqual(metric.data.data_points[0].value, 0) elif metric.name == ASYNCIO_FUTURES_CREATED: diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_gather.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_gather.py index 74909d26e1..6d9533c271 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_gather.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_gather.py @@ -14,6 +14,7 @@ import asyncio from unittest.mock import patch +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio import AsyncioInstrumentor from opentelemetry.instrumentation.asyncio.environment_variables import ( OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE, diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_integration.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_integration.py index 4070a29450..7f4723ec24 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_integration.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_integration.py @@ -14,6 +14,7 @@ import asyncio from unittest.mock import patch +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio import AsyncioInstrumentor from opentelemetry.instrumentation.asyncio.environment_variables import ( OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE, @@ -31,9 +32,6 @@ def setUp(self): __name__, ) - def tearDown(self): - super().tearDown() - @patch.dict( "os.environ", {OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE: "sleep"} ) diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_run_coroutine_threadsafe.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_run_coroutine_threadsafe.py index 0de870ec29..fdf4bcb353 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_run_coroutine_threadsafe.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_run_coroutine_threadsafe.py @@ -16,6 +16,7 @@ from concurrent.futures import ThreadPoolExecutor from unittest.mock import patch +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio import AsyncioInstrumentor from opentelemetry.instrumentation.asyncio.environment_variables import ( OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE, diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_taskgroup.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_taskgroup.py index f775efcdb4..e02f63aa42 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_taskgroup.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_taskgroup.py @@ -15,6 +15,7 @@ import sys from unittest.mock import patch +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio import AsyncioInstrumentor from opentelemetry.instrumentation.asyncio.environment_variables import ( OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE, @@ -51,7 +52,7 @@ def test_task_group_create_task(self): return async def main(): - async with asyncio.TaskGroup() as tg: + async with asyncio.TaskGroup() as tg: # pylint: disable=no-member for _ in range(10): tg.create_task(async_func()) diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_to_thread.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_to_thread.py index fe494ebdaa..8f2538af21 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_to_thread.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_to_thread.py @@ -15,6 +15,7 @@ import sys from unittest.mock import patch +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio import AsyncioInstrumentor from opentelemetry.instrumentation.asyncio.environment_variables import ( OTEL_PYTHON_ASYNCIO_TO_THREAD_FUNCTION_NAMES_TO_TRACE, @@ -63,7 +64,7 @@ async def to_thread(): .metrics ): if metric.name == "asyncio.to_thread.duration": - self.assertEquals(metric.data.data_points[0].count, 1) + self.assertEqual(metric.data.data_points[0].count, 1) elif metric.name == "asyncio.to_thread.active": self.assertEqual(metric.data.data_points[0].value, 0) elif metric.name == "asyncio.to_thread.created": diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_utils.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_utils.py index 5e5efb0522..f3974e2d43 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_utils.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_utils.py @@ -14,10 +14,15 @@ from unittest import TestCase from unittest.mock import patch +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio.environment_variables import ( OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE, OTEL_PYTHON_ASYNCIO_FUTURE_TRACE_ENABLED, ) +from opentelemetry.instrumentation.asyncio.utils import ( + get_coros_to_trace, + get_future_trace_enabled, +) class TestAsyncioToThread(TestCase): @@ -28,10 +33,6 @@ class TestAsyncioToThread(TestCase): }, ) def test_separator(self): - from opentelemetry.instrumentation.asyncio.utils import ( - get_coros_to_trace, - ) - self.assertEqual( get_coros_to_trace(), {"test1", "test2", "test3", "test4"} ) @@ -40,8 +41,4 @@ def test_separator(self): "os.environ", {OTEL_PYTHON_ASYNCIO_FUTURE_TRACE_ENABLED: "true"} ) def test_future_trace_enabled(self): - from opentelemetry.instrumentation.asyncio.utils import ( - get_future_trace_enabled, - ) - self.assertEqual(get_future_trace_enabled(), True) diff --git a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_wait.py b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_wait.py index f00c81310b..77064aeafa 100644 --- a/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_wait.py +++ b/instrumentation/opentelemetry-instrumentation-asyncio/tests/test_asyncio_wait.py @@ -15,6 +15,7 @@ import sys from unittest.mock import patch +# pylint: disable=no-name-in-module from opentelemetry.instrumentation.asyncio import AsyncioInstrumentor from opentelemetry.instrumentation.asyncio.environment_variables import ( OTEL_PYTHON_ASYNCIO_COROUTINE_NAMES_TO_TRACE, diff --git a/tox.ini b/tox.ini index 1355d4c69a..d4b8bd4931 100644 --- a/tox.ini +++ b/tox.ini @@ -534,60 +534,56 @@ commands_pre = 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}/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] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-asgi[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-botocore[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-boto3sqs[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-django[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-starlette[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-grpc[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-boto[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-flask[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-cassandra[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-celery[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-pika[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika[test] - ; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-sklearn[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-redis[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-remoulade[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-jinja2[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-kafka-python[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-confluent-kafka[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-logging[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg2[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-aiohttp-client[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-aiohttp-server[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-aiopg[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlite3[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-pyramid[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-requests[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib3[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-pymysql[test] - # prerequisite: follow the instructions here https://github.com/PyMySQL/mysqlclient#install - # for your OS to install the required dependencies - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-mysqlclient[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-pymongo[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncpg[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-tornado[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-tortoiseorm[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-mysql[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-httpx[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-aws-lambda[test] - python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-system-metrics[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-wsgi[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-dbapi[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-asgi[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-botocore[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-boto3sqs[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-django[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-starlette[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-grpc[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-boto[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-flask[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-cassandra[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-celery[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-pika[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-aio-pika[test] +; ; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-sklearn[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-redis[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-remoulade[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-jinja2[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-kafka-python[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-confluent-kafka[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-logging[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-pymemcache[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-psycopg2[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-aiohttp-client[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-aiohttp-server[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-aiopg[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlite3[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-pyramid[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-requests[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib3[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-pymysql[test] +; # prerequisite: follow the instructions here https://github.com/PyMySQL/mysqlclient#install +; # for your OS to install the required dependencies +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-mysqlclient[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-pymongo[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncpg[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-tornado[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-tortoiseorm[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-mysql[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-httpx[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-aws-lambda[test] +; python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-system-metrics[test] python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncio[test] - python -m pip install -e {toxinidir}/exporter/opentelemetry-exporter-richconsole[test] - # requires snappy headers to be available on the system - python -m pip install -e {toxinidir}/sdk-extension/opentelemetry-sdk-extension-aws[test] - python -m pip install -e {toxinidir}/resource/opentelemetry-resource-detector-container[test] - python -m pip install -e {toxinidir}/propagator/opentelemetry-propagator-aws-xray[test] - python -m pip install -e {toxinidir}/propagator/opentelemetry-propagator-ot-trace[test] +; python -m pip install -e {toxinidir}/exporter/opentelemetry-exporter-richconsole[test] + python -m pip install -e {toxinidir}/opentelemetry-distro[test] commands =