lmnr 0.7.7__tar.gz → 0.7.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lmnr-0.7.7 → lmnr-0.7.8}/PKG-INFO +1 -1
- {lmnr-0.7.7 → lmnr-0.7.8}/pyproject.toml +6 -6
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/__init__.py +9 -6
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/version.py +1 -1
- {lmnr-0.7.7 → lmnr-0.7.8}/README.md +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/cli.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/.flake8 +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/decorators/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/litellm/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/litellm/utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/config.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/event_emitter.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/event_models.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/span_utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/streaming.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/version.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/config.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/schema_utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/config.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/event_emitter.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/event_models.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/span_utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/version.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/chat_wrappers.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/completion_wrappers.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/config.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_emitter.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_models.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/image_gen_wrappers.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v0/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/responses_wrappers.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/version.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openhands_ai/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/opentelemetry/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/skyvern/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/threading/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/tracing/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/tracing/_instrument_initializers.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/tracing/attributes.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/tracing/context.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/tracing/exporter.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/tracing/instruments.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/tracing/processor.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/tracing/tracer.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/utils/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/utils/json_encoder.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/utils/package_check.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/utils/wrappers.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/py.typed +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/browser/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/browser/browser_use_cdp_otel.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/browser/browser_use_otel.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/browser/cdp_utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/browser/patchright_otel.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/browser/playwright_otel.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/browser/pw_utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/browser/recorder/record.umd.min.cjs +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/browser/utils.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/asynchronous/async_client.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/asynchronous/resources/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/asynchronous/resources/agent.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/asynchronous/resources/base.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/asynchronous/resources/browser_events.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/asynchronous/resources/evals.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/asynchronous/resources/evaluators.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/asynchronous/resources/tags.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/synchronous/resources/__init__.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/synchronous/resources/agent.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/synchronous/resources/base.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/synchronous/resources/browser_events.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/synchronous/resources/evals.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/synchronous/resources/evaluators.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/synchronous/resources/tags.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/client/synchronous/sync_client.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/datasets.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/decorators.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/eval_control.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/evaluations.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/laminar.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/log.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/types.py +0 -0
- {lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/sdk/utils.py +0 -0
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
[project]
|
8
8
|
name = "lmnr"
|
9
|
-
version = "0.7.
|
9
|
+
version = "0.7.8"
|
10
10
|
description = "Python SDK for Laminar"
|
11
11
|
authors = [
|
12
12
|
{ name = "lmnr.ai", email = "founders@lmnr.ai" }
|
@@ -121,21 +121,21 @@ dev = [
|
|
121
121
|
"flake8>=7.2.0",
|
122
122
|
"pytest>=8.3.5",
|
123
123
|
"pytest-sugar>=1.0.0",
|
124
|
-
"pytest-asyncio>=
|
124
|
+
"pytest-asyncio>=1.1.0",
|
125
125
|
"playwright>=1.52.0",
|
126
126
|
"vcrpy>=7.0.0",
|
127
127
|
# litellm breaks with openai>=1.100.0 (as of litellm 1.75.8)
|
128
128
|
"openai>=1.99.7,<1.100.0",
|
129
129
|
"pytest-recording>=0.13.4",
|
130
130
|
"patchright>=1.52.3",
|
131
|
-
"google-genai>=1.
|
131
|
+
"google-genai>=1.31.0",
|
132
132
|
"langgraph>=0.4.8",
|
133
|
-
"langchain-core>=0.3.
|
134
|
-
"langchain>=0.3.
|
133
|
+
"langchain-core>=0.3.75",
|
134
|
+
"langchain>=0.3.27",
|
135
135
|
"litellm>=1.75.8",
|
136
136
|
"groq>=0.30.0",
|
137
137
|
"anthropic>=0.60.0",
|
138
|
-
"langchain-openai>=0.3.
|
138
|
+
"langchain-openai>=0.3.32",
|
139
139
|
]
|
140
140
|
|
141
141
|
[build-system]
|
@@ -375,6 +375,7 @@ def _build_from_streaming_response(
|
|
375
375
|
# total token count in every chunk is greater by prompt token count than it should be,
|
376
376
|
# thus this awkward logic here
|
377
377
|
if aggregated_usage_metadata.get("prompt_token_count") is None:
|
378
|
+
# or 0, not .get(key, 0), because sometimes the value is explicitly None
|
378
379
|
aggregated_usage_metadata["prompt_token_count"] = (
|
379
380
|
usage_dict.get("prompt_token_count") or 0
|
380
381
|
)
|
@@ -417,14 +418,15 @@ async def _abuild_from_streaming_response(
|
|
417
418
|
aggregated_usage_metadata = defaultdict(int)
|
418
419
|
model_version = None
|
419
420
|
async for chunk in response:
|
421
|
+
if chunk.model_version:
|
422
|
+
model_version = chunk.model_version
|
423
|
+
|
420
424
|
if chunk.candidates:
|
421
425
|
# Currently gemini throws an error if you pass more than one candidate
|
422
426
|
# with streaming
|
423
427
|
if chunk.candidates and len(chunk.candidates) > 0:
|
424
428
|
final_parts += chunk.candidates[0].content.parts or []
|
425
429
|
role = chunk.candidates[0].content.role or role
|
426
|
-
if chunk.model_version:
|
427
|
-
model_version = chunk.model_version
|
428
430
|
if chunk.usage_metadata:
|
429
431
|
usage_dict = to_dict(chunk.usage_metadata)
|
430
432
|
# prompt token count is sent in every chunk
|
@@ -432,11 +434,12 @@ async def _abuild_from_streaming_response(
|
|
432
434
|
# total token count in every chunk is greater by prompt token count than it should be,
|
433
435
|
# thus this awkward logic here
|
434
436
|
if aggregated_usage_metadata.get("prompt_token_count") is None:
|
435
|
-
|
436
|
-
|
437
|
+
# or 0, not .get(key, 0), because sometimes the value is explicitly None
|
438
|
+
aggregated_usage_metadata["prompt_token_count"] = (
|
439
|
+
usage_dict.get("prompt_token_count") or 0
|
437
440
|
)
|
438
|
-
aggregated_usage_metadata["total_token_count"] =
|
439
|
-
"total_token_count"
|
441
|
+
aggregated_usage_metadata["total_token_count"] = (
|
442
|
+
usage_dict.get("total_token_count") or 0
|
440
443
|
)
|
441
444
|
aggregated_usage_metadata["candidates_token_count"] += (
|
442
445
|
usage_dict.get("candidates_token_count") or 0
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/__init__.py
RENAMED
File without changes
|
{lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/config.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/utils.py
RENAMED
File without changes
|
{lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/version.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/utils.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{lmnr-0.7.7 → lmnr-0.7.8}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/version.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|