diff --git a/initializer/components.py b/initializer/components.py index 675a061..407166a 100644 --- a/initializer/components.py +++ b/initializer/components.py @@ -16,6 +16,10 @@ # from .odigos_sampler import OdigosSampler # from opentelemetry.sdk.trace.sampling import ParentBased +# Reorder the python sys.path to ensure that the user application's dependencies take precedence over the agent's dependencies. +# This is necessary because the user application's dependencies may be incompatible with those used by the agent. +reorder_python_path() + from opamp.http_client import OpAMPHTTPClient @@ -49,10 +53,7 @@ def initialize_components(trace_exporters = None, metric_exporters = None, log_e initialize_metrics_if_enabled(metric_exporters, resource) initialize_logging_if_enabled(log_exporters, resource) - # Reorder the python sys.path to ensure that the user application's dependencies take precedence over the agent's dependencies. - # This is necessary because the user application's dependencies may be incompatible with those used by the agent. - reorder_python_path() - # Reload distro modules to ensure the new path is used. + # # Reload distro modules to ensure the new path is used. reload_distro_modules() except Exception as e: diff --git a/initializer/lib_handling.py b/initializer/lib_handling.py index 251549c..97cfdd4 100644 --- a/initializer/lib_handling.py +++ b/initializer/lib_handling.py @@ -12,11 +12,10 @@ def reload_distro_modules() -> None: # Delete distro modules and their sub-modules, as they have been imported before the path was reordered. # The distro modules will be re-imported from the new path. needed_module_prefixes = [ - 'google.protobuf', 'requests', 'charset_normalizer', 'certifi', - 'asgiref' + 'asgiref', 'idna', 'deprecated', 'importlib_metadata', @@ -28,7 +27,15 @@ def reload_distro_modules() -> None: 'typing_extensions', ] + excluded_modules = [ + 'urllib3_odigos', + 'requests_odigos' + ] + for module in list(sys.modules): - # Check if the module starts with any of the needed prefixes + # Check if the module starts with any of the needed prefixes, but not with any of the excluded prefixes. + if any(module.startswith(prefix) for prefix in excluded_modules): + continue + if any(module.startswith(prefix) for prefix in needed_module_prefixes): del sys.modules[module] diff --git a/opamp/http_client.py b/opamp/http_client.py index 0ff1ee4..9656627 100644 --- a/opamp/http_client.py +++ b/opamp/http_client.py @@ -2,7 +2,7 @@ import sys import time import threading -import requests +import requests_odigos import logging from uuid_extensions import uuid7 @@ -141,8 +141,8 @@ def worker(self): server_to_agent = self.send_agent_to_server_message(agent_to_server) self.update_remote_config_status(server_to_agent) - - except requests.RequestException as e: + + except requests_odigos.RequestException as e: opamp_logger.error(f"Error fetching data: {e}") self.condition.wait(30) @@ -151,7 +151,7 @@ def send_heartbeat(self) -> opamp_pb2.ServerToAgent: try: agent_to_server = opamp_pb2.AgentToServer(remote_config_status=self.remote_config_status) return self.send_agent_to_server_message(agent_to_server) - except requests.RequestException as e: + except requests_odigos.RequestException as e: opamp_logger.error(f"Error sending heartbeat to OpAMP server: {e}") def get_agent_description(self) -> opamp_pb2.AgentDescription: @@ -208,12 +208,12 @@ def send_agent_to_server_message(self, message: opamp_pb2.AgentToServer) -> opam try: agent_message = attach(set_value(_SUPPRESS_HTTP_INSTRUMENTATION_KEY, True)) - response = requests.post(self.server_url, data=message_bytes, headers=headers, timeout=5) + response = requests_odigos.post(self.server_url, data=message_bytes, headers=headers, timeout=5) response.raise_for_status() - except requests.Timeout: + except requests_odigos.Timeout: opamp_logger.error("Timeout sending message to OpAMP server") return opamp_pb2.ServerToAgent() - except requests.ConnectionError as e: + except requests_odigos.ConnectionError as e: opamp_logger.error(f"Error sending message to OpAMP server: {e}") return opamp_pb2.ServerToAgent() finally: diff --git a/requirements.txt b/requirements.txt index 5a3e015..f9ed0b6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,22 +9,30 @@ asgiref==3.8.1 # opentelemetry-instrumentation-asgi # opentelemetry-test-utils certifi==2023.5.7 - # via requests + # via + # odigos-requests + # requests charset-normalizer==3.2.0 - # via requests + # via + # odigos-requests + # requests deprecated==1.2.14 # via # opentelemetry-api # opentelemetry-exporter-otlp-proto-http -googleapis-common-protos==1.63.2 +googleapis-common-protos==1.65.0 # via opentelemetry-exporter-otlp-proto-http idna==3.4 - # via requests + # via + # odigos-requests + # requests importlib-metadata==7.0.0 # via # opentelemetry-api # opentelemetry-instrumentation-flask -opentelemetry-api==1.24.0 +odigos-requests==2.32.3.dev0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-api==1.25.0 # via # opentelemetry-distro # opentelemetry-exporter-otlp-proto-http @@ -69,6 +77,7 @@ opentelemetry-api==1.24.0 # opentelemetry-instrumentation-sqlite3 # opentelemetry-instrumentation-starlette # opentelemetry-instrumentation-system-metrics + # opentelemetry-instrumentation-threading # opentelemetry-instrumentation-tornado # opentelemetry-instrumentation-tortoiseorm # opentelemetry-instrumentation-urllib @@ -76,16 +85,17 @@ opentelemetry-api==1.24.0 # opentelemetry-instrumentation-wsgi # opentelemetry-propagator-aws-xray # opentelemetry-sdk + # opentelemetry-semantic-conventions # opentelemetry-test-utils -opentelemetry-distro==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-exporter-otlp-proto-common==1.24.0 +opentelemetry-distro==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-exporter-otlp-proto-common==1.25.0 # via opentelemetry-exporter-otlp-proto-http -opentelemetry-exporter-otlp-proto-http==1.24.0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation==0.45b0 +opentelemetry-exporter-otlp-proto-http==1.25.0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation==0.46b0 # via - # odigos-python-configurator (setup.py) + # odigos-opentelemetry-python (setup.py) # opentelemetry-distro # opentelemetry-instrumentation-aio-pika # opentelemetry-instrumentation-aiohttp-client @@ -127,41 +137,42 @@ opentelemetry-instrumentation==0.45b0 # opentelemetry-instrumentation-sqlite3 # opentelemetry-instrumentation-starlette # opentelemetry-instrumentation-system-metrics + # opentelemetry-instrumentation-threading # opentelemetry-instrumentation-tornado # opentelemetry-instrumentation-tortoiseorm # opentelemetry-instrumentation-urllib # opentelemetry-instrumentation-urllib3 # opentelemetry-instrumentation-wsgi -opentelemetry-instrumentation-aio-pika==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-aiohttp-client==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-aiopg==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-asgi==0.45b0 +opentelemetry-instrumentation-aio-pika==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-aiohttp-client==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-aiopg==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-asgi==0.46b0 # via - # odigos-python-configurator (setup.py) + # odigos-opentelemetry-python (setup.py) # opentelemetry-instrumentation-fastapi # opentelemetry-instrumentation-starlette -opentelemetry-instrumentation-asyncio==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-asyncpg==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-boto==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-boto3sqs==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-botocore==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-cassandra==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-celery==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-confluent-kafka==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-dbapi==0.45b0 +opentelemetry-instrumentation-asyncio==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-asyncpg==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-boto==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-boto3sqs==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-botocore==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-cassandra==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-celery==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-confluent-kafka==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-dbapi==0.46b0 # via - # odigos-python-configurator (setup.py) + # odigos-opentelemetry-python (setup.py) # opentelemetry-instrumentation-aiopg # opentelemetry-instrumentation-mysql # opentelemetry-instrumentation-mysqlclient @@ -169,89 +180,89 @@ opentelemetry-instrumentation-dbapi==0.45b0 # opentelemetry-instrumentation-psycopg2 # opentelemetry-instrumentation-pymysql # opentelemetry-instrumentation-sqlite3 -opentelemetry-instrumentation-django==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-elasticsearch==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-falcon==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-fastapi==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-flask==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-grpc==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-httpx==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-jinja2==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-kafka-python==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-logging==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-mysql==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-mysqlclient==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-pika==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-psycopg==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-psycopg2==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-pymemcache==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-pymongo==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-pymysql==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-pyramid==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-redis==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-remoulade==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-requests==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-sklearn==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-sqlalchemy==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-sqlite3==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-starlette==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-system-metrics==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-tornado==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-tortoiseorm==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-urllib==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-urllib3==0.45b0 - # via odigos-python-configurator (setup.py) -opentelemetry-instrumentation-wsgi==0.45b0 +opentelemetry-instrumentation-django==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-elasticsearch==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-falcon==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-fastapi==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-flask==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-grpc==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-httpx==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-jinja2==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-kafka-python==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-logging==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-mysql==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-mysqlclient==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-pika==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-psycopg==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-psycopg2==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-pymemcache==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-pymongo==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-pymysql==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-pyramid==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-redis==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-remoulade==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-requests==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-sklearn==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-sqlalchemy==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-sqlite3==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-starlette==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-system-metrics==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-threading==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-tornado==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-tortoiseorm==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-urllib==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-urllib3==0.46b0 + # via odigos-opentelemetry-python (setup.py) +opentelemetry-instrumentation-wsgi==0.46b0 # via - # odigos-python-configurator (setup.py) + # odigos-opentelemetry-python (setup.py) # opentelemetry-instrumentation-django # opentelemetry-instrumentation-falcon # opentelemetry-instrumentation-flask # opentelemetry-instrumentation-pyramid opentelemetry-propagator-aws-xray==1.0.1 # via opentelemetry-instrumentation-botocore -opentelemetry-proto==1.24.0 +opentelemetry-proto==1.25.0 # via # opentelemetry-exporter-otlp-proto-common # opentelemetry-exporter-otlp-proto-http -opentelemetry-sdk==1.24.0 +opentelemetry-sdk==1.25.0 # via # opentelemetry-distro # opentelemetry-exporter-otlp-proto-http - # opentelemetry-instrumentation-grpc - # opentelemetry-instrumentation-system-metrics # opentelemetry-test-utils -opentelemetry-semantic-conventions==0.45b0 +opentelemetry-semantic-conventions==0.46b0 # via # opentelemetry-instrumentation-aiohttp-client # opentelemetry-instrumentation-asgi @@ -285,9 +296,9 @@ opentelemetry-semantic-conventions==0.45b0 # opentelemetry-instrumentation-urllib3 # opentelemetry-instrumentation-wsgi # opentelemetry-sdk -opentelemetry-test-utils==0.45b0 +opentelemetry-test-utils==0.46b0 # via opentelemetry-instrumentation-asyncio -opentelemetry-util-http==0.45b0 +opentelemetry-util-http==0.46b0 # via # opentelemetry-instrumentation-aiohttp-client # opentelemetry-instrumentation-asgi @@ -312,20 +323,21 @@ packaging==24.1 protobuf==4.23.4 # via # googleapis-common-protos - # odigos-python-configurator (setup.py) # opentelemetry-proto psutil==5.9.8 # via opentelemetry-instrumentation-system-metrics -requests==2.31.0 - # via - # odigos-python-configurator (setup.py) - # opentelemetry-exporter-otlp-proto-http +requests==2.32.3 + # via opentelemetry-exporter-otlp-proto-http typing-extensions==4.7.1 # via opentelemetry-sdk -urllib3==2.0.3 +urllib3==2.2.2 # via requests +urllib3-odigos==2.2.2 + # via + # odigos-opentelemetry-python (setup.py) + # odigos-requests uuid7==0.1.0 - # via odigos-python-configurator (setup.py) + # via odigos-opentelemetry-python (setup.py) wrapt==1.16.0 # via # deprecated @@ -346,6 +358,7 @@ wrapt==1.16.0 # opentelemetry-instrumentation-pyramid # opentelemetry-instrumentation-redis # opentelemetry-instrumentation-sqlalchemy + # opentelemetry-instrumentation-threading # opentelemetry-instrumentation-urllib3 zipp==3.19.2 # via importlib-metadata diff --git a/setup.py b/setup.py index 7ce51a1..8a76dc2 100644 --- a/setup.py +++ b/setup.py @@ -8,57 +8,58 @@ author_email="tamir@odigos.io", packages=find_packages(include=["initializer", "initializer.*", "opamp", "opamp.*"]), install_requires=[ - "requests~=2.7", - 'protobuf>=3.19, <5.0', "uuid7 == 0.1.0", - 'opentelemetry-distro==0.45b0', - 'opentelemetry-exporter-otlp-proto-http==1.24.0', - 'opentelemetry-instrumentation==0.45b0', - 'opentelemetry-instrumentation-aio-pika==0.45b0', - 'opentelemetry-instrumentation-aiohttp-client==0.45b0', - 'opentelemetry-instrumentation-aiopg==0.45b0', - 'opentelemetry-instrumentation-asgi==0.45b0', - 'opentelemetry-instrumentation-asyncio==0.45b0', - 'opentelemetry-instrumentation-asyncpg==0.45b0', - 'opentelemetry-instrumentation-boto==0.45b0', - 'opentelemetry-instrumentation-boto3sqs==0.45b0', - 'opentelemetry-instrumentation-botocore==0.45b0', - 'opentelemetry-instrumentation-cassandra==0.45b0', - 'opentelemetry-instrumentation-celery==0.45b0', - 'opentelemetry-instrumentation-confluent-kafka==0.45b0', - 'opentelemetry-instrumentation-dbapi==0.45b0', - 'opentelemetry-instrumentation-django==0.45b0', - 'opentelemetry-instrumentation-elasticsearch==0.45b0', - 'opentelemetry-instrumentation-falcon==0.45b0', - 'opentelemetry-instrumentation-fastapi==0.45b0', - 'opentelemetry-instrumentation-flask==0.45b0', - 'opentelemetry-instrumentation-grpc==0.45b0', - 'opentelemetry-instrumentation-httpx==0.45b0', - 'opentelemetry-instrumentation-jinja2==0.45b0', - 'opentelemetry-instrumentation-kafka-python==0.45b0', - 'opentelemetry-instrumentation-logging==0.45b0', - 'opentelemetry-instrumentation-mysql==0.45b0', - 'opentelemetry-instrumentation-mysqlclient==0.45b0', - 'opentelemetry-instrumentation-pika==0.45b0', - 'opentelemetry-instrumentation-psycopg==0.45b0', - 'opentelemetry-instrumentation-psycopg2==0.45b0', - 'opentelemetry-instrumentation-pymemcache==0.45b0', - 'opentelemetry-instrumentation-pymongo==0.45b0', - 'opentelemetry-instrumentation-pymysql==0.45b0', - 'opentelemetry-instrumentation-pyramid==0.45b0', - 'opentelemetry-instrumentation-redis==0.45b0', - 'opentelemetry-instrumentation-remoulade==0.45b0', - 'opentelemetry-instrumentation-requests==0.45b0', - 'opentelemetry-instrumentation-sklearn==0.45b0', - 'opentelemetry-instrumentation-sqlalchemy==0.45b0', - 'opentelemetry-instrumentation-sqlite3==0.45b0', - 'opentelemetry-instrumentation-starlette==0.45b0', - 'opentelemetry-instrumentation-system-metrics==0.45b0', - 'opentelemetry-instrumentation-tornado==0.45b0', - 'opentelemetry-instrumentation-tortoiseorm==0.45b0', - 'opentelemetry-instrumentation-urllib==0.45b0', - 'opentelemetry-instrumentation-urllib3==0.45b0', - 'opentelemetry-instrumentation-wsgi==0.45b0', + "urllib3-odigos == 2.2.2", + "odigos-requests == 2.32.3.dev0", + 'opentelemetry-distro==0.46b0', + 'opentelemetry-exporter-otlp-proto-http==1.25.0', + 'opentelemetry-instrumentation==0.46b0', + 'opentelemetry-instrumentation-aio-pika==0.46b0', + 'opentelemetry-instrumentation-aiohttp-client==0.46b0', + 'opentelemetry-instrumentation-aiopg==0.46b0', + 'opentelemetry-instrumentation-asgi==0.46b0', + 'opentelemetry-instrumentation-asyncio==0.46b0', + 'opentelemetry-instrumentation-asyncpg==0.46b0', + 'opentelemetry-instrumentation-boto==0.46b0', + 'opentelemetry-instrumentation-boto3sqs==0.46b0', + 'opentelemetry-instrumentation-botocore==0.46b0', + 'opentelemetry-instrumentation-cassandra==0.46b0', + 'opentelemetry-instrumentation-celery==0.46b0', + 'opentelemetry-instrumentation-confluent-kafka==0.46b0', + 'opentelemetry-instrumentation-dbapi==0.46b0', + 'opentelemetry-instrumentation-django==0.46b0', + 'opentelemetry-instrumentation-elasticsearch==0.46b0', + 'opentelemetry-instrumentation-falcon==0.46b0', + 'opentelemetry-instrumentation-fastapi==0.46b0', + 'opentelemetry-instrumentation-flask==0.46b0', + 'opentelemetry-instrumentation-grpc==0.46b0', + 'opentelemetry-instrumentation-httpx==0.46b0', + 'opentelemetry-instrumentation-jinja2==0.46b0', + 'opentelemetry-instrumentation-kafka-python==0.46b0', + 'opentelemetry-instrumentation-logging==0.46b0', + 'opentelemetry-instrumentation-mysql==0.46b0', + 'opentelemetry-instrumentation-mysqlclient==0.46b0', + 'opentelemetry-instrumentation-pika==0.46b0', + 'opentelemetry-instrumentation-psycopg==0.46b0', + 'opentelemetry-instrumentation-psycopg2==0.46b0', + 'opentelemetry-instrumentation-pymemcache==0.46b0', + 'opentelemetry-instrumentation-pymongo==0.46b0', + 'opentelemetry-instrumentation-pymysql==0.46b0', + 'opentelemetry-instrumentation-pyramid==0.46b0', + 'opentelemetry-instrumentation-redis==0.46b0', + 'opentelemetry-instrumentation-remoulade==0.46b0', + 'opentelemetry-instrumentation-requests==0.46b0', + 'opentelemetry-instrumentation-sklearn==0.46b0', + 'opentelemetry-instrumentation-sqlalchemy==0.46b0', + 'opentelemetry-instrumentation-sqlite3==0.46b0', + 'opentelemetry-instrumentation-starlette==0.46b0', + 'opentelemetry-instrumentation-system-metrics==0.46b0', + 'opentelemetry-instrumentation-tornado==0.46b0', + 'opentelemetry-instrumentation-tortoiseorm==0.46b0', + 'opentelemetry-instrumentation-threading==0.46b0', + 'opentelemetry-instrumentation-urllib==0.46b0', + 'opentelemetry-instrumentation-urllib3==0.46b0', + 'opentelemetry-instrumentation-wsgi==0.46b0', ], python_requires=">=3.8", ) \ No newline at end of file