From c1cdb0cc93d11d7dfc26a8478065104148ce1b69 Mon Sep 17 00:00:00 2001 From: Tamir David Date: Sun, 25 Aug 2024 15:09:54 +0300 Subject: [PATCH 1/3] feat: support enterprise usecase --- initializer/components.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/initializer/components.py b/initializer/components.py index 8a19f07..c42bf92 100644 --- a/initializer/components.py +++ b/initializer/components.py @@ -86,6 +86,7 @@ def initialize_traces_if_enabled(trace_exporters, resource, span_processor = Non # Exporting using EBPF else: + set_tracer_provider(provider) if span_processor is not None: provider.add_span_processor(span_processor) @@ -93,12 +94,12 @@ def initialize_traces_if_enabled(trace_exporters, resource, span_processor = Non def initialize_metrics_if_enabled(metric_exporters, resource): metrics_enabled = os.getenv(sdk_config.OTEL_METRICS_EXPORTER, "none").strip().lower() - if metrics_enabled != "none": + if metrics_enabled != "none" and metric_exporters: sdk_config._init_metrics(metric_exporters, resource) def initialize_logging_if_enabled(log_exporters, resource): logging_enabled = os.getenv(sdk_config.OTEL_LOGS_EXPORTER, "none").strip().lower() - if logging_enabled != "none": + if logging_enabled != "none" and log_exporters: sdk_config._init_logging(log_exporters, resource) From a9521bb7e15d880c20d5929fcf85a1252152ea73 Mon Sep 17 00:00:00 2001 From: Tamir David Date: Mon, 26 Aug 2024 15:08:06 +0300 Subject: [PATCH 2/3] fix: init tracer provider without resource attribute if ebpf --- initializer/components.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/initializer/components.py b/initializer/components.py index c42bf92..675a061 100644 --- a/initializer/components.py +++ b/initializer/components.py @@ -63,15 +63,14 @@ def initialize_components(trace_exporters = None, metric_exporters = None, log_e def initialize_traces_if_enabled(trace_exporters, resource, span_processor = None): traces_enabled = os.getenv(sdk_config.OTEL_TRACES_EXPORTER, "none").strip().lower() if traces_enabled != "none": - - provider = TracerProvider(resource=resource) - + # TODO: uncomment once the OdigosSampler is implemented # odigos_sampler = OdigosSampler() # sampler = ParentBased(odigos_sampler) # Exporting using exporters if trace_exporters is not None: + provider = TracerProvider(resource=resource) id_generator_name = sdk_config._get_id_generator() id_generator = sdk_config._import_id_generator(id_generator_name) provider.id_generator = id_generator @@ -86,6 +85,7 @@ def initialize_traces_if_enabled(trace_exporters, resource, span_processor = Non # Exporting using EBPF else: + provider = TracerProvider() set_tracer_provider(provider) if span_processor is not None: provider.add_span_processor(span_processor) From 23c515d4b7e92d94c9baf95120e2b56d0e20d8b4 Mon Sep 17 00:00:00 2001 From: Tamir David Date: Mon, 2 Sep 2024 09:07:57 +0300 Subject: [PATCH 3/3] feat: bump otel dependencies + move reordering path to happen before any configurator import --- initializer/components.py | 9 +- initializer/lib_handling.py | 13 +- opamp/http_client.py | 14 +-- requirements.txt | 245 +++++++++++++++++++----------------- setup.py | 101 +++++++-------- 5 files changed, 202 insertions(+), 180 deletions(-) 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