nvidia-nat-opentelemetry 1.4.0a20251010__py3-none-any.whl → 1.4.0a20251206__py3-none-any.whl
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.
- nat/plugins/opentelemetry/__init__.py +2 -0
- nat/plugins/opentelemetry/mixin/otlp_span_exporter_mixin.py +22 -5
- nat/plugins/opentelemetry/otlp_span_adapter_exporter.py +6 -1
- nat/plugins/opentelemetry/otlp_span_redaction_adapter_exporter.py +6 -1
- nat/plugins/opentelemetry/register.py +57 -11
- {nvidia_nat_opentelemetry-1.4.0a20251010.dist-info → nvidia_nat_opentelemetry-1.4.0a20251206.dist-info}/METADATA +4 -4
- nvidia_nat_opentelemetry-1.4.0a20251206.dist-info/RECORD +17 -0
- nvidia_nat_opentelemetry-1.4.0a20251010.dist-info/RECORD +0 -17
- {nvidia_nat_opentelemetry-1.4.0a20251010.dist-info → nvidia_nat_opentelemetry-1.4.0a20251206.dist-info}/WHEEL +0 -0
- {nvidia_nat_opentelemetry-1.4.0a20251010.dist-info → nvidia_nat_opentelemetry-1.4.0a20251206.dist-info}/entry_points.txt +0 -0
- {nvidia_nat_opentelemetry-1.4.0a20251010.dist-info → nvidia_nat_opentelemetry-1.4.0a20251206.dist-info}/licenses/LICENSE-3rd-party.txt +0 -0
- {nvidia_nat_opentelemetry-1.4.0a20251010.dist-info → nvidia_nat_opentelemetry-1.4.0a20251206.dist-info}/licenses/LICENSE.md +0 -0
- {nvidia_nat_opentelemetry-1.4.0a20251010.dist-info → nvidia_nat_opentelemetry-1.4.0a20251206.dist-info}/top_level.txt +0 -0
|
@@ -13,11 +13,13 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
+
from nat.plugins.opentelemetry.mixin.otlp_span_exporter_mixin import OTLPProtocol
|
|
16
17
|
from nat.plugins.opentelemetry.otel_span_exporter import OtelSpanExporter
|
|
17
18
|
from nat.plugins.opentelemetry.otlp_span_adapter_exporter import OTLPSpanAdapterExporter
|
|
18
19
|
from nat.plugins.opentelemetry.otlp_span_redaction_adapter_exporter import OTLPSpanHeaderRedactionAdapterExporter
|
|
19
20
|
|
|
20
21
|
__all__ = [
|
|
22
|
+
"OTLPProtocol",
|
|
21
23
|
"OTLPSpanHeaderRedactionAdapterExporter",
|
|
22
24
|
"OTLPSpanAdapterExporter",
|
|
23
25
|
"OtelSpanExporter",
|
|
@@ -14,21 +14,25 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
16
|
import logging
|
|
17
|
+
from typing import Literal
|
|
17
18
|
|
|
18
19
|
from nat.plugins.opentelemetry.otel_span import OtelSpan
|
|
19
|
-
from opentelemetry.exporter.otlp.proto.
|
|
20
|
+
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter as OTLPSpanExporterGRPC
|
|
21
|
+
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter as OTLPSpanExporterHTTP
|
|
20
22
|
|
|
21
23
|
logger = logging.getLogger(__name__)
|
|
22
24
|
|
|
25
|
+
OTLPProtocol = Literal['http', 'grpc']
|
|
26
|
+
|
|
23
27
|
|
|
24
28
|
class OTLPSpanExporterMixin:
|
|
25
29
|
"""Mixin for OTLP span exporters.
|
|
26
30
|
|
|
27
31
|
This mixin provides OTLP-specific functionality for OpenTelemetry span exporters.
|
|
28
|
-
It handles OTLP protocol transmission using the standard OpenTelemetry OTLP
|
|
32
|
+
It handles OTLP protocol transmission using the standard OpenTelemetry OTLP exporters.
|
|
29
33
|
|
|
30
34
|
Key Features:
|
|
31
|
-
- Standard OTLP HTTP protocol support for span export
|
|
35
|
+
- Standard OTLP HTTP and gRPC protocol support for span export
|
|
32
36
|
- Configurable endpoint and headers for authentication/routing
|
|
33
37
|
- Integration with OpenTelemetry's OTLPSpanExporter for reliable transmission
|
|
34
38
|
- Works with any OTLP-compatible collector or service
|
|
@@ -42,16 +46,29 @@ class OTLPSpanExporterMixin:
|
|
|
42
46
|
super().__init__(endpoint=endpoint, headers=headers, **kwargs)
|
|
43
47
|
"""
|
|
44
48
|
|
|
45
|
-
def __init__(self,
|
|
49
|
+
def __init__(self,
|
|
50
|
+
*args,
|
|
51
|
+
endpoint: str,
|
|
52
|
+
headers: dict[str, str] | None = None,
|
|
53
|
+
protocol: OTLPProtocol = 'http',
|
|
54
|
+
**kwargs):
|
|
46
55
|
"""Initialize the OTLP span exporter.
|
|
47
56
|
|
|
48
57
|
Args:
|
|
49
58
|
endpoint: OTLP service endpoint URL.
|
|
50
59
|
headers: HTTP headers for authentication and metadata.
|
|
60
|
+
protocol: Transport protocol to use ('http' or 'grpc'). Defaults to 'http'.
|
|
51
61
|
"""
|
|
52
62
|
# Initialize exporter before super().__init__() to ensure it's available
|
|
53
63
|
# if parent class initialization potentially calls export_otel_spans()
|
|
54
|
-
|
|
64
|
+
|
|
65
|
+
if protocol == 'http':
|
|
66
|
+
self._exporter = OTLPSpanExporterHTTP(endpoint=endpoint, headers=headers)
|
|
67
|
+
elif protocol == 'grpc':
|
|
68
|
+
self._exporter = OTLPSpanExporterGRPC(endpoint=endpoint, headers=headers)
|
|
69
|
+
else:
|
|
70
|
+
raise ValueError(f"Invalid protocol: {protocol}")
|
|
71
|
+
|
|
55
72
|
super().__init__(*args, **kwargs)
|
|
56
73
|
|
|
57
74
|
async def export_otel_spans(self, spans: list[OtelSpan]) -> None:
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import logging
|
|
17
17
|
|
|
18
18
|
from nat.builder.context import ContextState
|
|
19
|
+
from nat.plugins.opentelemetry.mixin.otlp_span_exporter_mixin import OTLPProtocol
|
|
19
20
|
from nat.plugins.opentelemetry.mixin.otlp_span_exporter_mixin import OTLPSpanExporterMixin
|
|
20
21
|
from nat.plugins.opentelemetry.otel_span_exporter import OtelSpanExporter
|
|
21
22
|
|
|
@@ -32,7 +33,7 @@ class OTLPSpanAdapterExporter(OTLPSpanExporterMixin, OtelSpanExporter):
|
|
|
32
33
|
Key Features:
|
|
33
34
|
- Complete span processing pipeline (IntermediateStep → Span → OtelSpan → Export)
|
|
34
35
|
- Batching support for efficient transmission
|
|
35
|
-
- OTLP HTTP protocol for maximum compatibility
|
|
36
|
+
- OTLP HTTP and gRPC protocol for maximum compatibility
|
|
36
37
|
- Configurable authentication via headers
|
|
37
38
|
- Resource attribute management
|
|
38
39
|
- Error handling and retry logic
|
|
@@ -48,6 +49,7 @@ class OTLPSpanAdapterExporter(OTLPSpanExporterMixin, OtelSpanExporter):
|
|
|
48
49
|
exporter = OTLPSpanAdapterExporter(
|
|
49
50
|
endpoint="https://api.service.com/v1/traces",
|
|
50
51
|
headers={"Authorization": "Bearer your-token"},
|
|
52
|
+
protocol='http',
|
|
51
53
|
batch_size=50,
|
|
52
54
|
flush_interval=10.0
|
|
53
55
|
)
|
|
@@ -67,6 +69,7 @@ class OTLPSpanAdapterExporter(OTLPSpanExporterMixin, OtelSpanExporter):
|
|
|
67
69
|
# OTLPSpanExporterMixin args
|
|
68
70
|
endpoint: str,
|
|
69
71
|
headers: dict[str, str] | None = None,
|
|
72
|
+
protocol: OTLPProtocol = 'http',
|
|
70
73
|
**otlp_kwargs):
|
|
71
74
|
"""Initialize the OTLP span exporter.
|
|
72
75
|
|
|
@@ -80,6 +83,7 @@ class OTLPSpanAdapterExporter(OTLPSpanExporterMixin, OtelSpanExporter):
|
|
|
80
83
|
resource_attributes: Additional resource attributes for spans.
|
|
81
84
|
endpoint: The endpoint for the OTLP service.
|
|
82
85
|
headers: The headers for the OTLP service.
|
|
86
|
+
protocol: The protocol to use for the OTLP service, default is 'http'.
|
|
83
87
|
otlp_kwargs: Additional keyword arguments for the OTLP service.
|
|
84
88
|
"""
|
|
85
89
|
super().__init__(context_state=context_state,
|
|
@@ -91,4 +95,5 @@ class OTLPSpanAdapterExporter(OTLPSpanExporterMixin, OtelSpanExporter):
|
|
|
91
95
|
resource_attributes=resource_attributes,
|
|
92
96
|
endpoint=endpoint,
|
|
93
97
|
headers=headers,
|
|
98
|
+
protocol=protocol,
|
|
94
99
|
**otlp_kwargs)
|
|
@@ -22,6 +22,7 @@ from typing import Any
|
|
|
22
22
|
from nat.builder.context import ContextState
|
|
23
23
|
from nat.observability.processor.redaction import SpanHeaderRedactionProcessor
|
|
24
24
|
from nat.observability.processor.span_tagging_processor import SpanTaggingProcessor
|
|
25
|
+
from nat.plugins.opentelemetry.mixin.otlp_span_exporter_mixin import OTLPProtocol
|
|
25
26
|
from nat.plugins.opentelemetry.otlp_span_adapter_exporter import OTLPSpanAdapterExporter
|
|
26
27
|
|
|
27
28
|
logger = logging.getLogger(__name__)
|
|
@@ -39,7 +40,7 @@ class OTLPSpanHeaderRedactionAdapterExporter(OTLPSpanAdapterExporter):
|
|
|
39
40
|
- Privacy level tagging for compliance and governance
|
|
40
41
|
- Complete span processing pipeline (IntermediateStep → Span → Redaction → Tagging → OtelSpan → Batching → Export)
|
|
41
42
|
- Batching support for efficient transmission
|
|
42
|
-
- OTLP HTTP protocol for maximum compatibility
|
|
43
|
+
- OTLP HTTP and gRPC protocol for maximum compatibility
|
|
43
44
|
- Configurable authentication via headers
|
|
44
45
|
- Resource attribute management
|
|
45
46
|
- Error handling and retry logic
|
|
@@ -63,6 +64,7 @@ class OTLPSpanHeaderRedactionAdapterExporter(OTLPSpanAdapterExporter):
|
|
|
63
64
|
exporter = OTLPSpanRedactionAdapterExporter(
|
|
64
65
|
endpoint="https://api.service.com/v1/traces",
|
|
65
66
|
headers={"Authorization": "Bearer your-token"},
|
|
67
|
+
protocol='http',
|
|
66
68
|
redaction_attributes=["user.email", "request.body"],
|
|
67
69
|
redaction_headers=["x-user-id"],
|
|
68
70
|
redaction_callback=should_redact,
|
|
@@ -96,6 +98,7 @@ class OTLPSpanHeaderRedactionAdapterExporter(OTLPSpanAdapterExporter):
|
|
|
96
98
|
# OTLPSpanExporterMixin args
|
|
97
99
|
endpoint: str,
|
|
98
100
|
headers: dict[str, str] | None = None,
|
|
101
|
+
protocol: OTLPProtocol = 'http',
|
|
99
102
|
**otlp_kwargs):
|
|
100
103
|
"""Initialize the OTLP span exporter with redaction and tagging capabilities.
|
|
101
104
|
|
|
@@ -117,6 +120,7 @@ class OTLPSpanHeaderRedactionAdapterExporter(OTLPSpanAdapterExporter):
|
|
|
117
120
|
redaction_tag: Tag to add to spans when redaction occurs.
|
|
118
121
|
endpoint: The endpoint for the OTLP service.
|
|
119
122
|
headers: The headers for the OTLP service.
|
|
123
|
+
protocol: The protocol to use for the OTLP service, default is 'http'.
|
|
120
124
|
otlp_kwargs: Additional keyword arguments for the OTLP service.
|
|
121
125
|
"""
|
|
122
126
|
super().__init__(context_state=context_state,
|
|
@@ -128,6 +132,7 @@ class OTLPSpanHeaderRedactionAdapterExporter(OTLPSpanAdapterExporter):
|
|
|
128
132
|
resource_attributes=resource_attributes,
|
|
129
133
|
endpoint=endpoint,
|
|
130
134
|
headers=headers,
|
|
135
|
+
protocol=protocol,
|
|
131
136
|
**otlp_kwargs)
|
|
132
137
|
|
|
133
138
|
# Insert redaction and tagging processors to the front of the processing pipeline
|
|
@@ -20,6 +20,9 @@ from pydantic import Field
|
|
|
20
20
|
|
|
21
21
|
from nat.builder.builder import Builder
|
|
22
22
|
from nat.cli.register_workflow import register_telemetry_exporter
|
|
23
|
+
from nat.data_models.common import OptionalSecretStr
|
|
24
|
+
from nat.data_models.common import SerializableSecretStr
|
|
25
|
+
from nat.data_models.common import get_secret_value
|
|
23
26
|
from nat.data_models.telemetry_exporter import TelemetryExporterBaseConfig
|
|
24
27
|
from nat.observability.mixin.batch_config_mixin import BatchConfigMixin
|
|
25
28
|
from nat.observability.mixin.collector_config_mixin import CollectorConfigMixin
|
|
@@ -31,8 +34,8 @@ class LangfuseTelemetryExporter(BatchConfigMixin, TelemetryExporterBaseConfig, n
|
|
|
31
34
|
"""A telemetry exporter to transmit traces to externally hosted langfuse service."""
|
|
32
35
|
|
|
33
36
|
endpoint: str = Field(description="The langfuse OTEL endpoint (/api/public/otel/v1/traces)")
|
|
34
|
-
public_key:
|
|
35
|
-
secret_key:
|
|
37
|
+
public_key: SerializableSecretStr = Field(description="The Langfuse public key", default="")
|
|
38
|
+
secret_key: SerializableSecretStr = Field(description="The Langfuse secret key", default="")
|
|
36
39
|
resource_attributes: dict[str, str] = Field(default_factory=dict,
|
|
37
40
|
description="The resource attributes to add to the span")
|
|
38
41
|
|
|
@@ -44,8 +47,8 @@ async def langfuse_telemetry_exporter(config: LangfuseTelemetryExporter, builder
|
|
|
44
47
|
|
|
45
48
|
from nat.plugins.opentelemetry import OTLPSpanAdapterExporter
|
|
46
49
|
|
|
47
|
-
secret_key = config.secret_key
|
|
48
|
-
public_key = config.public_key
|
|
50
|
+
secret_key = get_secret_value(config.secret_key) if config.secret_key else os.environ.get("LANGFUSE_SECRET_KEY")
|
|
51
|
+
public_key = get_secret_value(config.public_key) if config.public_key else os.environ.get("LANGFUSE_PUBLIC_KEY")
|
|
49
52
|
if not secret_key or not public_key:
|
|
50
53
|
raise ValueError("secret and public keys are required for langfuse")
|
|
51
54
|
|
|
@@ -69,7 +72,7 @@ class LangsmithTelemetryExporter(BatchConfigMixin, CollectorConfigMixin, Telemet
|
|
|
69
72
|
description="The langsmith OTEL endpoint",
|
|
70
73
|
default="https://api.smith.langchain.com/otel/v1/traces",
|
|
71
74
|
)
|
|
72
|
-
api_key:
|
|
75
|
+
api_key: SerializableSecretStr = Field(description="The Langsmith API key", default="")
|
|
73
76
|
resource_attributes: dict[str, str] = Field(default_factory=dict,
|
|
74
77
|
description="The resource attributes to add to the span")
|
|
75
78
|
|
|
@@ -80,7 +83,7 @@ async def langsmith_telemetry_exporter(config: LangsmithTelemetryExporter, build
|
|
|
80
83
|
|
|
81
84
|
from nat.plugins.opentelemetry import OTLPSpanAdapterExporter
|
|
82
85
|
|
|
83
|
-
api_key = config.api_key
|
|
86
|
+
api_key = get_secret_value(config.api_key) if config.api_key else os.environ.get("LANGSMITH_API_KEY")
|
|
84
87
|
if not api_key:
|
|
85
88
|
raise ValueError("API key is required for langsmith")
|
|
86
89
|
|
|
@@ -134,7 +137,7 @@ async def otel_telemetry_exporter(config: OtelCollectorTelemetryExporter, builde
|
|
|
134
137
|
class PatronusTelemetryExporter(BatchConfigMixin, CollectorConfigMixin, TelemetryExporterBaseConfig, name="patronus"):
|
|
135
138
|
"""A telemetry exporter to transmit traces to Patronus service."""
|
|
136
139
|
|
|
137
|
-
api_key:
|
|
140
|
+
api_key: SerializableSecretStr = Field(description="The Patronus API key", default="")
|
|
138
141
|
resource_attributes: dict[str, str] = Field(default_factory=dict,
|
|
139
142
|
description="The resource attributes to add to the span")
|
|
140
143
|
|
|
@@ -145,7 +148,7 @@ async def patronus_telemetry_exporter(config: PatronusTelemetryExporter, builder
|
|
|
145
148
|
|
|
146
149
|
from nat.plugins.opentelemetry import OTLPSpanAdapterExporter
|
|
147
150
|
|
|
148
|
-
api_key = config.api_key
|
|
151
|
+
api_key = get_secret_value(config.api_key) if config.api_key else os.environ.get("PATRONUS_API_KEY")
|
|
149
152
|
if not api_key:
|
|
150
153
|
raise ValueError("API key is required for Patronus")
|
|
151
154
|
|
|
@@ -159,7 +162,8 @@ async def patronus_telemetry_exporter(config: PatronusTelemetryExporter, builder
|
|
|
159
162
|
flush_interval=config.flush_interval,
|
|
160
163
|
max_queue_size=config.max_queue_size,
|
|
161
164
|
drop_on_overflow=config.drop_on_overflow,
|
|
162
|
-
shutdown_timeout=config.shutdown_timeout
|
|
165
|
+
shutdown_timeout=config.shutdown_timeout,
|
|
166
|
+
protocol="grpc")
|
|
163
167
|
|
|
164
168
|
|
|
165
169
|
class GalileoTelemetryExporter(BatchConfigMixin, CollectorConfigMixin, TelemetryExporterBaseConfig, name="galileo"):
|
|
@@ -168,7 +172,7 @@ class GalileoTelemetryExporter(BatchConfigMixin, CollectorConfigMixin, Telemetry
|
|
|
168
172
|
endpoint: str = Field(description="The galileo endpoint to export telemetry traces.",
|
|
169
173
|
default="https://app.galileo.ai/api/galileo/otel/traces")
|
|
170
174
|
logstream: str = Field(description="The logstream name to group the telemetry traces.")
|
|
171
|
-
api_key:
|
|
175
|
+
api_key: SerializableSecretStr = Field(description="The api key to authenticate with the galileo service.")
|
|
172
176
|
|
|
173
177
|
|
|
174
178
|
@register_telemetry_exporter(config_type=GalileoTelemetryExporter)
|
|
@@ -178,7 +182,7 @@ async def galileo_telemetry_exporter(config: GalileoTelemetryExporter, builder:
|
|
|
178
182
|
from nat.plugins.opentelemetry import OTLPSpanAdapterExporter
|
|
179
183
|
|
|
180
184
|
headers = {
|
|
181
|
-
"Galileo-API-Key": config.api_key,
|
|
185
|
+
"Galileo-API-Key": get_secret_value(config.api_key),
|
|
182
186
|
"logstream": config.logstream,
|
|
183
187
|
"project": config.project,
|
|
184
188
|
}
|
|
@@ -192,3 +196,45 @@ async def galileo_telemetry_exporter(config: GalileoTelemetryExporter, builder:
|
|
|
192
196
|
drop_on_overflow=config.drop_on_overflow,
|
|
193
197
|
shutdown_timeout=config.shutdown_timeout,
|
|
194
198
|
)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
class DBNLTelemetryExporter(BatchConfigMixin, TelemetryExporterBaseConfig, name="dbnl"):
|
|
202
|
+
"""A telemetry exporter to transmit traces to DBNL."""
|
|
203
|
+
|
|
204
|
+
api_url: str | None = Field(description="The DBNL API URL.", default=None)
|
|
205
|
+
api_token: OptionalSecretStr = Field(description="The DBNL API token.", default=None)
|
|
206
|
+
project_id: str | None = Field(description="The DBNL project id.", default=None)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
@register_telemetry_exporter(config_type=DBNLTelemetryExporter)
|
|
210
|
+
async def dbnl_telemetry_exporter(config: DBNLTelemetryExporter, builder: Builder):
|
|
211
|
+
"""Create a DBNL telemetry exporter."""
|
|
212
|
+
|
|
213
|
+
from nat.plugins.opentelemetry import OTLPSpanAdapterExporter
|
|
214
|
+
|
|
215
|
+
api_token = get_secret_value(config.api_token) if config.api_token else os.environ.get("DBNL_API_TOKEN")
|
|
216
|
+
if not api_token:
|
|
217
|
+
raise ValueError("API token is required for DBNL")
|
|
218
|
+
project_id = config.project_id or os.environ.get("DBNL_PROJECT_ID")
|
|
219
|
+
if not project_id:
|
|
220
|
+
raise ValueError("Project id is required for DBNL")
|
|
221
|
+
|
|
222
|
+
headers = {
|
|
223
|
+
"Authorization": f"Bearer {api_token}",
|
|
224
|
+
"x-dbnl-project-id": project_id,
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
api_url = config.api_url or os.environ.get("DBNL_API_URL")
|
|
228
|
+
if not api_url:
|
|
229
|
+
raise ValueError("API url is required for DBNL")
|
|
230
|
+
endpoint = api_url.rstrip("/") + "/otel/v1/traces"
|
|
231
|
+
|
|
232
|
+
yield OTLPSpanAdapterExporter(
|
|
233
|
+
endpoint=endpoint,
|
|
234
|
+
headers=headers,
|
|
235
|
+
batch_size=config.batch_size,
|
|
236
|
+
flush_interval=config.flush_interval,
|
|
237
|
+
max_queue_size=config.max_queue_size,
|
|
238
|
+
drop_on_overflow=config.drop_on_overflow,
|
|
239
|
+
shutdown_timeout=config.shutdown_timeout,
|
|
240
|
+
)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nvidia-nat-opentelemetry
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.0a20251206
|
|
4
4
|
Summary: Subpackage for OpenTelemetry integration in NeMo Agent toolkit
|
|
5
5
|
Author: NVIDIA Corporation
|
|
6
6
|
Maintainer: NVIDIA Corporation
|
|
7
|
-
License
|
|
7
|
+
License: Apache-2.0
|
|
8
8
|
Project-URL: documentation, https://docs.nvidia.com/nemo/agent-toolkit/latest/
|
|
9
9
|
Project-URL: source, https://github.com/NVIDIA/NeMo-Agent-Toolkit
|
|
10
10
|
Keywords: ai,observability,opentelemetry
|
|
@@ -14,9 +14,9 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
15
15
|
Requires-Python: <3.14,>=3.11
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
|
-
License-File: LICENSE.md
|
|
18
17
|
License-File: LICENSE-3rd-party.txt
|
|
19
|
-
|
|
18
|
+
License-File: LICENSE.md
|
|
19
|
+
Requires-Dist: nvidia-nat==v1.4.0a20251206
|
|
20
20
|
Requires-Dist: opentelemetry-api~=1.2
|
|
21
21
|
Requires-Dist: opentelemetry-exporter-otlp~=1.3
|
|
22
22
|
Requires-Dist: opentelemetry-sdk~=1.3
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
nat/meta/pypi.md,sha256=_o1o1BLPY1pvjCkklWxlm7LlIDMPCk-2Rho85NUuN8U,1109
|
|
2
|
+
nat/plugins/opentelemetry/__init__.py,sha256=6RYrwlYGss4SzyAwjcbgFTLKaLk9jEIHTGEAF8XiC5E,1181
|
|
3
|
+
nat/plugins/opentelemetry/otel_span.py,sha256=MC_ROZ8gSTu0gxRaaz77UDbn1ouZTZP3N_-0PcN140U,16564
|
|
4
|
+
nat/plugins/opentelemetry/otel_span_exporter.py,sha256=YO7JsQgi8Cf2OQBJ_s78HwJjrWx9SdqMvPen3Pa2_bI,6533
|
|
5
|
+
nat/plugins/opentelemetry/otlp_span_adapter_exporter.py,sha256=cWBfPKHET7U1oRMs1QMXvg-z1c1DaqYrLzHIyUUbfGM,4237
|
|
6
|
+
nat/plugins/opentelemetry/otlp_span_redaction_adapter_exporter.py,sha256=YnoQlktT6EJRM7o8bhvYQcdGrAdOXNEk8wOimK_Wy88,7509
|
|
7
|
+
nat/plugins/opentelemetry/register.py,sha256=EZpGOYQ5FVXfwDUea8TfFqWgZnhGP9NFFb1oGFajk5I,11186
|
|
8
|
+
nat/plugins/opentelemetry/span_converter.py,sha256=Gz3KvRNQeEBBlpaPO8YRAJkw4fmzV7m9bT6dGX0IV2E,8846
|
|
9
|
+
nat/plugins/opentelemetry/mixin/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
|
|
10
|
+
nat/plugins/opentelemetry/mixin/otlp_span_exporter_mixin.py,sha256=BN8fRHHEHEWZyrYoudl9lSeH--I2RY2dJVPyWIgDB0I,3454
|
|
11
|
+
nvidia_nat_opentelemetry-1.4.0a20251206.dist-info/licenses/LICENSE-3rd-party.txt,sha256=fOk5jMmCX9YoKWyYzTtfgl-SUy477audFC5hNY4oP7Q,284609
|
|
12
|
+
nvidia_nat_opentelemetry-1.4.0a20251206.dist-info/licenses/LICENSE.md,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
13
|
+
nvidia_nat_opentelemetry-1.4.0a20251206.dist-info/METADATA,sha256=dUafjNuyZdjnYKLdFsGNFHA1BBI1vyCL-FtAyFnhkVo,2039
|
|
14
|
+
nvidia_nat_opentelemetry-1.4.0a20251206.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
15
|
+
nvidia_nat_opentelemetry-1.4.0a20251206.dist-info/entry_points.txt,sha256=gmEKhCafyibUJLGxbn8luTK0UTgIvV2vAtr4uZ8M85I,72
|
|
16
|
+
nvidia_nat_opentelemetry-1.4.0a20251206.dist-info/top_level.txt,sha256=8-CJ2cP6-f0ZReXe5Hzqp-5pvzzHz-5Ds5H2bGqh1-U,4
|
|
17
|
+
nvidia_nat_opentelemetry-1.4.0a20251206.dist-info/RECORD,,
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
nat/meta/pypi.md,sha256=_o1o1BLPY1pvjCkklWxlm7LlIDMPCk-2Rho85NUuN8U,1109
|
|
2
|
-
nat/plugins/opentelemetry/__init__.py,sha256=j-YKuxwSIzGziyDyunw8s_W7WiFiqKLdFjw-utwHPFk,1079
|
|
3
|
-
nat/plugins/opentelemetry/otel_span.py,sha256=MC_ROZ8gSTu0gxRaaz77UDbn1ouZTZP3N_-0PcN140U,16564
|
|
4
|
-
nat/plugins/opentelemetry/otel_span_exporter.py,sha256=YO7JsQgi8Cf2OQBJ_s78HwJjrWx9SdqMvPen3Pa2_bI,6533
|
|
5
|
-
nat/plugins/opentelemetry/otlp_span_adapter_exporter.py,sha256=6xQHkKDhQk3-kObqj6kRv8ZlJtIV2Qqox6YkY0PCOYs,3945
|
|
6
|
-
nat/plugins/opentelemetry/otlp_span_redaction_adapter_exporter.py,sha256=qRrUIxYRlCDaAkEGlFTaEkCJCsb68GBo11EGEiE6S8E,7217
|
|
7
|
-
nat/plugins/opentelemetry/register.py,sha256=KnhV-axY0kJzZ3RReG4e_mTFR1dMr7d3a6ysYiCLTUI,9063
|
|
8
|
-
nat/plugins/opentelemetry/span_converter.py,sha256=Gz3KvRNQeEBBlpaPO8YRAJkw4fmzV7m9bT6dGX0IV2E,8846
|
|
9
|
-
nat/plugins/opentelemetry/mixin/__init__.py,sha256=Xs1JQ16L9btwreh4pdGKwskffAw1YFO48jKrU4ib_7c,685
|
|
10
|
-
nat/plugins/opentelemetry/mixin/otlp_span_exporter_mixin.py,sha256=3vK6DkTJXp6ZFH3AgNYUuuMOzjyskh_nVUWK-qMYKzM,2809
|
|
11
|
-
nvidia_nat_opentelemetry-1.4.0a20251010.dist-info/licenses/LICENSE-3rd-party.txt,sha256=fOk5jMmCX9YoKWyYzTtfgl-SUy477audFC5hNY4oP7Q,284609
|
|
12
|
-
nvidia_nat_opentelemetry-1.4.0a20251010.dist-info/licenses/LICENSE.md,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
13
|
-
nvidia_nat_opentelemetry-1.4.0a20251010.dist-info/METADATA,sha256=Vtm8fsJe3kfgnFZsVRii0RB6GQZYkMSHrznui2xw4Z4,2050
|
|
14
|
-
nvidia_nat_opentelemetry-1.4.0a20251010.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
15
|
-
nvidia_nat_opentelemetry-1.4.0a20251010.dist-info/entry_points.txt,sha256=gmEKhCafyibUJLGxbn8luTK0UTgIvV2vAtr4uZ8M85I,72
|
|
16
|
-
nvidia_nat_opentelemetry-1.4.0a20251010.dist-info/top_level.txt,sha256=8-CJ2cP6-f0ZReXe5Hzqp-5pvzzHz-5Ds5H2bGqh1-U,4
|
|
17
|
-
nvidia_nat_opentelemetry-1.4.0a20251010.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|