lmnr 0.6.20__py3-none-any.whl → 0.6.21__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.
- lmnr/opentelemetry_lib/decorators/__init__.py +188 -138
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/__init__.py +674 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/config.py +13 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/event_emitter.py +211 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/event_models.py +41 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/span_utils.py +256 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/streaming.py +295 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/utils.py +179 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/version.py +1 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/__init__.py +485 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/config.py +8 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/event_emitter.py +143 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/event_models.py +41 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/span_utils.py +229 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/utils.py +92 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/version.py +1 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/utils.py +3 -3
- lmnr/opentelemetry_lib/tracing/__init__.py +1 -1
- lmnr/opentelemetry_lib/tracing/_instrument_initializers.py +12 -7
- lmnr/opentelemetry_lib/tracing/processor.py +1 -1
- lmnr/opentelemetry_lib/utils/package_check.py +9 -0
- lmnr/sdk/browser/browser_use_otel.py +4 -2
- lmnr/sdk/browser/patchright_otel.py +0 -26
- lmnr/sdk/browser/playwright_otel.py +51 -78
- lmnr/sdk/browser/pw_utils.py +359 -114
- lmnr/sdk/decorators.py +39 -4
- lmnr/sdk/evaluations.py +23 -9
- lmnr/sdk/laminar.py +75 -48
- lmnr/version.py +1 -1
- {lmnr-0.6.20.dist-info → lmnr-0.6.21.dist-info}/METADATA +8 -7
- {lmnr-0.6.20.dist-info → lmnr-0.6.21.dist-info}/RECORD +33 -18
- {lmnr-0.6.20.dist-info → lmnr-0.6.21.dist-info}/WHEEL +1 -1
- {lmnr-0.6.20.dist-info → lmnr-0.6.21.dist-info}/entry_points.txt +0 -0
lmnr/sdk/evaluations.py
CHANGED
@@ -57,7 +57,7 @@ def get_average_scores(results: list[EvaluationResultDatapoint]) -> dict[str, Nu
|
|
57
57
|
average_scores = {}
|
58
58
|
for key, values in per_score_values.items():
|
59
59
|
scores = [v for v in values if v is not None]
|
60
|
-
|
60
|
+
|
61
61
|
# If there are no scores, we don't want to include the key in the average scores
|
62
62
|
if len(scores) > 0:
|
63
63
|
average_scores[key] = sum(scores) / len(scores)
|
@@ -108,6 +108,7 @@ class Evaluation:
|
|
108
108
|
concurrency_limit: int = DEFAULT_BATCH_SIZE,
|
109
109
|
project_api_key: str | None = None,
|
110
110
|
base_url: str | None = None,
|
111
|
+
base_http_url: str | None = None,
|
111
112
|
http_port: int | None = None,
|
112
113
|
grpc_port: int | None = None,
|
113
114
|
instruments: set[Instruments] | None = None,
|
@@ -157,6 +158,10 @@ class Evaluation:
|
|
157
158
|
Useful if self-hosted. Do NOT include the port, use `http_port`\
|
158
159
|
and `grpc_port` instead.
|
159
160
|
Defaults to "https://api.lmnr.ai".
|
161
|
+
base_http_url (str | None, optional): The base HTTP URL for Laminar API.\
|
162
|
+
Only set this if your Laminar backend HTTP is proxied\
|
163
|
+
through a different host. If not specified, defaults\
|
164
|
+
to https://api.lmnr.ai.
|
160
165
|
http_port (int | None, optional): The port for Laminar API\
|
161
166
|
HTTP service. Defaults to 443 if not specified.
|
162
167
|
grpc_port (int | None, optional): The port for Laminar API\
|
@@ -199,7 +204,7 @@ class Evaluation:
|
|
199
204
|
self.batch_size = concurrency_limit
|
200
205
|
self._logger = get_default_logger(self.__class__.__name__)
|
201
206
|
self.upload_tasks = []
|
202
|
-
self.base_http_url = f"{base_url}:{http_port or 443}"
|
207
|
+
self.base_http_url = f"{base_http_url or base_url}:{http_port or 443}"
|
203
208
|
|
204
209
|
api_key = project_api_key or from_env("LMNR_PROJECT_API_KEY")
|
205
210
|
if not api_key and not L.is_initialized():
|
@@ -224,6 +229,7 @@ class Evaluation:
|
|
224
229
|
L.initialize(
|
225
230
|
project_api_key=project_api_key,
|
226
231
|
base_url=base_url,
|
232
|
+
base_http_url=self.base_http_url,
|
227
233
|
http_port=http_port,
|
228
234
|
grpc_port=grpc_port,
|
229
235
|
instruments=instruments,
|
@@ -352,22 +358,24 @@ class Evaluation:
|
|
352
358
|
if isinstance(evaluator, HumanEvaluator):
|
353
359
|
# Create an empty span for human evaluators
|
354
360
|
with L.start_as_current_span(
|
355
|
-
evaluator_name,
|
356
|
-
input={"output": output, "target": target}
|
361
|
+
evaluator_name, input={"output": output, "target": target}
|
357
362
|
) as human_evaluator_span:
|
358
|
-
human_evaluator_span.set_attribute(
|
363
|
+
human_evaluator_span.set_attribute(
|
364
|
+
SPAN_TYPE, SpanType.HUMAN_EVALUATOR.value
|
365
|
+
)
|
359
366
|
# Human evaluators don't execute automatically, just create the span
|
360
367
|
L.set_span_output(None)
|
361
|
-
|
368
|
+
|
362
369
|
# We don't want to save the score for human evaluators
|
363
370
|
scores[evaluator_name] = None
|
364
371
|
else:
|
365
372
|
# Regular evaluator function
|
366
373
|
with L.start_as_current_span(
|
367
|
-
evaluator_name,
|
368
|
-
input={"output": output, "target": target}
|
374
|
+
evaluator_name, input={"output": output, "target": target}
|
369
375
|
) as evaluator_span:
|
370
|
-
evaluator_span.set_attribute(
|
376
|
+
evaluator_span.set_attribute(
|
377
|
+
SPAN_TYPE, SpanType.EVALUATOR.value
|
378
|
+
)
|
371
379
|
if is_async(evaluator):
|
372
380
|
value = await evaluator(output, target)
|
373
381
|
else:
|
@@ -416,6 +424,7 @@ def evaluate(
|
|
416
424
|
concurrency_limit: int = DEFAULT_BATCH_SIZE,
|
417
425
|
project_api_key: str | None = None,
|
418
426
|
base_url: str | None = None,
|
427
|
+
base_http_url: str | None = None,
|
419
428
|
http_port: int | None = None,
|
420
429
|
grpc_port: int | None = None,
|
421
430
|
instruments: set[Instruments] | None = None,
|
@@ -465,6 +474,10 @@ def evaluate(
|
|
465
474
|
Useful if self-hosted elsewhere. Do NOT include the\
|
466
475
|
port, use `http_port` and `grpc_port` instead.
|
467
476
|
Defaults to "https://api.lmnr.ai".
|
477
|
+
base_http_url (str | None, optional): The base HTTP URL for Laminar API.\
|
478
|
+
Only set this if your Laminar backend HTTP is proxied\
|
479
|
+
through a different host. If not specified, defaults\
|
480
|
+
to https://api.lmnr.ai.
|
468
481
|
http_port (int | None, optional): The port for Laminar API's HTTP\
|
469
482
|
service. 443 is used if not specified.
|
470
483
|
Defaults to None.
|
@@ -488,6 +501,7 @@ def evaluate(
|
|
488
501
|
concurrency_limit=concurrency_limit,
|
489
502
|
project_api_key=project_api_key,
|
490
503
|
base_url=base_url,
|
504
|
+
base_http_url=base_http_url,
|
491
505
|
http_port=http_port,
|
492
506
|
grpc_port=grpc_port,
|
493
507
|
instruments=instruments,
|
lmnr/sdk/laminar.py
CHANGED
@@ -60,10 +60,15 @@ class Laminar:
|
|
60
60
|
cls,
|
61
61
|
project_api_key: str | None = None,
|
62
62
|
base_url: str | None = None,
|
63
|
+
base_http_url: str | None = None,
|
63
64
|
http_port: int | None = None,
|
64
65
|
grpc_port: int | None = None,
|
65
|
-
instruments:
|
66
|
-
|
66
|
+
instruments: (
|
67
|
+
list[Instruments] | set[Instruments] | tuple[Instruments] | None
|
68
|
+
) = None,
|
69
|
+
disabled_instruments: (
|
70
|
+
list[Instruments] | set[Instruments] | tuple[Instruments] | None
|
71
|
+
) = None,
|
67
72
|
disable_batch: bool = False,
|
68
73
|
max_export_batch_size: int | None = None,
|
69
74
|
export_timeout_seconds: int | None = None,
|
@@ -76,40 +81,45 @@ class Laminar:
|
|
76
81
|
|
77
82
|
Args:
|
78
83
|
project_api_key (str | None, optional): Laminar project api key.\
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
in os.environ or in .env file.
|
84
|
-
Defaults to None.
|
84
|
+
You can generate one by going to the projects settings page on\
|
85
|
+
the Laminar dashboard. If not specified, we will try to read\
|
86
|
+
from the LMNR_PROJECT_API_KEY environment variable in os.environ\
|
87
|
+
or in .env file. Defaults to None.
|
85
88
|
base_url (str | None, optional): Laminar API url. Do NOT include\
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
89
|
+
the port number, use `http_port` and `grpc_port`. If not\
|
90
|
+
specified, defaults to https://api.lmnr.ai.
|
91
|
+
base_http_url (str | None, optional): Laminar API http url. Only\
|
92
|
+
set this if your Laminar backend HTTP is proxied through a\
|
93
|
+
different host. If not specified, defaults to\
|
94
|
+
https://api.lmnr.ai.
|
95
|
+
http_port (int | None, optional): Laminar API http port. If not\
|
96
|
+
specified, defaults to 443.
|
97
|
+
grpc_port (int | None, optional): Laminar API grpc port. If not\
|
98
|
+
specified, defaults to 8443.
|
99
|
+
instruments (set[Instruments] | list[Instruments] | tuple[Instruments] | None, optional):
|
100
|
+
Instruments to enable. Defaults to all instruments. You can pass\
|
101
|
+
an empty set to disable all instruments. Read more:\
|
102
|
+
https://docs.lmnr.ai/tracing/automatic-instrumentation
|
103
|
+
disabled_instruments (set[Instruments] | list[Instruments] | tuple[Instruments] | None, optional):
|
104
|
+
Instruments to disable. Defaults to None.
|
98
105
|
disable_batch (bool, optional): If set to True, spans will be sent\
|
99
|
-
|
100
|
-
|
101
|
-
|
106
|
+
immediately to the backend. Useful for debugging, but may cause\
|
107
|
+
performance overhead in production. Defaults to False.
|
108
|
+
max_export_batch_size (int | None, optional): Maximum number of spans\
|
109
|
+
to export in a single batch. If not specified, defaults to 64\
|
110
|
+
(lower than the OpenTelemetry default of 512). If you see\
|
111
|
+
`DEADLINE_EXCEEDED` errors, try reducing this value.
|
102
112
|
export_timeout_seconds (int | None, optional): Timeout for the OTLP\
|
103
|
-
|
104
|
-
|
105
|
-
Defaults to None.
|
113
|
+
exporter. Defaults to 30 seconds (unlike the OpenTelemetry\
|
114
|
+
default of 10 seconds). Defaults to None.
|
106
115
|
set_global_tracer_provider (bool, optional): If set to True, the\
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
116
|
+
Laminar tracer provider will be set as the global tracer provider.\
|
117
|
+
OpenTelemetry allows only one tracer provider per app, so set this\
|
118
|
+
to False, if you are using another tracing library. Setting this to\
|
119
|
+
False may break some external instrumentations, e.g. LiteLLM.\
|
120
|
+
Defaults to True.
|
121
|
+
otel_logger_level (int, optional): OpenTelemetry logger level. Defaults\
|
122
|
+
to logging.ERROR.
|
113
123
|
|
114
124
|
Raises:
|
115
125
|
ValueError: If project API key is not set
|
@@ -132,10 +142,17 @@ class Laminar:
|
|
132
142
|
|
133
143
|
url = base_url or from_env("LMNR_BASE_URL") or "https://api.lmnr.ai"
|
134
144
|
url = url.rstrip("/")
|
135
|
-
if not url.startswith("http"):
|
145
|
+
if not url.startswith("http:") and not url.startswith("https:"):
|
136
146
|
url = f"https://{url}"
|
137
147
|
if match := re.search(r":(\d{1,5})$", url):
|
138
148
|
url = url[: -len(match.group(0))]
|
149
|
+
cls.__logger.info(f"Ignoring port in base URL: {match.group(1)}")
|
150
|
+
|
151
|
+
http_url = base_http_url or url
|
152
|
+
if not http_url.startswith("http:") and not http_url.startswith("https:"):
|
153
|
+
http_url = f"https://{http_url}"
|
154
|
+
if match := re.search(r":(\d{1,5})$", http_url):
|
155
|
+
http_url = http_url[: -len(match.group(0))]
|
139
156
|
if http_port is None:
|
140
157
|
cls.__logger.info(f"Using HTTP port from base URL: {match.group(1)}")
|
141
158
|
http_port = int(match.group(1))
|
@@ -143,7 +160,7 @@ class Laminar:
|
|
143
160
|
cls.__logger.info(f"Using HTTP port passed as an argument: {http_port}")
|
144
161
|
|
145
162
|
cls.__initialized = True
|
146
|
-
cls.__base_http_url = f"{
|
163
|
+
cls.__base_http_url = f"{http_url}:{http_port or 443}"
|
147
164
|
|
148
165
|
if not os.getenv("OTEL_ATTRIBUTE_COUNT_LIMIT"):
|
149
166
|
# each message is at least 2 attributes: role and content,
|
@@ -155,8 +172,10 @@ class Laminar:
|
|
155
172
|
http_port=http_port or 443,
|
156
173
|
port=grpc_port or 8443,
|
157
174
|
project_api_key=cls.__project_api_key,
|
158
|
-
instruments=instruments,
|
159
|
-
block_instruments=
|
175
|
+
instruments=set(instruments) if instruments else None,
|
176
|
+
block_instruments=(
|
177
|
+
set(disabled_instruments) if disabled_instruments else None
|
178
|
+
),
|
160
179
|
disable_batch=disable_batch,
|
161
180
|
max_export_batch_size=max_export_batch_size,
|
162
181
|
timeout_seconds=export_timeout_seconds,
|
@@ -202,6 +221,9 @@ class Laminar:
|
|
202
221
|
be epoch nanoseconds. If not specified, relies on the underlying\
|
203
222
|
OpenTelemetry implementation. Defaults to None.
|
204
223
|
"""
|
224
|
+
if not cls.is_initialized():
|
225
|
+
return
|
226
|
+
|
205
227
|
if timestamp and isinstance(timestamp, datetime.datetime):
|
206
228
|
timestamp = int(timestamp.timestamp() * 1e9)
|
207
229
|
|
@@ -577,7 +599,7 @@ class Laminar:
|
|
577
599
|
@classmethod
|
578
600
|
def set_span_attributes(
|
579
601
|
cls,
|
580
|
-
attributes: dict[Attributes, Any],
|
602
|
+
attributes: dict[Attributes | str, Any],
|
581
603
|
):
|
582
604
|
"""Set attributes for the current span. Useful for manual
|
583
605
|
instrumentation.
|
@@ -599,24 +621,19 @@ class Laminar:
|
|
599
621
|
```
|
600
622
|
|
601
623
|
Args:
|
602
|
-
attributes (dict[
|
624
|
+
attributes (dict[Attributes | str, Any]): attributes to set for the span
|
603
625
|
"""
|
604
626
|
span = trace.get_current_span()
|
605
627
|
if span == trace.INVALID_SPAN:
|
606
628
|
return
|
607
629
|
|
608
630
|
for key, value in attributes.items():
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
cls.__logger.warning(
|
614
|
-
f"Attribute {key} is not a valid Laminar attribute."
|
615
|
-
)
|
616
|
-
if not isinstance(value, (str, int, float, bool)):
|
617
|
-
span.set_attribute(key.value, json_dumps(value))
|
631
|
+
if isinstance(key, Attributes):
|
632
|
+
key = key.value
|
633
|
+
if not is_otel_attribute_value_type(value):
|
634
|
+
span.set_attribute(key, json_dumps(value))
|
618
635
|
else:
|
619
|
-
span.set_attribute(key
|
636
|
+
span.set_attribute(key, value)
|
620
637
|
|
621
638
|
@classmethod
|
622
639
|
def get_laminar_span_context(
|
@@ -706,6 +723,8 @@ class Laminar:
|
|
706
723
|
Args:
|
707
724
|
tags (list[str]): Tags to set for the span.
|
708
725
|
"""
|
726
|
+
if not cls.is_initialized():
|
727
|
+
return
|
709
728
|
span = trace.get_current_span()
|
710
729
|
if span == trace.INVALID_SPAN:
|
711
730
|
cls.__logger.warning("No active span to set tags on")
|
@@ -756,6 +775,8 @@ class Laminar:
|
|
756
775
|
Args:
|
757
776
|
session_id (str | None, optional): Custom session id. Defaults to None.
|
758
777
|
"""
|
778
|
+
if not cls.is_initialized():
|
779
|
+
return
|
759
780
|
span = trace.get_current_span()
|
760
781
|
if span == trace.INVALID_SPAN:
|
761
782
|
cls.__logger.warning("No active span to set session id on")
|
@@ -771,6 +792,8 @@ class Laminar:
|
|
771
792
|
Args:
|
772
793
|
user_id (str | None, optional): Custom user id. Defaults to None.
|
773
794
|
"""
|
795
|
+
if not cls.is_initialized():
|
796
|
+
return
|
774
797
|
span = trace.get_current_span()
|
775
798
|
if span == trace.INVALID_SPAN:
|
776
799
|
cls.__logger.warning("No active span to set user id on")
|
@@ -807,6 +830,8 @@ class Laminar:
|
|
807
830
|
Args:
|
808
831
|
metadata (dict[str, AttributeValue]): Metadata to set for the trace.
|
809
832
|
"""
|
833
|
+
if not cls.is_initialized():
|
834
|
+
return
|
810
835
|
span = trace.get_current_span()
|
811
836
|
if span == trace.INVALID_SPAN:
|
812
837
|
cls.__logger.warning("No active span to set metadata on")
|
@@ -858,6 +883,8 @@ class Laminar:
|
|
858
883
|
Args:
|
859
884
|
trace_type (TraceType): Type of the trace
|
860
885
|
"""
|
886
|
+
if not cls.is_initialized():
|
887
|
+
return
|
861
888
|
span = trace.get_current_span()
|
862
889
|
if span == trace.INVALID_SPAN:
|
863
890
|
cls.__logger.warning("No active span to set trace type on")
|
lmnr/version.py
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: lmnr
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.21
|
4
4
|
Summary: Python SDK for Laminar
|
5
5
|
Author: lmnr.ai
|
6
6
|
Author-email: lmnr.ai <founders@lmnr.ai>
|
7
7
|
License-Expression: Apache-2.0
|
8
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
8
14
|
Requires-Dist: pydantic>=2.0.3,<3.0.0
|
9
15
|
Requires-Dist: python-dotenv>=1.0
|
10
16
|
Requires-Dist: opentelemetry-api>=1.33.0
|
@@ -18,15 +24,14 @@ Requires-Dist: tenacity>=8.0
|
|
18
24
|
Requires-Dist: grpcio>=1
|
19
25
|
Requires-Dist: httpx>=0.25.0
|
20
26
|
Requires-Dist: opentelemetry-instrumentation-threading>=0.54b0
|
27
|
+
Requires-Dist: orjson>=3.10.18
|
21
28
|
Requires-Dist: opentelemetry-instrumentation-alephalpha>=0.40.12 ; extra == 'alephalpha'
|
22
29
|
Requires-Dist: opentelemetry-instrumentation-alephalpha>=0.40.12 ; extra == 'all'
|
23
|
-
Requires-Dist: opentelemetry-instrumentation-anthropic>=0.40.12 ; extra == 'all'
|
24
30
|
Requires-Dist: opentelemetry-instrumentation-bedrock>=0.40.12 ; extra == 'all'
|
25
31
|
Requires-Dist: opentelemetry-instrumentation-chromadb>=0.40.12 ; extra == 'all'
|
26
32
|
Requires-Dist: opentelemetry-instrumentation-cohere>=0.40.12 ; extra == 'all'
|
27
33
|
Requires-Dist: opentelemetry-instrumentation-crewai>=0.40.12 ; extra == 'all'
|
28
34
|
Requires-Dist: opentelemetry-instrumentation-google-generativeai<0.40.10 ; extra == 'all'
|
29
|
-
Requires-Dist: opentelemetry-instrumentation-groq>=0.40.12 ; extra == 'all'
|
30
35
|
Requires-Dist: opentelemetry-instrumentation-haystack>=0.40.12 ; extra == 'all'
|
31
36
|
Requires-Dist: opentelemetry-instrumentation-lancedb>=0.40.12 ; extra == 'all'
|
32
37
|
Requires-Dist: opentelemetry-instrumentation-langchain>=0.40.12 ; extra == 'all'
|
@@ -45,13 +50,11 @@ Requires-Dist: opentelemetry-instrumentation-transformers>=0.40.12 ; extra == 'a
|
|
45
50
|
Requires-Dist: opentelemetry-instrumentation-vertexai>=0.40.12 ; extra == 'all'
|
46
51
|
Requires-Dist: opentelemetry-instrumentation-watsonx>=0.40.12 ; extra == 'all'
|
47
52
|
Requires-Dist: opentelemetry-instrumentation-weaviate>=0.40.12 ; extra == 'all'
|
48
|
-
Requires-Dist: opentelemetry-instrumentation-anthropic>=0.40.12 ; extra == 'anthropic'
|
49
53
|
Requires-Dist: opentelemetry-instrumentation-bedrock>=0.40.12 ; extra == 'bedrock'
|
50
54
|
Requires-Dist: opentelemetry-instrumentation-chromadb>=0.40.12 ; extra == 'chromadb'
|
51
55
|
Requires-Dist: opentelemetry-instrumentation-cohere>=0.40.12 ; extra == 'cohere'
|
52
56
|
Requires-Dist: opentelemetry-instrumentation-crewai>=0.40.12 ; extra == 'crewai'
|
53
57
|
Requires-Dist: opentelemetry-instrumentation-google-generativeai<0.40.10 ; extra == 'google-generativeai'
|
54
|
-
Requires-Dist: opentelemetry-instrumentation-groq>=0.40.12 ; extra == 'groq'
|
55
58
|
Requires-Dist: opentelemetry-instrumentation-haystack>=0.40.12 ; extra == 'haystack'
|
56
59
|
Requires-Dist: opentelemetry-instrumentation-lancedb>=0.40.12 ; extra == 'lancedb'
|
57
60
|
Requires-Dist: opentelemetry-instrumentation-langchain>=0.40.12 ; extra == 'langchain'
|
@@ -73,13 +76,11 @@ Requires-Dist: opentelemetry-instrumentation-weaviate>=0.40.12 ; extra == 'weavi
|
|
73
76
|
Requires-Python: >=3.10, <4
|
74
77
|
Provides-Extra: alephalpha
|
75
78
|
Provides-Extra: all
|
76
|
-
Provides-Extra: anthropic
|
77
79
|
Provides-Extra: bedrock
|
78
80
|
Provides-Extra: chromadb
|
79
81
|
Provides-Extra: cohere
|
80
82
|
Provides-Extra: crewai
|
81
83
|
Provides-Extra: google-generativeai
|
82
|
-
Provides-Extra: groq
|
83
84
|
Provides-Extra: haystack
|
84
85
|
Provides-Extra: lancedb
|
85
86
|
Provides-Extra: langchain
|
@@ -2,13 +2,28 @@ lmnr/__init__.py,sha256=81183c3dbfb45d5cc2f979a22e51c8f41af9c80257c13eacacf1715c
|
|
2
2
|
lmnr/cli.py,sha256=b8780b51f37fe9e20db5495c41d3ad3837f6b48f408b09a58688d017850c0796,6047
|
3
3
|
lmnr/opentelemetry_lib/.flake8,sha256=6c2c6e0e51b1dd8439e501ca3e21899277076a787da868d0254ba37056b79405,150
|
4
4
|
lmnr/opentelemetry_lib/__init__.py,sha256=6962aca915d485586ed814b9e799ced898594ac2bc6d35329405705b26eab861,2160
|
5
|
-
lmnr/opentelemetry_lib/decorators/__init__.py,sha256=
|
5
|
+
lmnr/opentelemetry_lib/decorators/__init__.py,sha256=4846f7ae441a3995811c01c9d3cbb8e6e17d6511adf6e5cd295e02832faab4bb,9131
|
6
6
|
lmnr/opentelemetry_lib/litellm/__init__.py,sha256=c23a38e88b7919d866c4f09a880f2468ac9acf756cb910d1614082b2dbcad3e6,14858
|
7
7
|
lmnr/opentelemetry_lib/litellm/utils.py,sha256=da8cf0553f82dc7203109f117a4c7b4185e8baf34caad12d7823875515201a27,539
|
8
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/__init__.py,sha256=92cbf8c59d467b33c01d5fd1c8d5694186c688b2b2e52e6e737f0464a133ceb4,20546
|
9
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/config.py,sha256=972919b821b9b7e5dc7cd191ba7e78b30b6efa5d63514e8cb301996d6386392c,369
|
10
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/event_emitter.py,sha256=812b3ea1c5a04412113d4dd770717561861595f9eec5b94dd8174c6ddfb7572a,6831
|
11
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/event_models.py,sha256=3c27c21b1aeb02bc19a91fb8c05717ae1c10ab4b01300c664aba42e0f50cb5a3,876
|
12
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/span_utils.py,sha256=9d0bb3825a6b5c28ac3778d49b7e67dc829530b2ebe34ef3f0e273f51caebcea,9422
|
13
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/streaming.py,sha256=e999ad093275c5195b5d31dfea456726afd5f474cd779be7af892f54d7b416b8,10129
|
14
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/utils.py,sha256=0044f02da8b99322fdbf3f8f6663f04ff5d1295ddae92a635fd16eb685d5fbb6,5386
|
15
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/version.py,sha256=5aacde4ca55ef50ed07a239ad8a86889e0621b1cc72be19bd93be7c9e20910a9,23
|
8
16
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/__init__.py,sha256=8eb4abc2a96aa09ab9104d74ae508ea9ea6a6cbf60f8cd333b4c15c425db48e8,20166
|
9
17
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/config.py,sha256=db9cdebc9ee0dccb493ffe608eede3047efec20ed26c3924b72b2e50edbd92c2,245
|
10
18
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/schema_utils.py,sha256=857a6bc52f8bfd4da72786173615d31faaf3f9378f8f6150ffe8f6f9c4bb78f9,685
|
11
19
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/utils.py,sha256=f1248196246826d899304e510c4c2df74088d8169d28f1d0aed578a7a6c3cbfd,7669
|
20
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/__init__.py,sha256=0ac77d492cb7de9d15e70d93ef965f4702295fae49a0c85d1da0cf260ec8ae7e,14837
|
21
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/config.py,sha256=29d557d9dee56354e89634bdc3f4795f346ee67bbfec56184b4fb394e45a7e03,203
|
22
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/event_emitter.py,sha256=1f07d78bf360832951c708fcb3737718e50d39ce05beb8adbf57e818b4873703,4481
|
23
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/event_models.py,sha256=3c27c21b1aeb02bc19a91fb8c05717ae1c10ab4b01300c664aba42e0f50cb5a3,876
|
24
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/span_utils.py,sha256=7a1cd03539ff2c9e5114a26483dc50066cd5f1b7283e584431dd036949e1f31b,7461
|
25
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/utils.py,sha256=139f085a337ae321f68822bbbd2400bfc008c4d6a706ab319e522bef6b91e552,2360
|
26
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/version.py,sha256=5aacde4ca55ef50ed07a239ad8a86889e0621b1cc72be19bd93be7c9e20910a9,23
|
12
27
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/__init__.py,sha256=272bfd92865d180e3ea13681ec04c1ec3697eda34e63edd83862f8c17d1cecf3,3107
|
13
28
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/utils.py,sha256=9dff6c2595e79edb38818668aed1220efc188d8a982594c04f4ceeb6e3ff47a6,1512
|
14
29
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/__init__.py,sha256=8b91dc16af927eee75b969c0980c606680b347a87f8533bc0f4a092e5ec6e5c9,2071
|
@@ -20,7 +35,7 @@ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/embeddings_wr
|
|
20
35
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_emitter.py,sha256=9c96455b5ca2064dd3a9fb570d78b14ebbdf3d02f8e33255ee9e301c31336c9e,3043
|
21
36
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_models.py,sha256=3c27c21b1aeb02bc19a91fb8c05717ae1c10ab4b01300c664aba42e0f50cb5a3,876
|
22
37
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/image_gen_wrappers.py,sha256=9650a0e4ad2d3bfb2a072590da189bcf4f807aca070945af26a9f9b99d779b77,2021
|
23
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/utils.py,sha256=
|
38
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/utils.py,sha256=541e94d60c94b8a8035ee74cda00ca3576a3f50a215df03d948de58665dbc25b,4649
|
24
39
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v0/__init__.py,sha256=7f43421e052bd8f64d5d5b03170a3b7187c2ce038362fa15b5d1d0c43bc1a40d,6143
|
25
40
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/__init__.py,sha256=662afd935c52b42512280614bf502554389c8854ab1256efbfde03fe364dac64,12932
|
26
41
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py,sha256=8f36cb3eeeead7abdfa43bca3fdf73fdf2fba562bb1a746225696a2b2dde4f50,10111
|
@@ -29,24 +44,24 @@ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/responses_wrapper
|
|
29
44
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/version.py,sha256=4f39aaa913f3e49b0c174bc23028687d00bfaffc745bd3fe241e0ae6b442bed1,24
|
30
45
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/opentelemetry/__init__.py,sha256=1f86cdf738e2f68586b0a4569bb1e40edddd85c529f511ef49945ddb7b61fab5,2648
|
31
46
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/skyvern/__init__.py,sha256=764e4fe979fb08d7821419a3cc5c3ae89a6664b626ef928259f8f175c939eaea,6334
|
32
|
-
lmnr/opentelemetry_lib/tracing/__init__.py,sha256=
|
33
|
-
lmnr/opentelemetry_lib/tracing/_instrument_initializers.py,sha256=
|
47
|
+
lmnr/opentelemetry_lib/tracing/__init__.py,sha256=906aca320649cb59fb5ba05c6ddba914daae46d615da38dc399bd62b17262002,6007
|
48
|
+
lmnr/opentelemetry_lib/tracing/_instrument_initializers.py,sha256=a15a46a0515462319195a96f7cdb695e72a1559c3212964f5883ab824031bf70,15125
|
34
49
|
lmnr/opentelemetry_lib/tracing/attributes.py,sha256=32fa30565b977c2a92202dc2bf1ded583a81d02a6bf5ba52958f75a8be08cbbe,1497
|
35
50
|
lmnr/opentelemetry_lib/tracing/context_properties.py,sha256=6966ef31d581e10eeea9cd06192b237115cc4dc3b5f1a58e68865edd0c92fda0,2314
|
36
51
|
lmnr/opentelemetry_lib/tracing/exporter.py,sha256=6af8e61fd873e8f5db315d9b9f1edbf46b860ba7e50140f0bdcc6864c6d35a03,2082
|
37
52
|
lmnr/opentelemetry_lib/tracing/instruments.py,sha256=e3c12315bda301416d1f3bc8d354ad16d4da211e2ecfa019265f4b565307c118,5655
|
38
|
-
lmnr/opentelemetry_lib/tracing/processor.py,sha256=
|
53
|
+
lmnr/opentelemetry_lib/tracing/processor.py,sha256=ed46599411de041b802e53e777d23fb2851913df185cb0facf001d0b49a5a8e3,3440
|
39
54
|
lmnr/opentelemetry_lib/tracing/tracer.py,sha256=a0d0ba57c785bee2b78b92165ec2838c43052ff6b1792a2fdcbd5f3debf0b963,476
|
40
55
|
lmnr/opentelemetry_lib/utils/__init__.py,sha256=a4d85fd06def4dde5c728734de2d4c5c36eb89c49a8aa09b8b50cb5a149e90af,604
|
41
56
|
lmnr/opentelemetry_lib/utils/json_encoder.py,sha256=74ae9bfdac6bef42182fb56ff9bbb8c27b6f0c3bb29eda2ab0769d76a5fb3f9f,463
|
42
|
-
lmnr/opentelemetry_lib/utils/package_check.py,sha256=
|
57
|
+
lmnr/opentelemetry_lib/utils/package_check.py,sha256=f8274186c96815c996a25fae06bf913f0bb7c835507739949f37c03bbe5d9ca9,527
|
43
58
|
lmnr/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
44
59
|
lmnr/sdk/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
45
60
|
lmnr/sdk/browser/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
46
|
-
lmnr/sdk/browser/browser_use_otel.py,sha256=
|
47
|
-
lmnr/sdk/browser/patchright_otel.py,sha256=
|
48
|
-
lmnr/sdk/browser/playwright_otel.py,sha256=
|
49
|
-
lmnr/sdk/browser/pw_utils.py,sha256=
|
61
|
+
lmnr/sdk/browser/browser_use_otel.py,sha256=0de6b4e41a08cc953f53c386c45fd1bc8bad229b4c6fbd69459e3fab0b073b4c,5109
|
62
|
+
lmnr/sdk/browser/patchright_otel.py,sha256=dd13d0555c0b1187d6130b403cc21e54e0c7bfa5163090232d4f0ba1b4ff13c2,4409
|
63
|
+
lmnr/sdk/browser/playwright_otel.py,sha256=b45cc4bed5c0029976ffbd01ad46e52cef21f5dafda8679f3a68f438733b86ec,8697
|
64
|
+
lmnr/sdk/browser/pw_utils.py,sha256=2e711cef6a60cffe48005838245053ecc7e1f1bda77fe3518f61c19b10ebed0d,19599
|
50
65
|
lmnr/sdk/browser/rrweb/rrweb.umd.min.cjs,sha256=2f2da38b00bb85312d8225f3069a09352135564ceed2564f652f1bae3bac016d,260896
|
51
66
|
lmnr/sdk/browser/utils.py,sha256=4a668776d2938108d25fbcecd61c8e1710a4da3e56230d5fefca5964dd09e3c1,2371
|
52
67
|
lmnr/sdk/client/asynchronous/async_client.py,sha256=e8feae007506cd2e4b08e72706f5f1bb4ea54492b4aa6b68ef184a129de8f466,4948
|
@@ -66,15 +81,15 @@ lmnr/sdk/client/synchronous/resources/evaluators.py,sha256=3cd6a17e7a9cc0441c2d2
|
|
66
81
|
lmnr/sdk/client/synchronous/resources/tags.py,sha256=123deec43128662c21cb275b2df6a102372f875315b0bd36806555394c1d4b5b,2270
|
67
82
|
lmnr/sdk/client/synchronous/sync_client.py,sha256=0bebe88e3aed689505e9ed3d32036f76df4c3496e4d659162bd41abedc026f16,5299
|
68
83
|
lmnr/sdk/datasets.py,sha256=3fd851c5f97bf88eaa84b1451a053eaff23b4497cbb45eac2f9ea0e5f2886c00,1708
|
69
|
-
lmnr/sdk/decorators.py,sha256=
|
84
|
+
lmnr/sdk/decorators.py,sha256=0c6b95b92ec8023f28cd15ddc47849888fa91f2534d575f626e3557f5f0a0c02,6451
|
70
85
|
lmnr/sdk/eval_control.py,sha256=291394ac385c653ae9b5167e871bebeb4fe8fc6b7ff2ed38e636f87015dcba86,184
|
71
|
-
lmnr/sdk/evaluations.py,sha256=
|
72
|
-
lmnr/sdk/laminar.py,sha256=
|
86
|
+
lmnr/sdk/evaluations.py,sha256=b41f7737b084dc5b64b2952659b729622e0918fd492bfcddde7177d1a1c690ae,22572
|
87
|
+
lmnr/sdk/laminar.py,sha256=c782ee6e5dcb3acada5fd30ccc85cea2d28d59a99af86c14161806f0e85a207f,35208
|
73
88
|
lmnr/sdk/log.py,sha256=9edfd83263f0d4845b1b2d1beeae2b4ed3f8628de941f371a893d72b79c348d4,2213
|
74
89
|
lmnr/sdk/types.py,sha256=650a7949e609359b0adcaadb49e5cf63fc67ea61a35b9992c3f8b445dfce6b89,12328
|
75
90
|
lmnr/sdk/utils.py,sha256=4beb884ae6fbbc7d8cf639b036b726ea6a2a658f0a6386faf5735a13d706a2d8,5039
|
76
|
-
lmnr/version.py,sha256=
|
77
|
-
lmnr-0.6.
|
78
|
-
lmnr-0.6.
|
79
|
-
lmnr-0.6.
|
80
|
-
lmnr-0.6.
|
91
|
+
lmnr/version.py,sha256=54a1b533e429edeb5cd515149160e8f8e9ee1d29bc2a9154070f57ecfef74fed,1322
|
92
|
+
lmnr-0.6.21.dist-info/WHEEL,sha256=cc8ae5806c5874a696cde0fcf78fdf73db4982e7c824f3ceab35e2b65182fa1a,79
|
93
|
+
lmnr-0.6.21.dist-info/entry_points.txt,sha256=abdf3411b7dd2d7329a241f2da6669bab4e314a747a586ecdb9f888f3035003c,39
|
94
|
+
lmnr-0.6.21.dist-info/METADATA,sha256=3dc12230601db748dea1bda0cbb285741f5de3c3db8a4e889deed362b28b0757,14453
|
95
|
+
lmnr-0.6.21.dist-info/RECORD,,
|
File without changes
|