odigos-opentelemetry-python 1.0.87__tar.gz → 1.0.89__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {odigos_opentelemetry_python-1.0.87/odigos_opentelemetry_python.egg-info → odigos_opentelemetry_python-1.0.89}/PKG-INFO +2 -2
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/components.py +12 -1
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/lib_handling.py +42 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/odigos_sampler.py +13 -4
- odigos_opentelemetry_python-1.0.89/initializer/version.py +1 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89/odigos_opentelemetry_python.egg-info}/PKG-INFO +2 -2
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/odigos_opentelemetry_python.egg-info/requires.txt +1 -1
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/pyproject.toml +3 -2
- odigos_opentelemetry_python-1.0.87/initializer/version.py +0 -1
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/LICENSE +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/README.md +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/__init__.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/distro/__init__.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/distro/distro.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/distro/instrumentation_registry.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/envs.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/exit_hook.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/odigos_sampler_helpers.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/post_instrument.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/process_resource.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/schemas/__init__.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/schemas/sampling.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/odigos_opentelemetry_python.egg-info/SOURCES.txt +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/odigos_opentelemetry_python.egg-info/dependency_links.txt +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/odigos_opentelemetry_python.egg-info/entry_points.txt +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/odigos_opentelemetry_python.egg-info/top_level.txt +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/__init__.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/anyvalue_pb2.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/config.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/health_status.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/http_client.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/opamp_pb2.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/opamp_registry.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/transport.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/utils.py +0 -0
- {odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: odigos-opentelemetry-python
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.89
|
|
4
4
|
Summary: Odigos Initializer for Python OpenTelemetry Components
|
|
5
5
|
Author-email: odigos-io <support@odigos.io>
|
|
6
6
|
Requires-Python: >=3.9
|
|
@@ -36,7 +36,7 @@ Requires-Dist: opentelemetry-instrumentation-botocore==0.61b0
|
|
|
36
36
|
Requires-Dist: opentelemetry-instrumentation-cassandra==0.61b0
|
|
37
37
|
Requires-Dist: opentelemetry-instrumentation-celery==0.61b0
|
|
38
38
|
Requires-Dist: opentelemetry-instrumentation-click==0.61b0
|
|
39
|
-
Requires-Dist: opentelemetry-instrumentation-confluent-kafka==0.61b0
|
|
39
|
+
Requires-Dist: odigos-opentelemetry-instrumentation-confluent-kafka==0.61b0
|
|
40
40
|
Requires-Dist: opentelemetry-instrumentation-dbapi==0.61b0
|
|
41
41
|
Requires-Dist: opentelemetry-instrumentation-django==0.61b0
|
|
42
42
|
Requires-Dist: odigos-opentelemetry-instrumentation-elasticsearch==0.61b0
|
{odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/components.py
RENAMED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
from typing import Union
|
|
2
|
-
from .lib_handling import
|
|
2
|
+
from .lib_handling import (
|
|
3
|
+
reorder_python_path,
|
|
4
|
+
reload_distro_modules,
|
|
5
|
+
handle_django_instrumentation,
|
|
6
|
+
handle_eventlet_instrumentation,
|
|
7
|
+
patch_otlp_span_flags,
|
|
8
|
+
)
|
|
3
9
|
|
|
4
10
|
handle_eventlet_instrumentation()
|
|
5
11
|
|
|
@@ -38,6 +44,11 @@ from opentelemetry.trace import set_tracer_provider, get_tracer_provider
|
|
|
38
44
|
# before reshuffling) and before opamp below (it imports protobuf—the app should own that).
|
|
39
45
|
reorder_python_path()
|
|
40
46
|
|
|
47
|
+
# Backport OTLP Span.flags trace-flags encoding
|
|
48
|
+
# (upstream PR #4761: https://github.com/open-telemetry/opentelemetry-python/pull/4761)
|
|
49
|
+
# onto the canonical exporter module now that sys.path prefers the agent's copy.
|
|
50
|
+
patch_otlp_span_flags()
|
|
51
|
+
|
|
41
52
|
from .version import VERSION
|
|
42
53
|
from .exit_hook import ExitHooks
|
|
43
54
|
from .envs import set_static_otel_env
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
import sys
|
|
2
4
|
import importlib
|
|
3
5
|
import os
|
|
6
|
+
from typing import TYPE_CHECKING, Optional, Sequence
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from opentelemetry.proto.trace.v1.trace_pb2 import Span as PB2Span
|
|
10
|
+
from opentelemetry.sdk.trace import ReadableSpan
|
|
11
|
+
from opentelemetry.trace import Link
|
|
4
12
|
|
|
5
13
|
|
|
6
14
|
def reorder_python_path():
|
|
@@ -71,6 +79,40 @@ def handle_django_instrumentation():
|
|
|
71
79
|
os.environ.setdefault("OTEL_PYTHON_DJANGO_INSTRUMENT", 'False')
|
|
72
80
|
|
|
73
81
|
|
|
82
|
+
def patch_otlp_span_flags() -> None:
|
|
83
|
+
# Backport of https://github.com/open-telemetry/opentelemetry-python/pull/4761:
|
|
84
|
+
# include W3C TraceFlags (lower 8 bits, e.g. the sampled bit) in the OTLP Span.flags / Link.flags alongside the existing is-remote bits (8-9).
|
|
85
|
+
# We wrap the encode helpers instead of replacing _span_flags because the PR also changed that function's signature and both of its call sites.
|
|
86
|
+
try:
|
|
87
|
+
from opentelemetry.exporter.otlp.proto.common._internal import trace_encoder
|
|
88
|
+
except ImportError:
|
|
89
|
+
return
|
|
90
|
+
|
|
91
|
+
original_encode_span = trace_encoder._encode_span
|
|
92
|
+
original_encode_links = trace_encoder._encode_links
|
|
93
|
+
|
|
94
|
+
# W3C TraceFlags is a single byte (values 0-255), and the encoder's existing
|
|
95
|
+
# flags only ever set the higher has-remote / is-remote bits.
|
|
96
|
+
def encode_span(sdk_span: ReadableSpan) -> PB2Span:
|
|
97
|
+
encoded_span = original_encode_span(sdk_span)
|
|
98
|
+
# THE FIX: fold the W3C trace flags into Span.flags (PR #4761).
|
|
99
|
+
encoded_span.flags |= int(sdk_span.get_span_context().trace_flags)
|
|
100
|
+
return encoded_span
|
|
101
|
+
|
|
102
|
+
def encode_links(links: Sequence[Link]) -> Optional[Sequence[PB2Span.Link]]:
|
|
103
|
+
encoded_links = original_encode_links(links)
|
|
104
|
+
if encoded_links:
|
|
105
|
+
# Propagate the trace flags to links as well
|
|
106
|
+
for link, encoded_link in zip(links, encoded_links):
|
|
107
|
+
# THE FIX: fold the W3C trace flags into Link.flags (PR #4761).
|
|
108
|
+
encoded_link.flags |= int(link.context.trace_flags)
|
|
109
|
+
return encoded_links
|
|
110
|
+
|
|
111
|
+
setattr(trace_encoder, "_encode_span", encode_span)
|
|
112
|
+
setattr(trace_encoder, "_encode_links", encode_links)
|
|
113
|
+
setattr(trace_encoder, "_odigos_trace_flags_patched", True)
|
|
114
|
+
|
|
115
|
+
|
|
74
116
|
def handle_eventlet_instrumentation():
|
|
75
117
|
"""Checks if eventlet is importable and applies eventlet.monkey_patch if available."""
|
|
76
118
|
# Apply monkey_patch early to enable Eventlet's green threads for non-blocking I/O.
|
|
@@ -98,10 +98,10 @@ class OdigosSampler(Sampler):
|
|
|
98
98
|
matched = True
|
|
99
99
|
else: # When we have a granular operation, check it vs the server/client rules specified in the noisy operation
|
|
100
100
|
matched = False
|
|
101
|
-
if http_server_sample := http_operation_sample.get("httpServer"):
|
|
101
|
+
if (http_server_sample := http_operation_sample.get("httpServer")) and kind == SpanKind.SERVER:
|
|
102
102
|
matched = self._match_http_server_sample_rule(http_server_sample, attributes) or matched
|
|
103
103
|
|
|
104
|
-
if http_client_sample := http_operation_sample.get("httpClient"):
|
|
104
|
+
if (http_client_sample := http_operation_sample.get("httpClient")) and kind == SpanKind.CLIENT:
|
|
105
105
|
matched = self._match_http_client_sample_rule(http_client_sample, attributes) or matched
|
|
106
106
|
|
|
107
107
|
# sampler_logger.debug(f'Noisy operation matched: {matched}, percentage: {percentage_to_sample}')
|
|
@@ -156,8 +156,10 @@ class OdigosSampler(Sampler):
|
|
|
156
156
|
if target:
|
|
157
157
|
return self._match_rule_route_to_span(http_server_rule["route"], target)
|
|
158
158
|
|
|
159
|
-
if http_server_rule.get("routePrefix")
|
|
160
|
-
|
|
159
|
+
if route_prefix := http_server_rule.get("routePrefix"):
|
|
160
|
+
candidate = span_route or target
|
|
161
|
+
if not candidate or not self._match_rule_route_to_span(route_prefix, candidate, route_has_prefix=True):
|
|
162
|
+
return False
|
|
161
163
|
if http_server_rule.get("method") and http_server_rule["method"] != span_method:
|
|
162
164
|
return False
|
|
163
165
|
|
|
@@ -175,6 +177,13 @@ class OdigosSampler(Sampler):
|
|
|
175
177
|
server_address = get_attribute(span_attributes, server_attributes_semconv.SERVER_ADDRESS, "net.peer.name", "http.host")
|
|
176
178
|
if server_address:
|
|
177
179
|
server_address = strip_port(server_address)
|
|
180
|
+
else:
|
|
181
|
+
# some instrumentations (like urllib) never puts a host attribute on the span. it sets only method + url,
|
|
182
|
+
# so if we want the host we need to extract it from the full url
|
|
183
|
+
# default (old) semconv mode the full URL is http.url; in stable mode url.full.
|
|
184
|
+
full_url = get_attribute(span_attributes, "url.full", "http.url")
|
|
185
|
+
if full_url:
|
|
186
|
+
server_address = urlsplit(full_url).hostname
|
|
178
187
|
|
|
179
188
|
# Old semconv for url is a target that we need to get the client_path from → new semconv: "url.template"/"url.path"
|
|
180
189
|
client_path = get_attribute(span_attributes, "url.template", url_attributes_semconv.URL_PATH)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = "1.0.89"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: odigos-opentelemetry-python
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.89
|
|
4
4
|
Summary: Odigos Initializer for Python OpenTelemetry Components
|
|
5
5
|
Author-email: odigos-io <support@odigos.io>
|
|
6
6
|
Requires-Python: >=3.9
|
|
@@ -36,7 +36,7 @@ Requires-Dist: opentelemetry-instrumentation-botocore==0.61b0
|
|
|
36
36
|
Requires-Dist: opentelemetry-instrumentation-cassandra==0.61b0
|
|
37
37
|
Requires-Dist: opentelemetry-instrumentation-celery==0.61b0
|
|
38
38
|
Requires-Dist: opentelemetry-instrumentation-click==0.61b0
|
|
39
|
-
Requires-Dist: opentelemetry-instrumentation-confluent-kafka==0.61b0
|
|
39
|
+
Requires-Dist: odigos-opentelemetry-instrumentation-confluent-kafka==0.61b0
|
|
40
40
|
Requires-Dist: opentelemetry-instrumentation-dbapi==0.61b0
|
|
41
41
|
Requires-Dist: opentelemetry-instrumentation-django==0.61b0
|
|
42
42
|
Requires-Dist: odigos-opentelemetry-instrumentation-elasticsearch==0.61b0
|
|
@@ -29,7 +29,7 @@ opentelemetry-instrumentation-botocore==0.61b0
|
|
|
29
29
|
opentelemetry-instrumentation-cassandra==0.61b0
|
|
30
30
|
opentelemetry-instrumentation-celery==0.61b0
|
|
31
31
|
opentelemetry-instrumentation-click==0.61b0
|
|
32
|
-
opentelemetry-instrumentation-confluent-kafka==0.61b0
|
|
32
|
+
odigos-opentelemetry-instrumentation-confluent-kafka==0.61b0
|
|
33
33
|
opentelemetry-instrumentation-dbapi==0.61b0
|
|
34
34
|
opentelemetry-instrumentation-django==0.61b0
|
|
35
35
|
odigos-opentelemetry-instrumentation-elasticsearch==0.61b0
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "odigos-opentelemetry-python"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.89"
|
|
8
8
|
description = "Odigos Initializer for Python OpenTelemetry Components"
|
|
9
9
|
requires-python = ">=3.9"
|
|
10
10
|
authors = [
|
|
@@ -42,7 +42,7 @@ dependencies = [
|
|
|
42
42
|
"opentelemetry-instrumentation-cassandra == 0.61b0",
|
|
43
43
|
"opentelemetry-instrumentation-celery == 0.61b0",
|
|
44
44
|
"opentelemetry-instrumentation-click == 0.61b0",
|
|
45
|
-
"opentelemetry-instrumentation-confluent-kafka == 0.61b0",
|
|
45
|
+
"odigos-opentelemetry-instrumentation-confluent-kafka == 0.61b0",
|
|
46
46
|
"opentelemetry-instrumentation-dbapi == 0.61b0",
|
|
47
47
|
"opentelemetry-instrumentation-django == 0.61b0",
|
|
48
48
|
"odigos-opentelemetry-instrumentation-elasticsearch == 0.61b0",
|
|
@@ -108,6 +108,7 @@ odigos = "initializer.distro.distro:OdigosDistro"
|
|
|
108
108
|
[tool.uv.sources]
|
|
109
109
|
odigos-opentelemetry-instrumentation-aiohttp-server = { workspace = true }
|
|
110
110
|
odigos-opentelemetry-instrumentation-elasticsearch = { workspace = true }
|
|
111
|
+
odigos-opentelemetry-instrumentation-confluent-kafka = { workspace = true }
|
|
111
112
|
odigos-opentelemetry-instrumentation-openai-v2 = { workspace = true }
|
|
112
113
|
odigos-opentelemetry-instrumentation-sqlalchemy = { workspace = true }
|
|
113
114
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
VERSION = "1.0.87"
|
|
File without changes
|
|
File without changes
|
{odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/envs.py
RENAMED
|
File without changes
|
{odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/initializer/exit_hook.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/anyvalue_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
{odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/health_status.py
RENAMED
|
File without changes
|
{odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/http_client.py
RENAMED
|
File without changes
|
{odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/opamp_pb2.py
RENAMED
|
File without changes
|
{odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/opamp_registry.py
RENAMED
|
File without changes
|
{odigos_opentelemetry_python-1.0.87 → odigos_opentelemetry_python-1.0.89}/opamp/transport.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|