lmnr 0.6.18__py3-none-any.whl → 0.6.20__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.
Files changed (37) hide show
  1. lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/__init__.py +55 -20
  2. lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/schema_utils.py +23 -0
  3. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/__init__.py +61 -0
  4. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/__init__.py +442 -0
  5. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/chat_wrappers.py +1024 -0
  6. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/completion_wrappers.py +297 -0
  7. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/config.py +16 -0
  8. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py +308 -0
  9. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_emitter.py +100 -0
  10. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_models.py +41 -0
  11. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/image_gen_wrappers.py +68 -0
  12. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/utils.py +185 -0
  13. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v0/__init__.py +176 -0
  14. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/__init__.py +358 -0
  15. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py +319 -0
  16. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py +132 -0
  17. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/responses_wrappers.py +626 -0
  18. lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/version.py +1 -0
  19. lmnr/opentelemetry_lib/tracing/_instrument_initializers.py +1 -3
  20. lmnr/sdk/browser/browser_use_otel.py +1 -1
  21. lmnr/sdk/browser/patchright_otel.py +0 -14
  22. lmnr/sdk/browser/playwright_otel.py +16 -130
  23. lmnr/sdk/browser/pw_utils.py +45 -31
  24. lmnr/sdk/client/asynchronous/async_client.py +13 -0
  25. lmnr/sdk/client/asynchronous/resources/__init__.py +2 -0
  26. lmnr/sdk/client/asynchronous/resources/evaluators.py +85 -0
  27. lmnr/sdk/client/asynchronous/resources/tags.py +4 -10
  28. lmnr/sdk/client/synchronous/resources/__init__.py +2 -1
  29. lmnr/sdk/client/synchronous/resources/evaluators.py +85 -0
  30. lmnr/sdk/client/synchronous/resources/tags.py +4 -10
  31. lmnr/sdk/client/synchronous/sync_client.py +14 -0
  32. lmnr/sdk/utils.py +23 -0
  33. lmnr/version.py +1 -1
  34. {lmnr-0.6.18.dist-info → lmnr-0.6.20.dist-info}/METADATA +2 -5
  35. {lmnr-0.6.18.dist-info → lmnr-0.6.20.dist-info}/RECORD +37 -18
  36. {lmnr-0.6.18.dist-info → lmnr-0.6.20.dist-info}/WHEEL +1 -1
  37. {lmnr-0.6.18.dist-info → lmnr-0.6.20.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,85 @@
1
+ """Evaluators resource for creating evaluator scores."""
2
+
3
+ import uuid
4
+ from typing import Any
5
+
6
+ from lmnr.sdk.client.synchronous.resources.base import BaseResource
7
+ from lmnr.sdk.utils import format_id
8
+
9
+
10
+ class Evaluators(BaseResource):
11
+ """Resource for creating evaluator scores."""
12
+
13
+ def score(
14
+ self,
15
+ *,
16
+ name: str,
17
+ trace_id: str | int | uuid.UUID | None = None,
18
+ span_id: str | int | uuid.UUID | None = None,
19
+ metadata: dict[str, Any] | None = None,
20
+ score: float,
21
+ ) -> None:
22
+ """Create a score for a span.
23
+
24
+ Args:
25
+ name (str): Name of the score
26
+ trace_id (str | int | uuid.UUID | None, optional): The trace ID to score (will be attached to root span)
27
+ span_id (str | int | uuid.UUID | None, optional): The span ID to score
28
+ metadata (dict[str, Any] | None, optional): Additional metadata. Defaults to None.
29
+ score (float): The score value (float)
30
+
31
+ Raises:
32
+ ValueError: If there's an error creating the score.
33
+
34
+ Example:
35
+ Score by trace ID (will attach to root span):
36
+
37
+ >>> laminar_client.evaluators.score(
38
+ ... name="quality",
39
+ ... trace_id="trace-id-here",
40
+ ... score=0.95,
41
+ ... metadata={"model": "gpt-4"}
42
+ ... )
43
+
44
+ Score by span ID:
45
+
46
+ >>> laminar_client.evaluators.score(
47
+ ... name="relevance",
48
+ ... span_id="span-id-here",
49
+ ... score=0.87
50
+ ... )
51
+ """
52
+ if trace_id is not None and span_id is not None:
53
+ raise ValueError("Cannot provide both trace_id and span_id. Please provide only one.")
54
+ if trace_id is None and span_id is None:
55
+ raise ValueError("Either 'trace_id' or 'span_id' must be provided.")
56
+
57
+ if trace_id is not None:
58
+ formatted_trace_id = format_id(trace_id)
59
+ payload = {
60
+ "name": name,
61
+ "traceId": formatted_trace_id,
62
+ "metadata": metadata,
63
+ "score": score,
64
+ "source": "Code",
65
+ }
66
+ else:
67
+ formatted_span_id = format_id(span_id)
68
+ payload = {
69
+ "name": name,
70
+ "spanId": formatted_span_id,
71
+ "metadata": metadata,
72
+ "score": score,
73
+ "source": "Code",
74
+ }
75
+
76
+ response = self._client.post(
77
+ self._base_url + "/v1/evaluators/score",
78
+ json=payload,
79
+ headers=self._headers(),
80
+ )
81
+
82
+ if response.status_code != 200:
83
+ if response.status_code == 401:
84
+ raise ValueError("Unauthorized. Please check your project API key.")
85
+ raise ValueError(f"Error creating evaluator score: {response.text}")
@@ -5,6 +5,7 @@ import uuid
5
5
 
6
6
  from lmnr.sdk.client.synchronous.resources.base import BaseResource
7
7
  from lmnr.sdk.log import get_default_logger
8
+ from lmnr.sdk.utils import format_id
8
9
 
9
10
  logger = get_default_logger(__name__)
10
11
 
@@ -54,18 +55,11 @@ class Tags(BaseResource):
54
55
  ```
55
56
  """
56
57
  trace_tags = tags if isinstance(tags, list) else [tags]
57
- if isinstance(trace_id, uuid.UUID):
58
- trace_id = str(trace_id)
59
- elif isinstance(trace_id, int):
60
- trace_id = str(uuid.UUID(int=trace_id))
61
- elif isinstance(trace_id, str):
62
- uuid.UUID(trace_id)
63
- else:
64
- raise ValueError(f"Invalid trace id: {trace_id}")
58
+ formatted_trace_id = format_id(trace_id)
65
59
 
66
60
  url = self._base_url + "/v1/tag"
67
61
  payload = {
68
- "traceId": trace_id,
62
+ "traceId": formatted_trace_id,
69
63
  "names": trace_tags,
70
64
  }
71
65
  response = self._client.post(
@@ -78,7 +72,7 @@ class Tags(BaseResource):
78
72
 
79
73
  if response.status_code == 404:
80
74
  logger.warning(
81
- f"Trace {trace_id} not found. The trace may have not been ended yet."
75
+ f"Trace {formatted_trace_id} not found. The trace may have not been ended yet."
82
76
  )
83
77
  return []
84
78
 
@@ -11,6 +11,7 @@ from lmnr.sdk.client.synchronous.resources import (
11
11
  Agent,
12
12
  BrowserEvents,
13
13
  Evals,
14
+ Evaluators,
14
15
  Tags,
15
16
  )
16
17
  from lmnr.sdk.utils import from_env
@@ -27,6 +28,7 @@ class LaminarClient:
27
28
  __agent: Agent | None = None
28
29
  __evals: Evals | None = None
29
30
  __tags: Tags | None = None
31
+ __evaluators: Evaluators | None = None
30
32
 
31
33
  def __init__(
32
34
  self,
@@ -74,6 +76,9 @@ class LaminarClient:
74
76
  # Initialize resource objects
75
77
  self.__agent = Agent(self.__client, self.__base_url, self.__project_api_key)
76
78
  self.__evals = Evals(self.__client, self.__base_url, self.__project_api_key)
79
+ self.__evaluators = Evaluators(
80
+ self.__client, self.__base_url, self.__project_api_key
81
+ )
77
82
  self.__browser_events = BrowserEvents(
78
83
  self.__client, self.__base_url, self.__project_api_key
79
84
  )
@@ -115,6 +120,15 @@ class LaminarClient:
115
120
  """
116
121
  return self.__tags
117
122
 
123
+ @property
124
+ def evaluators(self) -> Evaluators:
125
+ """Get the Evaluators resource.
126
+
127
+ Returns:
128
+ Evaluators: The Evaluators resource instance.
129
+ """
130
+ return self.__evaluators
131
+
118
132
  def shutdown(self):
119
133
  """Shutdown the client by closing underlying connections."""
120
134
  self.__client.close()
lmnr/sdk/utils.py CHANGED
@@ -128,3 +128,26 @@ def is_otel_attribute_value_type(value: typing.Any) -> bool:
128
128
  )
129
129
  return True
130
130
  return False
131
+
132
+
133
+ def format_id(id_value: str | int | uuid.UUID) -> str:
134
+ """Format trace/span/evaluation ID to a UUID string, or return valid UUID strings as-is.
135
+
136
+ Args:
137
+ id_value: The ID in various formats (UUID, int, or valid UUID string)
138
+
139
+ Returns:
140
+ str: UUID string representation
141
+
142
+ Raises:
143
+ ValueError: If id_value cannot be converted to a valid UUID
144
+ """
145
+ if isinstance(id_value, uuid.UUID):
146
+ return str(id_value)
147
+ elif isinstance(id_value, int):
148
+ return str(uuid.UUID(int=id_value))
149
+ elif isinstance(id_value, str):
150
+ uuid.UUID(id_value)
151
+ return id_value
152
+ else:
153
+ raise ValueError(f"Invalid ID type: {type(id_value)}")
lmnr/version.py CHANGED
@@ -3,7 +3,7 @@ import httpx
3
3
  from packaging import version
4
4
 
5
5
 
6
- __version__ = "0.6.18"
6
+ __version__ = "0.6.20"
7
7
  PYTHON_VERSION = f"{sys.version_info.major}.{sys.version_info.minor}"
8
8
 
9
9
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lmnr
3
- Version: 0.6.18
3
+ Version: 0.6.20
4
4
  Summary: Python SDK for Laminar
5
5
  Author: lmnr.ai
6
6
  Author-email: lmnr.ai <founders@lmnr.ai>
@@ -12,7 +12,7 @@ Requires-Dist: opentelemetry-sdk>=1.33.0
12
12
  Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.33.0
13
13
  Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.33.0
14
14
  Requires-Dist: opentelemetry-semantic-conventions>=0.54b0
15
- Requires-Dist: opentelemetry-semantic-conventions-ai>=0.4.8
15
+ Requires-Dist: opentelemetry-semantic-conventions-ai>=0.4.9
16
16
  Requires-Dist: tqdm>=4.0
17
17
  Requires-Dist: tenacity>=8.0
18
18
  Requires-Dist: grpcio>=1
@@ -36,7 +36,6 @@ Requires-Dist: opentelemetry-instrumentation-mcp>=0.40.12 ; extra == 'all'
36
36
  Requires-Dist: opentelemetry-instrumentation-milvus>=0.40.12 ; extra == 'all'
37
37
  Requires-Dist: opentelemetry-instrumentation-mistralai>=0.40.12 ; extra == 'all'
38
38
  Requires-Dist: opentelemetry-instrumentation-ollama>=0.40.12 ; extra == 'all'
39
- Requires-Dist: opentelemetry-instrumentation-openai>=0.40.12 ; extra == 'all'
40
39
  Requires-Dist: opentelemetry-instrumentation-pinecone>=0.40.12 ; extra == 'all'
41
40
  Requires-Dist: opentelemetry-instrumentation-qdrant>=0.40.12 ; extra == 'all'
42
41
  Requires-Dist: opentelemetry-instrumentation-replicate>=0.40.12 ; extra == 'all'
@@ -62,7 +61,6 @@ Requires-Dist: opentelemetry-instrumentation-mcp>=0.40.12 ; extra == 'mcp'
62
61
  Requires-Dist: opentelemetry-instrumentation-milvus>=0.40.12 ; extra == 'milvus'
63
62
  Requires-Dist: opentelemetry-instrumentation-mistralai>=0.40.12 ; extra == 'mistralai'
64
63
  Requires-Dist: opentelemetry-instrumentation-ollama>=0.40.12 ; extra == 'ollama'
65
- Requires-Dist: opentelemetry-instrumentation-openai>=0.40.12 ; extra == 'openai'
66
64
  Requires-Dist: opentelemetry-instrumentation-pinecone>=0.40.12 ; extra == 'pinecone'
67
65
  Requires-Dist: opentelemetry-instrumentation-qdrant>=0.40.12 ; extra == 'qdrant'
68
66
  Requires-Dist: opentelemetry-instrumentation-replicate>=0.40.12 ; extra == 'replicate'
@@ -91,7 +89,6 @@ Provides-Extra: mcp
91
89
  Provides-Extra: milvus
92
90
  Provides-Extra: mistralai
93
91
  Provides-Extra: ollama
94
- Provides-Extra: openai
95
92
  Provides-Extra: pinecone
96
93
  Provides-Extra: qdrant
97
94
  Provides-Extra: replicate
@@ -5,15 +5,32 @@ lmnr/opentelemetry_lib/__init__.py,sha256=6962aca915d485586ed814b9e799ced898594a
5
5
  lmnr/opentelemetry_lib/decorators/__init__.py,sha256=e391d5a189c70b563d0ff552922a036ea0f7826e113c2e6c2a8ceda26048e63f,8496
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/google_genai/__init__.py,sha256=9a5b624c35420b232e85036ea0b1ef6e583d3b95f49dc1bac4dddfd68a527905,18613
8
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/__init__.py,sha256=8eb4abc2a96aa09ab9104d74ae508ea9ea6a6cbf60f8cd333b4c15c425db48e8,20166
9
9
  lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/config.py,sha256=db9cdebc9ee0dccb493ffe608eede3047efec20ed26c3924b72b2e50edbd92c2,245
10
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/schema_utils.py,sha256=857a6bc52f8bfd4da72786173615d31faaf3f9378f8f6150ffe8f6f9c4bb78f9,685
10
11
  lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/utils.py,sha256=f1248196246826d899304e510c4c2df74088d8169d28f1d0aed578a7a6c3cbfd,7669
11
12
  lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/__init__.py,sha256=272bfd92865d180e3ea13681ec04c1ec3697eda34e63edd83862f8c17d1cecf3,3107
12
13
  lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/utils.py,sha256=9dff6c2595e79edb38818668aed1220efc188d8a982594c04f4ceeb6e3ff47a6,1512
14
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/__init__.py,sha256=8b91dc16af927eee75b969c0980c606680b347a87f8533bc0f4a092e5ec6e5c9,2071
15
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/__init__.py,sha256=dcc910aa6df02263cad89c1feac2aa21e316fdd6b491ebca2b93fd24a5149625,14911
16
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/chat_wrappers.py,sha256=15a1236b0b383089f4ddf8bef50ccab48e57d01fa403b1f6008922980d931f46,33422
17
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/completion_wrappers.py,sha256=cb72111e7a5a7a13920b79b6f76bb504e54ece81855dc997978fdbdd11d36f85,9180
18
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/config.py,sha256=8016e4af0291a77484ce88d7d1ca06146b1229ae0e0a0f46e042faf75b456a8f,507
19
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py,sha256=345c4c795019418b9c7cbf4e571689b566f2b0e350579b48fd2f5f2535351586,9076
20
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_emitter.py,sha256=9c96455b5ca2064dd3a9fb570d78b14ebbdf3d02f8e33255ee9e301c31336c9e,3043
21
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_models.py,sha256=3c27c21b1aeb02bc19a91fb8c05717ae1c10ab4b01300c664aba42e0f50cb5a3,876
22
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/image_gen_wrappers.py,sha256=9650a0e4ad2d3bfb2a072590da189bcf4f807aca070945af26a9f9b99d779b77,2021
23
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/utils.py,sha256=88796cca1f8ee07c5face21e1fbe66f572191cecc2c93c62c22f84ee5a47e299,4727
24
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v0/__init__.py,sha256=7f43421e052bd8f64d5d5b03170a3b7187c2ce038362fa15b5d1d0c43bc1a40d,6143
25
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/__init__.py,sha256=662afd935c52b42512280614bf502554389c8854ab1256efbfde03fe364dac64,12932
26
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py,sha256=8f36cb3eeeead7abdfa43bca3fdf73fdf2fba562bb1a746225696a2b2dde4f50,10111
27
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py,sha256=18d106e77f26ebb233bf3379edf3116540891d643be72be73ea47be3724a89b8,4211
28
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/responses_wrappers.py,sha256=84842236814038421c7d2fa5bd15361a8c0ad625a81b1cd963a351399fec9efb,23733
29
+ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/version.py,sha256=4f39aaa913f3e49b0c174bc23028687d00bfaffc745bd3fe241e0ae6b442bed1,24
13
30
  lmnr/opentelemetry_lib/opentelemetry/instrumentation/opentelemetry/__init__.py,sha256=1f86cdf738e2f68586b0a4569bb1e40edddd85c529f511ef49945ddb7b61fab5,2648
14
31
  lmnr/opentelemetry_lib/opentelemetry/instrumentation/skyvern/__init__.py,sha256=764e4fe979fb08d7821419a3cc5c3ae89a6664b626ef928259f8f175c939eaea,6334
15
32
  lmnr/opentelemetry_lib/tracing/__init__.py,sha256=dbb4288007be687cab56be9be7af8376e526d0a104db82b5695d9ed67a2e4cd8,6007
16
- lmnr/opentelemetry_lib/tracing/_instrument_initializers.py,sha256=2feb6f91b08ee9cc74348df113eb5156d45de40d8d0a5c117790c4f7158193ca,15209
33
+ lmnr/opentelemetry_lib/tracing/_instrument_initializers.py,sha256=53444be1c6c1f9c5acc3291a4984222519d3237abf9ed1c9296b438776e7ec36,15110
17
34
  lmnr/opentelemetry_lib/tracing/attributes.py,sha256=32fa30565b977c2a92202dc2bf1ded583a81d02a6bf5ba52958f75a8be08cbbe,1497
18
35
  lmnr/opentelemetry_lib/tracing/context_properties.py,sha256=6966ef31d581e10eeea9cd06192b237115cc4dc3b5f1a58e68865edd0c92fda0,2314
19
36
  lmnr/opentelemetry_lib/tracing/exporter.py,sha256=6af8e61fd873e8f5db315d9b9f1edbf46b860ba7e50140f0bdcc6864c6d35a03,2082
@@ -26,26 +43,28 @@ lmnr/opentelemetry_lib/utils/package_check.py,sha256=493d81bc3c6dd1b6b1fa287d17d
26
43
  lmnr/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
27
44
  lmnr/sdk/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
28
45
  lmnr/sdk/browser/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
29
- lmnr/sdk/browser/browser_use_otel.py,sha256=2fc7e6fe93808ba5e4b92103e214c822dcc0fc150c623ed8bcdec1805b076430,5093
30
- lmnr/sdk/browser/patchright_otel.py,sha256=3bb9f5741fccc3efcbef4ce2d33aa99c51622ae4cf104a4eeebcb589ae885d64,5454
31
- lmnr/sdk/browser/playwright_otel.py,sha256=2c58358895db7b3f8112010863d79a3bfd93dae47a4b1c9f14be3a7c7712ecc8,13423
32
- lmnr/sdk/browser/pw_utils.py,sha256=3cf55d784e9157e9fb75edc0a6e115aa34d7adb909c6d18eb19e3b09ef8d9dad,10307
46
+ lmnr/sdk/browser/browser_use_otel.py,sha256=aa7470285eb09648f9bf2f3f8fb4409b0ca68ab1cc545d37914a9ac04cc0048e,5092
47
+ lmnr/sdk/browser/patchright_otel.py,sha256=e72b5c42ffa2fd4107aa630b6d1253f18fbda4cef84396538a3e0ccefaa03e47,5079
48
+ lmnr/sdk/browser/playwright_otel.py,sha256=59f477e921e777d49ccda4ef1017a50bb5584fd901cf7d9ed7889468f0586a16,9470
49
+ lmnr/sdk/browser/pw_utils.py,sha256=81bb14ffc53c47a72961e8d1e231efc473f9b2cb7e2992e97751e8dad0e69184,11009
33
50
  lmnr/sdk/browser/rrweb/rrweb.umd.min.cjs,sha256=2f2da38b00bb85312d8225f3069a09352135564ceed2564f652f1bae3bac016d,260896
34
51
  lmnr/sdk/browser/utils.py,sha256=4a668776d2938108d25fbcecd61c8e1710a4da3e56230d5fefca5964dd09e3c1,2371
35
- lmnr/sdk/client/asynchronous/async_client.py,sha256=da621ecd403352baa4e6d0999737e4203e0dcc8cbf26ec8142d0c2013fb632ba,4585
36
- lmnr/sdk/client/asynchronous/resources/__init__.py,sha256=f5f923955252f338670932138e1a30d7bde984175997289a7be5f42dc4d25aa3,381
52
+ lmnr/sdk/client/asynchronous/async_client.py,sha256=e8feae007506cd2e4b08e72706f5f1bb4ea54492b4aa6b68ef184a129de8f466,4948
53
+ lmnr/sdk/client/asynchronous/resources/__init__.py,sha256=993423ea462aa8ea37d8d91662341c1ca0711cb2447cd476aacc373858f76135,481
37
54
  lmnr/sdk/client/asynchronous/resources/agent.py,sha256=3a78372b62912cdeda831d7ff9a671306713fce185dff646b452e6f1a3cc6d8c,17788
38
55
  lmnr/sdk/client/asynchronous/resources/base.py,sha256=689e37435ae5b60db7210688e1e79a64a724c554e00d46c226b0a18500941281,986
39
56
  lmnr/sdk/client/asynchronous/resources/browser_events.py,sha256=4fe0d46db01f310d95aa255f815a65c6e4da259ba835c0b53ba442c5d7f0ed44,1163
40
57
  lmnr/sdk/client/asynchronous/resources/evals.py,sha256=8c6f8096916657ef269463b2d0585795d9cedad056a047abcde6365ff0b320bd,5761
41
- lmnr/sdk/client/asynchronous/resources/tags.py,sha256=55bb01329d76d1dffc76b185af539ba78c52464b733c2fb790e61c6e5667bca0,2565
42
- lmnr/sdk/client/synchronous/resources/__init__.py,sha256=8431b234045d1b7276e652c03fc26794447bafc24bf8942e3cdd717617a20b0e,318
58
+ lmnr/sdk/client/asynchronous/resources/evaluators.py,sha256=964046f5146e89032fbb701b883f4f3a7cb996aeb9ff368f86e8f967df2fef10,2918
59
+ lmnr/sdk/client/asynchronous/resources/tags.py,sha256=14fc2e38cae2f6fe126dc8dca085d7ad02d8d7c1a09bc4b5b5b8e38a0edf7348,2314
60
+ lmnr/sdk/client/synchronous/resources/__init__.py,sha256=685792a8c8494ea061592b86cb63d6bb0dca8d9848181aa11b7d97d5714df337,403
43
61
  lmnr/sdk/client/synchronous/resources/agent.py,sha256=9a74eeeada0dd8b6e0984850fa6759d02ccd02792b1a292caf2b34032330cf60,17809
44
62
  lmnr/sdk/client/synchronous/resources/base.py,sha256=9ded59675d1498d90cac4095bc295c1097dc1499521af697382f0aea66533dd6,971
45
63
  lmnr/sdk/client/synchronous/resources/browser_events.py,sha256=f6b1585997ac5d0a269c581b679f74b4614c4da363d0e0334fd45c1700fcabf6,1135
46
64
  lmnr/sdk/client/synchronous/resources/evals.py,sha256=415fefe234519f8affb24d858efa9d6c0735f966b6194977a96ac2ce16d066c0,7008
47
- lmnr/sdk/client/synchronous/resources/tags.py,sha256=70d304ccc0e194136923b278c7ac6414000d88d4aaf95baeff38b934f93691c0,2485
48
- lmnr/sdk/client/synchronous/sync_client.py,sha256=208ce3fa60301c7a11b945fd2a426daf34c68b950eca06c0f30880f40ab37f61,4907
65
+ lmnr/sdk/client/synchronous/resources/evaluators.py,sha256=3cd6a17e7a9cc0441c2d20bf6cf46ce3720131cc30053e2cd124e5668c75f49a,2879
66
+ lmnr/sdk/client/synchronous/resources/tags.py,sha256=123deec43128662c21cb275b2df6a102372f875315b0bd36806555394c1d4b5b,2270
67
+ lmnr/sdk/client/synchronous/sync_client.py,sha256=0bebe88e3aed689505e9ed3d32036f76df4c3496e4d659162bd41abedc026f16,5299
49
68
  lmnr/sdk/datasets.py,sha256=3fd851c5f97bf88eaa84b1451a053eaff23b4497cbb45eac2f9ea0e5f2886c00,1708
50
69
  lmnr/sdk/decorators.py,sha256=d6ebbdc7105881b945aa5850a87d7b71962aedb69b026075944b6f0604ec3f41,4468
51
70
  lmnr/sdk/eval_control.py,sha256=291394ac385c653ae9b5167e871bebeb4fe8fc6b7ff2ed38e636f87015dcba86,184
@@ -53,9 +72,9 @@ lmnr/sdk/evaluations.py,sha256=ad40c6a48d5e34aa33f3d9ad80514f2055e7eb360b820697b
53
72
  lmnr/sdk/laminar.py,sha256=a0e55ca3f73d66cb53ef51ecaae1ac81bb45ba65ddd848f3d2b97faa998c9535,33996
54
73
  lmnr/sdk/log.py,sha256=9edfd83263f0d4845b1b2d1beeae2b4ed3f8628de941f371a893d72b79c348d4,2213
55
74
  lmnr/sdk/types.py,sha256=650a7949e609359b0adcaadb49e5cf63fc67ea61a35b9992c3f8b445dfce6b89,12328
56
- lmnr/sdk/utils.py,sha256=cab707221a000dff65587f6a25664c9a445662f7740eec4f48b3f7998e98170d,4327
57
- lmnr/version.py,sha256=3439c6e1a1ba1d0ed47daa6f0743e61f79d1a00ecc6864889dc9b73b8291af38,1322
58
- lmnr-0.6.18.dist-info/WHEEL,sha256=607c46fee47e440c91332c738096ff0f5e54ca3b0818ee85462dd5172a38e793,79
59
- lmnr-0.6.18.dist-info/entry_points.txt,sha256=abdf3411b7dd2d7329a241f2da6669bab4e314a747a586ecdb9f888f3035003c,39
60
- lmnr-0.6.18.dist-info/METADATA,sha256=7cd9d0c84424f2ef5bbfc6571ed8725017f141e3e4f0bfe93bd84119ec803ee5,14657
61
- lmnr-0.6.18.dist-info/RECORD,,
75
+ lmnr/sdk/utils.py,sha256=4beb884ae6fbbc7d8cf639b036b726ea6a2a658f0a6386faf5735a13d706a2d8,5039
76
+ lmnr/version.py,sha256=fec940af89e4f538f3f2c79e3670aaf085c8fa8edd10da2a292bcd224a3f2a26,1322
77
+ lmnr-0.6.20.dist-info/WHEEL,sha256=66530aef82d5020ef5af27ae0123c71abb9261377c5bc519376c671346b12918,79
78
+ lmnr-0.6.20.dist-info/entry_points.txt,sha256=abdf3411b7dd2d7329a241f2da6669bab4e314a747a586ecdb9f888f3035003c,39
79
+ lmnr-0.6.20.dist-info/METADATA,sha256=dd5758deaf108a40ec4b216482914e90f414199c716887e94af4328b74a32878,14475
80
+ lmnr-0.6.20.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: uv 0.7.19
2
+ Generator: uv 0.7.20
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any