lmnr 0.4.50__py3-none-any.whl → 0.4.54__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.
@@ -1,6 +1,4 @@
1
- import os
2
1
  import sys
3
- from pathlib import Path
4
2
 
5
3
  from typing import Optional, Set
6
4
  from opentelemetry.sdk.trace import SpanProcessor
@@ -12,8 +12,8 @@ from opentelemetry.trace import Span
12
12
 
13
13
  from lmnr.sdk.utils import get_input_from_func_args, is_method
14
14
  from lmnr.openllmetry_sdk.tracing import get_tracer
15
- from lmnr.openllmetry_sdk.tracing.attributes import SPAN_INPUT, SPAN_OUTPUT, SPAN_PATH
16
- from lmnr.openllmetry_sdk.tracing.tracing import TracerWrapper, get_span_path
15
+ from lmnr.openllmetry_sdk.tracing.attributes import SPAN_INPUT, SPAN_OUTPUT
16
+ from lmnr.openllmetry_sdk.tracing.tracing import TracerWrapper
17
17
  from lmnr.openllmetry_sdk.utils.json_encoder import JSONEncoder
18
18
 
19
19
 
@@ -50,11 +50,7 @@ def entity_method(
50
50
  with get_tracer() as tracer:
51
51
  span = tracer.start_span(span_name)
52
52
 
53
- span_path = get_span_path(span_name)
54
- span.set_attribute(SPAN_PATH, span_path)
55
- ctx = context_api.set_value("span_path", span_path)
56
-
57
- ctx = trace.set_span_in_context(span, ctx)
53
+ ctx = trace.set_span_in_context(span, context_api.get_current())
58
54
  ctx_token = context_api.attach(ctx)
59
55
 
60
56
  try:
@@ -101,8 +97,6 @@ def entity_method(
101
97
 
102
98
 
103
99
  # Async Decorators
104
-
105
-
106
100
  def aentity_method(
107
101
  name: Optional[str] = None,
108
102
  ):
@@ -117,11 +111,7 @@ def aentity_method(
117
111
  with get_tracer() as tracer:
118
112
  span = tracer.start_span(span_name)
119
113
 
120
- span_path = get_span_path(span_name)
121
- span.set_attribute(SPAN_PATH, span_path)
122
- ctx = context_api.set_value("span_path", span_path)
123
-
124
- ctx = trace.set_span_in_context(span, ctx)
114
+ ctx = trace.set_span_in_context(span, context_api.get_current())
125
115
  ctx_token = context_api.attach(ctx)
126
116
 
127
117
  try:
@@ -23,11 +23,11 @@ from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import (
23
23
  OTLPSpanExporter as GRPCExporter,
24
24
  )
25
25
  from opentelemetry.instrumentation.threading import ThreadingInstrumentor
26
- from opentelemetry.context import get_value, attach, set_value
26
+ from opentelemetry.context import get_value, attach, get_current, set_value, Context
27
27
  from opentelemetry.propagate import set_global_textmap
28
28
  from opentelemetry.propagators.textmap import TextMapPropagator
29
29
  from opentelemetry.sdk.resources import Resource
30
- from opentelemetry.sdk.trace import TracerProvider, SpanProcessor
30
+ from opentelemetry.sdk.trace import TracerProvider, SpanProcessor, Span
31
31
  from opentelemetry.sdk.trace.export import (
32
32
  SpanExporter,
33
33
  SimpleSpanProcessor,
@@ -70,6 +70,7 @@ class TracerWrapper(object):
70
70
  headers: Dict[str, str] = {}
71
71
  __tracer_provider: TracerProvider = None
72
72
  __logger: logging.Logger = None
73
+ __span_id_to_path: dict[int, list[str]] = {}
73
74
 
74
75
  def __new__(
75
76
  cls,
@@ -137,6 +138,7 @@ class TracerWrapper(object):
137
138
  return cls.instance
138
139
 
139
140
  def exit_handler(self):
141
+ self.__span_id_to_path = {}
140
142
  self.flush()
141
143
 
142
144
  def _initialize_logger(self):
@@ -145,14 +147,18 @@ class TracerWrapper(object):
145
147
  console_log_handler.setFormatter(VerboseColorfulFormatter())
146
148
  self.__logger.addHandler(console_log_handler)
147
149
 
148
- def _span_processor_on_start(self, span, parent_context):
149
- span_path = get_value("span_path")
150
- if span_path is not None:
151
- # This is done redundantly here for most decorated functions
152
- # However, need to do this for auto-instrumented libraries.
153
- # Then, for auto-instrumented ones, they'll attach
154
- # the final part of the name to the span on the backend.
155
- span.set_attribute(SPAN_PATH, span_path)
150
+ def _span_processor_on_start(
151
+ self, span: Span, parent_context: Optional[Context] = None
152
+ ):
153
+ span_path_in_context = get_value("span_path", parent_context or get_current())
154
+ span_path_in_context = None
155
+ parent_span_path = span_path_in_context or (
156
+ self.__span_id_to_path.get(span.parent.span_id) if span.parent else None
157
+ )
158
+ span_path = parent_span_path + [span.name] if parent_span_path else [span.name]
159
+ span.set_attribute(SPAN_PATH, span_path)
160
+ set_value("span_path", span_path, get_current())
161
+ self.__span_id_to_path[span.get_span_context().span_id] = span_path
156
162
 
157
163
  span.set_attribute(SPAN_INSTRUMENTATION_SOURCE, "python")
158
164
 
@@ -186,6 +192,11 @@ class TracerWrapper(object):
186
192
  def verify_initialized(cls) -> bool:
187
193
  return hasattr(cls, "instance")
188
194
 
195
+ @classmethod
196
+ def clear(cls):
197
+ # Any state cleanup. Now used in between tests
198
+ cls.__span_id_to_path = {}
199
+
189
200
  def flush(self):
190
201
  self.__spans_processor.force_flush()
191
202
 
@@ -231,12 +242,6 @@ def _set_association_properties_attributes(span, properties: dict) -> None:
231
242
  span.set_attribute(f"{ASSOCIATION_PROPERTIES}.{key}", value)
232
243
 
233
244
 
234
- def get_span_path(span_name: str) -> str:
235
- current_span_path = get_value("span_path")
236
- span_path = f"{current_span_path}.{span_name}" if current_span_path else span_name
237
- return span_path
238
-
239
-
240
245
  def set_managed_prompt_tracing_context(
241
246
  key: str,
242
247
  version: int,
lmnr/sdk/datasets.py CHANGED
@@ -1,5 +1,4 @@
1
1
  from abc import ABC, abstractmethod
2
- import asyncio
3
2
 
4
3
  from .log import get_default_logger
5
4
  from .laminar import Laminar as L
lmnr/sdk/evaluations.py CHANGED
@@ -29,9 +29,10 @@ from .utils import is_async
29
29
  DEFAULT_BATCH_SIZE = 5
30
30
 
31
31
 
32
- def get_evaluation_url(
33
- project_id: str, evaluation_id: str, base_url: str = "https://www.lmnr.ai"
34
- ):
32
+ def get_evaluation_url(project_id: str, evaluation_id: str, base_url: Optional[str] = None):
33
+ if not base_url:
34
+ base_url = "https://www.lmnr.ai"
35
+
35
36
  url = base_url
36
37
  if url.endswith("/"):
37
38
  url = url[:-1]
@@ -58,7 +59,7 @@ def get_average_scores(results: list[EvaluationResultDatapoint]) -> dict[str, Nu
58
59
 
59
60
 
60
61
  class EvaluationReporter:
61
- def __init__(self, base_url: str = "https://www.lmnr.ai"):
62
+ def __init__(self, base_url):
62
63
  self.base_url = base_url
63
64
 
64
65
  def start(self, length: int):
lmnr/sdk/laminar.py CHANGED
@@ -10,9 +10,8 @@ from lmnr.openllmetry_sdk.tracing.attributes import (
10
10
  OVERRIDE_PARENT_SPAN,
11
11
  )
12
12
  from lmnr.openllmetry_sdk.decorators.base import json_dumps
13
- from opentelemetry import context, trace
14
- from opentelemetry.context import attach, detach, set_value
15
- from opentelemetry.sdk.trace import SpanProcessor
13
+ from opentelemetry import context as context_api, trace
14
+ from opentelemetry.context import attach, detach
16
15
  from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
17
16
  from opentelemetry.util.types import AttributeValue
18
17
 
@@ -37,11 +36,9 @@ from lmnr.openllmetry_sdk.tracing.attributes import (
37
36
  SESSION_ID,
38
37
  SPAN_INPUT,
39
38
  SPAN_OUTPUT,
40
- SPAN_PATH,
41
39
  TRACE_TYPE,
42
40
  )
43
41
  from lmnr.openllmetry_sdk.tracing.tracing import (
44
- get_span_path,
45
42
  remove_association_properties,
46
43
  set_association_properties,
47
44
  update_association_properties,
@@ -80,7 +77,7 @@ class Laminar:
80
77
  http_port: Optional[int] = None,
81
78
  grpc_port: Optional[int] = None,
82
79
  instruments: Optional[Set[Instruments]] = None,
83
- _processor: Optional[SpanProcessor] = None,
80
+ disable_batch: bool = False,
84
81
  ):
85
82
  """Initialize Laminar context across the application.
86
83
  This method must be called before using any other Laminar methods or
@@ -105,6 +102,14 @@ class Laminar:
105
102
  If not specified, defaults to 443.
106
103
  grpc_port (Optional[int], optional): Laminar API grpc port.\
107
104
  If not specified, defaults to 8443.
105
+ instruments (Optional[Set[Instruments]], optional): Instruments to\
106
+ enable. Defaults to all instruments. You can pass\
107
+ an empty set to disable all instruments. Read more:\
108
+ https://docs.lmnr.ai/tracing/automatic-instrumentation
109
+ disable_batch (bool, optional): If set to True, spans will be sent\
110
+ immediately to the backend. Useful for debugging, but\
111
+ may cause performance overhead in production.
112
+ Defaults to False.
108
113
 
109
114
  Raises:
110
115
  ValueError: If project API key is not set
@@ -142,6 +147,7 @@ class Laminar:
142
147
  headers={"authorization": f"Bearer {cls.__project_api_key}"},
143
148
  ),
144
149
  instruments=instruments,
150
+ disable_batch=disable_batch,
145
151
  )
146
152
 
147
153
  @classmethod
@@ -350,8 +356,7 @@ class Laminar:
350
356
  return
351
357
 
352
358
  with get_tracer() as tracer:
353
- span_path = get_span_path(name)
354
- ctx = set_value("span_path", span_path, context)
359
+ ctx = context or context_api.get_current()
355
360
  if trace_id is not None:
356
361
  if isinstance(trace_id, uuid.UUID):
357
362
  span_context = trace.SpanContext(
@@ -385,7 +390,6 @@ class Laminar:
385
390
  name,
386
391
  context=ctx,
387
392
  attributes={
388
- SPAN_PATH: span_path,
389
393
  SPAN_TYPE: span_type,
390
394
  **(label_props),
391
395
  },
@@ -497,8 +501,7 @@ class Laminar:
497
501
  span. Defaults to None.
498
502
  """
499
503
  with get_tracer() as tracer:
500
- span_path = get_span_path(name)
501
- ctx = set_value("span_path", span_path, context)
504
+ ctx = context or context_api.get_current()
502
505
  if trace_id is not None:
503
506
  if isinstance(trace_id, uuid.UUID):
504
507
  span_context = trace.SpanContext(
@@ -531,7 +534,6 @@ class Laminar:
531
534
  name,
532
535
  context=ctx,
533
536
  attributes={
534
- SPAN_PATH: span_path,
535
537
  SPAN_TYPE: span_type,
536
538
  **(label_props),
537
539
  },
@@ -670,7 +672,7 @@ class Laminar:
670
672
  @classmethod
671
673
  def clear_metadata(cls):
672
674
  """Clear the metadata from the context"""
673
- props: dict = copy.copy(context.get_value("association_properties"))
675
+ props: dict = copy.copy(context_api.get_value("association_properties"))
674
676
  metadata_keys = [k for k in props.keys() if k.startswith("metadata.")]
675
677
  for k in metadata_keys:
676
678
  props.pop(k)
@@ -679,7 +681,7 @@ class Laminar:
679
681
  @classmethod
680
682
  def clear_session(cls):
681
683
  """Clear the session and user id from the context"""
682
- props: dict = copy.copy(context.get_value("association_properties"))
684
+ props: dict = copy.copy(context_api.get_value("association_properties"))
683
685
  props.pop("session_id", None)
684
686
  props.pop("user_id", None)
685
687
  set_association_properties(props)
@@ -1,9 +1,10 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: lmnr
3
- Version: 0.4.50
4
- Summary: Python SDK for Laminar AI
3
+ Version: 0.4.54
4
+ Summary: Python SDK for Laminar
5
5
  License: Apache-2.0
6
6
  Author: lmnr.ai
7
+ Author-email: founders@lmnr.ai
7
8
  Requires-Python: >=3.9,<4
8
9
  Classifier: License :: OSI Approved :: Apache Software License
9
10
  Classifier: Programming Language :: Python :: 3
@@ -44,38 +45,63 @@ Requires-Dist: deprecated (>=1.0)
44
45
  Requires-Dist: opentelemetry-api (>=1.28.0)
45
46
  Requires-Dist: opentelemetry-exporter-otlp-proto-grpc (>=1.28.0)
46
47
  Requires-Dist: opentelemetry-exporter-otlp-proto-http (>=1.28.0)
47
- Requires-Dist: opentelemetry-instrumentation-alephalpha (>=0.34.0) ; extra == "all" or extra == "alephalpha"
48
- Requires-Dist: opentelemetry-instrumentation-anthropic (>=0.34.0) ; extra == "all" or extra == "anthropic"
49
- Requires-Dist: opentelemetry-instrumentation-bedrock (>=0.34.0) ; extra == "all" or extra == "bedrock"
50
- Requires-Dist: opentelemetry-instrumentation-chromadb (>=0.34.0) ; extra == "all" or extra == "chromadb"
51
- Requires-Dist: opentelemetry-instrumentation-cohere (>=0.34.0) ; extra == "all" or extra == "cohere"
52
- Requires-Dist: opentelemetry-instrumentation-google-generativeai (>=0.34.0) ; extra == "all" or extra == "google-generativeai"
53
- Requires-Dist: opentelemetry-instrumentation-groq (>=0.34.0) ; extra == "all" or extra == "groq"
54
- Requires-Dist: opentelemetry-instrumentation-haystack (>=0.34.0) ; extra == "all" or extra == "haystack"
55
- Requires-Dist: opentelemetry-instrumentation-lancedb (>=0.34.0) ; extra == "all" or extra == "lancedb"
56
- Requires-Dist: opentelemetry-instrumentation-langchain (>=0.34.0) ; extra == "all" or extra == "langchain"
57
- Requires-Dist: opentelemetry-instrumentation-llamaindex (>=0.34.0) ; extra == "all" or extra == "llamaindex"
58
- Requires-Dist: opentelemetry-instrumentation-marqo (>=0.34.0) ; extra == "all" or extra == "marqo"
59
- Requires-Dist: opentelemetry-instrumentation-milvus (>=0.34.0) ; extra == "all" or extra == "milvus"
60
- Requires-Dist: opentelemetry-instrumentation-mistralai (>=0.34.0) ; extra == "all" or extra == "mistralai"
61
- Requires-Dist: opentelemetry-instrumentation-ollama (>=0.34.0) ; extra == "all" or extra == "ollama"
62
- Requires-Dist: opentelemetry-instrumentation-openai (>=0.33.12) ; extra == "all" or extra == "openai"
63
- Requires-Dist: opentelemetry-instrumentation-pinecone (>=0.34.0) ; extra == "all" or extra == "pinecone"
64
- Requires-Dist: opentelemetry-instrumentation-qdrant (>=0.34.0) ; extra == "all" or extra == "qdrant"
65
- Requires-Dist: opentelemetry-instrumentation-replicate (>=0.34.0) ; extra == "all" or extra == "replicate"
48
+ Requires-Dist: opentelemetry-instrumentation-alephalpha (>=0.35.0) ; extra == "alephalpha"
49
+ Requires-Dist: opentelemetry-instrumentation-alephalpha (>=0.35.0) ; extra == "all"
50
+ Requires-Dist: opentelemetry-instrumentation-anthropic (>=0.35.0) ; extra == "all"
51
+ Requires-Dist: opentelemetry-instrumentation-anthropic (>=0.35.0) ; extra == "anthropic"
52
+ Requires-Dist: opentelemetry-instrumentation-bedrock (>=0.35.0) ; extra == "all"
53
+ Requires-Dist: opentelemetry-instrumentation-bedrock (>=0.35.0) ; extra == "bedrock"
54
+ Requires-Dist: opentelemetry-instrumentation-chromadb (>=0.35.0) ; extra == "all"
55
+ Requires-Dist: opentelemetry-instrumentation-chromadb (>=0.35.0) ; extra == "chromadb"
56
+ Requires-Dist: opentelemetry-instrumentation-cohere (>=0.35.0) ; extra == "all"
57
+ Requires-Dist: opentelemetry-instrumentation-cohere (>=0.35.0) ; extra == "cohere"
58
+ Requires-Dist: opentelemetry-instrumentation-google-generativeai (>=0.35.0) ; extra == "all"
59
+ Requires-Dist: opentelemetry-instrumentation-google-generativeai (>=0.35.0) ; extra == "google-generativeai"
60
+ Requires-Dist: opentelemetry-instrumentation-groq (>=0.35.0) ; extra == "all"
61
+ Requires-Dist: opentelemetry-instrumentation-groq (>=0.35.0) ; extra == "groq"
62
+ Requires-Dist: opentelemetry-instrumentation-haystack (>=0.35.0) ; extra == "all"
63
+ Requires-Dist: opentelemetry-instrumentation-haystack (>=0.35.0) ; extra == "haystack"
64
+ Requires-Dist: opentelemetry-instrumentation-lancedb (>=0.35.0) ; extra == "all"
65
+ Requires-Dist: opentelemetry-instrumentation-lancedb (>=0.35.0) ; extra == "lancedb"
66
+ Requires-Dist: opentelemetry-instrumentation-langchain (>=0.35.0) ; extra == "all"
67
+ Requires-Dist: opentelemetry-instrumentation-langchain (>=0.35.0) ; extra == "langchain"
68
+ Requires-Dist: opentelemetry-instrumentation-llamaindex (>=0.35.0) ; extra == "all"
69
+ Requires-Dist: opentelemetry-instrumentation-llamaindex (>=0.35.0) ; extra == "llamaindex"
70
+ Requires-Dist: opentelemetry-instrumentation-marqo (>=0.35.0) ; extra == "all"
71
+ Requires-Dist: opentelemetry-instrumentation-marqo (>=0.35.0) ; extra == "marqo"
72
+ Requires-Dist: opentelemetry-instrumentation-milvus (>=0.35.0) ; extra == "all"
73
+ Requires-Dist: opentelemetry-instrumentation-milvus (>=0.35.0) ; extra == "milvus"
74
+ Requires-Dist: opentelemetry-instrumentation-mistralai (>=0.35.0) ; extra == "all"
75
+ Requires-Dist: opentelemetry-instrumentation-mistralai (>=0.35.0) ; extra == "mistralai"
76
+ Requires-Dist: opentelemetry-instrumentation-ollama (>=0.35.0) ; extra == "all"
77
+ Requires-Dist: opentelemetry-instrumentation-ollama (>=0.35.0) ; extra == "ollama"
78
+ Requires-Dist: opentelemetry-instrumentation-openai (>=0.35.0) ; extra == "all"
79
+ Requires-Dist: opentelemetry-instrumentation-openai (>=0.35.0) ; extra == "openai"
80
+ Requires-Dist: opentelemetry-instrumentation-pinecone (>=0.35.0) ; extra == "all"
81
+ Requires-Dist: opentelemetry-instrumentation-pinecone (>=0.35.0) ; extra == "pinecone"
82
+ Requires-Dist: opentelemetry-instrumentation-qdrant (>=0.35.0) ; extra == "all"
83
+ Requires-Dist: opentelemetry-instrumentation-qdrant (>=0.35.0) ; extra == "qdrant"
84
+ Requires-Dist: opentelemetry-instrumentation-replicate (>=0.35.0) ; extra == "all"
85
+ Requires-Dist: opentelemetry-instrumentation-replicate (>=0.35.0) ; extra == "replicate"
66
86
  Requires-Dist: opentelemetry-instrumentation-requests (>=0.50b0)
67
- Requires-Dist: opentelemetry-instrumentation-sagemaker (>=0.34.0) ; extra == "all" or extra == "sagemaker"
87
+ Requires-Dist: opentelemetry-instrumentation-sagemaker (>=0.35.0) ; extra == "all"
88
+ Requires-Dist: opentelemetry-instrumentation-sagemaker (>=0.35.0) ; extra == "sagemaker"
68
89
  Requires-Dist: opentelemetry-instrumentation-sqlalchemy (>=0.50b0)
69
90
  Requires-Dist: opentelemetry-instrumentation-threading (>=0.50b0)
70
- Requires-Dist: opentelemetry-instrumentation-together (>=0.34.0) ; extra == "all" or extra == "together"
71
- Requires-Dist: opentelemetry-instrumentation-transformers (>=0.34.0) ; extra == "all" or extra == "transformers"
91
+ Requires-Dist: opentelemetry-instrumentation-together (>=0.35.0) ; extra == "all"
92
+ Requires-Dist: opentelemetry-instrumentation-together (>=0.35.0) ; extra == "together"
93
+ Requires-Dist: opentelemetry-instrumentation-transformers (>=0.35.0) ; extra == "all"
94
+ Requires-Dist: opentelemetry-instrumentation-transformers (>=0.35.0) ; extra == "transformers"
72
95
  Requires-Dist: opentelemetry-instrumentation-urllib3 (>=0.50b0)
73
- Requires-Dist: opentelemetry-instrumentation-vertexai (>=0.34.0) ; extra == "all" or extra == "vertexai"
74
- Requires-Dist: opentelemetry-instrumentation-watsonx (>=0.34.0) ; extra == "all" or extra == "watsonx"
75
- Requires-Dist: opentelemetry-instrumentation-weaviate (>=0.34.0) ; extra == "all" or extra == "weaviate"
96
+ Requires-Dist: opentelemetry-instrumentation-vertexai (>=0.35.0) ; extra == "all"
97
+ Requires-Dist: opentelemetry-instrumentation-vertexai (>=0.35.0) ; extra == "vertexai"
98
+ Requires-Dist: opentelemetry-instrumentation-watsonx (>=0.35.0) ; extra == "all"
99
+ Requires-Dist: opentelemetry-instrumentation-watsonx (>=0.35.0) ; extra == "watsonx"
100
+ Requires-Dist: opentelemetry-instrumentation-weaviate (>=0.35.0) ; extra == "all"
101
+ Requires-Dist: opentelemetry-instrumentation-weaviate (>=0.35.0) ; extra == "weaviate"
76
102
  Requires-Dist: opentelemetry-sdk (>=1.28.0)
77
- Requires-Dist: opentelemetry-semantic-conventions-ai (==0.4.2)
78
- Requires-Dist: pydantic (>=2.7)
103
+ Requires-Dist: opentelemetry-semantic-conventions-ai (>=0.4.2)
104
+ Requires-Dist: pydantic (>=2.0.3)
79
105
  Requires-Dist: python-dotenv (>=1.0)
80
106
  Requires-Dist: requests (>=2.0)
81
107
  Requires-Dist: tenacity (>=8.0)
@@ -2,32 +2,32 @@ lmnr/__init__.py,sha256=Bqxs-8Mh4h69pOHURgBCgo9EW1GwChebxP6wUX2-bsU,452
2
2
  lmnr/cli.py,sha256=4J2RZQhHM3jJcjFvBC4PChQTS-ukxykVvI0X6lTkK-o,2918
3
3
  lmnr/openllmetry_sdk/.flake8,sha256=bCxuDlGx3YQ55QHKPiGJkncHanh9qGjQJUujcFa3lAU,150
4
4
  lmnr/openllmetry_sdk/.python-version,sha256=9OLQBQVbD4zE4cJsPePhnAfV_snrPSoqEQw-PXgPMOs,6
5
- lmnr/openllmetry_sdk/__init__.py,sha256=vVSGTAwUnJvdulHtslkGAd8QCBuv78WUK3bgfBpH6Do,2390
5
+ lmnr/openllmetry_sdk/__init__.py,sha256=zPxPkkC43MX8SOK0LbItBnzBQBCr_t1zy9QxhaBMLX8,2355
6
6
  lmnr/openllmetry_sdk/config/__init__.py,sha256=DliMGp2NjYAqRFLKpWQPUKjGMHRO8QsVfazBA1qENQ8,248
7
7
  lmnr/openllmetry_sdk/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- lmnr/openllmetry_sdk/decorators/base.py,sha256=rZC5BgLULll0fZFRZ_Oe1XN-BhctKCpTo4TDsKvSfL4,6121
8
+ lmnr/openllmetry_sdk/decorators/base.py,sha256=BhfTJHjGnKXZRyug41wnmvjbg2UDq2p7eLEak7RsCXI,5779
9
9
  lmnr/openllmetry_sdk/instruments.py,sha256=CGGUEELldrXkQwAzAkDeAtDq07_pjhz7i14a92P7C_E,1036
10
10
  lmnr/openllmetry_sdk/tracing/__init__.py,sha256=xT73L1t2si2CM6QmMiTZ7zn-dKKYBLNrpBBWq6WfVBw,68
11
11
  lmnr/openllmetry_sdk/tracing/attributes.py,sha256=B_4KVYWAUu-6DQmsm2eCJQcTxm8pG1EByCBK3uOPkuI,1293
12
12
  lmnr/openllmetry_sdk/tracing/content_allow_list.py,sha256=3feztm6PBWNelc8pAZUcQyEGyeSpNiVKjOaDk65l2ps,846
13
13
  lmnr/openllmetry_sdk/tracing/context_manager.py,sha256=rdSus-p-TaevQ8hIAhfbnZr5dTqRvACDkzXGDpflncY,306
14
- lmnr/openllmetry_sdk/tracing/tracing.py,sha256=X87Dw-WhtGP-THeiTRzZ1FBosRdY2FR1xEcE09PgkRI,32138
14
+ lmnr/openllmetry_sdk/tracing/tracing.py,sha256=N5EeK4yoSa11CPh4J0OvHnDy8uxx018lzJ0FQLVapQ4,32360
15
15
  lmnr/openllmetry_sdk/utils/__init__.py,sha256=pNhf0G3vTd5ccoc03i1MXDbricSaiqCbi1DLWhSekK8,604
16
16
  lmnr/openllmetry_sdk/utils/in_memory_span_exporter.py,sha256=H_4TRaThMO1H6vUQ0OpQvzJk_fZH0OOsRAM1iZQXsR8,2112
17
17
  lmnr/openllmetry_sdk/utils/json_encoder.py,sha256=dK6b_axr70IYL7Vv-bu4wntvDDuyntoqsHaddqX7P58,463
18
18
  lmnr/openllmetry_sdk/utils/package_check.py,sha256=Da4WoTX6J9naODs99DnY9BA-2MxH2pWLmbbVkbQ7VUQ,236
19
19
  lmnr/openllmetry_sdk/version.py,sha256=OlatFEFA4ttqSSIiV8jdE-sq3KG5zu2hnC4B4mzWF3s,23
20
20
  lmnr/sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- lmnr/sdk/datasets.py,sha256=KNMp_v3z1ocIltIw7kTgj8o-l9R8N8Tgj0sw1ajQ9C8,1582
21
+ lmnr/sdk/datasets.py,sha256=hJcQcwTJbtA4COoVG3god4xll9TBSDMfvrhKmMfanjg,1567
22
22
  lmnr/sdk/decorators.py,sha256=ja2EUWUWvFOp28ER0k78PRuxNahwCVyH0TdM3U-xY7U,1856
23
23
  lmnr/sdk/eval_control.py,sha256=G6Fg3Xx_KWv72iBaWlNMdyRTF2bZFQnwJ68sJNSpIcY,177
24
- lmnr/sdk/evaluations.py,sha256=lSXSvvYNB5JsSGli_wV-W34LVzJkQOiK8DnvHv4eU5A,16323
25
- lmnr/sdk/laminar.py,sha256=sUq04bSGfrNuSHOEMTbR01Me0ploX8SE5GIWKqUAVyY,31094
24
+ lmnr/sdk/evaluations.py,sha256=dUIMEmKUzkOmHZ3nxlddk9kKm518C6xvElpgtNsql10,16344
25
+ lmnr/sdk/laminar.py,sha256=611MLSJwGxVHd7LgW0kPCtwPB2rLlHE_BtVyVrIKFz0,31447
26
26
  lmnr/sdk/log.py,sha256=nt_YMmPw1IRbGy0b7q4rTtP4Yo3pQfNxqJPXK3nDSNQ,2213
27
27
  lmnr/sdk/types.py,sha256=FCNoFoa0ingOvpXGfbiETVsakYyq9Zpoc56MXJ1YDzQ,6390
28
28
  lmnr/sdk/utils.py,sha256=Uk8y15x-sd5tP2ERONahElLDJVEy_3dA_1_5g9A6auY,3358
29
- lmnr-0.4.50.dist-info/LICENSE,sha256=67b_wJHVV1CBaWkrKFWU1wyqTPSdzH77Ls-59631COg,10411
30
- lmnr-0.4.50.dist-info/METADATA,sha256=Qpu8olLKxcpmaPPf1aczP16sRM_4KyHwkueRLp56EKM,12196
31
- lmnr-0.4.50.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
32
- lmnr-0.4.50.dist-info/entry_points.txt,sha256=K1jE20ww4jzHNZLnsfWBvU3YKDGBgbOiYG5Y7ivQcq4,37
33
- lmnr-0.4.50.dist-info/RECORD,,
29
+ lmnr-0.4.54.dist-info/LICENSE,sha256=67b_wJHVV1CBaWkrKFWU1wyqTPSdzH77Ls-59631COg,10411
30
+ lmnr-0.4.54.dist-info/METADATA,sha256=ohFPnFyzy3ppgJdvvoz1ofQ6BZFZUsb9wBanIfzUNEc,13829
31
+ lmnr-0.4.54.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
32
+ lmnr-0.4.54.dist-info/entry_points.txt,sha256=K1jE20ww4jzHNZLnsfWBvU3YKDGBgbOiYG5Y7ivQcq4,37
33
+ lmnr-0.4.54.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.1
2
+ Generator: poetry-core 2.0.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
File without changes