lmnr 0.6.5__tar.gz → 0.6.7__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.6.5 → lmnr-0.6.7}/PKG-INFO +2 -2
- {lmnr-0.6.5 → lmnr-0.6.7}/pyproject.toml +4 -3
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/cli.py +44 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/version.py +1 -1
- {lmnr-0.6.5 → lmnr-0.6.7}/LICENSE +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/README.md +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/__init__.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/.flake8 +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/__init__.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/decorators/__init__.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/__init__.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/config.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/utils.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/tracing/__init__.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/tracing/_instrument_initializers.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/tracing/attributes.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/tracing/context_properties.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/tracing/exporter.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/tracing/instruments.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/tracing/processor.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/tracing/tracer.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/utils/__init__.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/utils/json_encoder.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/opentelemetry_lib/utils/package_check.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/py.typed +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/__init__.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/browser/__init__.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/browser/browser_use_otel.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/browser/patchright_otel.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/browser/playwright_otel.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/browser/pw_utils.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/browser/rrweb/rrweb.umd.min.cjs +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/browser/utils.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/asynchronous/async_client.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/asynchronous/resources/__init__.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/asynchronous/resources/agent.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/asynchronous/resources/base.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/asynchronous/resources/browser_events.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/asynchronous/resources/evals.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/asynchronous/resources/tags.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/synchronous/resources/__init__.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/synchronous/resources/agent.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/synchronous/resources/base.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/synchronous/resources/browser_events.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/synchronous/resources/evals.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/synchronous/resources/tags.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/client/synchronous/sync_client.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/datasets.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/decorators.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/eval_control.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/evaluations.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/laminar.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/log.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/types.py +0 -0
- {lmnr-0.6.5 → lmnr-0.6.7}/src/lmnr/sdk/utils.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: lmnr
|
3
|
-
Version: 0.6.
|
3
|
+
Version: 0.6.7
|
4
4
|
Summary: Python SDK for Laminar
|
5
5
|
License: Apache-2.0
|
6
6
|
Author: lmnr.ai
|
@@ -41,7 +41,7 @@ Provides-Extra: vertexai
|
|
41
41
|
Provides-Extra: watsonx
|
42
42
|
Provides-Extra: weaviate
|
43
43
|
Requires-Dist: argparse (>=1.0)
|
44
|
-
Requires-Dist: grpcio (
|
44
|
+
Requires-Dist: grpcio (>=1)
|
45
45
|
Requires-Dist: httpx (>=0.25.0)
|
46
46
|
Requires-Dist: opentelemetry-api (>=1.33.0)
|
47
47
|
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc (>=1.33.0)
|
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
[project]
|
8
8
|
name = "lmnr"
|
9
|
-
version = "0.6.
|
9
|
+
version = "0.6.7"
|
10
10
|
description = "Python SDK for Laminar"
|
11
11
|
authors = [
|
12
12
|
{ name = "lmnr.ai", email = "founders@lmnr.ai" }
|
@@ -26,15 +26,16 @@ dependencies = [
|
|
26
26
|
"tqdm (>=4.0)",
|
27
27
|
"argparse (>=1.0)",
|
28
28
|
"tenacity (>=8.0)",
|
29
|
-
#
|
29
|
+
# Since 1.68.0, grpcio writes a warning message
|
30
30
|
# that looks scary, but is harmless.
|
31
31
|
# WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
|
32
32
|
# E0000 00:00:1737439981.199902 9456033 init.cc:229] grpc_wait_for_shutdown_with_timeout() timed out.
|
33
33
|
#
|
34
|
+
# Remove this comment when we make sure that grpcio has resolved this.
|
34
35
|
# Related issue:
|
35
36
|
# https://discuss.ai.google.dev/t/warning-all-log-messages-before-absl-initializelog-is-called-are-written-to-stderr-e0000-001731955515-629532-17124-init-cc-229-grpc-wait-for-shutdown-with-timeout-timed-out/50020
|
36
37
|
# https://github.com/grpc/grpc/issues/38490
|
37
|
-
"grpcio
|
38
|
+
"grpcio>=1",
|
38
39
|
"httpx>=0.25.0",
|
39
40
|
"opentelemetry-instrumentation-threading>=0.54b0",
|
40
41
|
]
|
@@ -4,6 +4,9 @@ import importlib.util
|
|
4
4
|
import os
|
5
5
|
import re
|
6
6
|
import sys
|
7
|
+
import urllib.request
|
8
|
+
import urllib.error
|
9
|
+
from pathlib import Path
|
7
10
|
|
8
11
|
from lmnr.sdk.evaluations import Evaluation
|
9
12
|
|
@@ -16,6 +19,39 @@ LOG = get_default_logger(__name__)
|
|
16
19
|
EVAL_DIR = "evals"
|
17
20
|
|
18
21
|
|
22
|
+
def add_cursor_rules():
|
23
|
+
"""Download laminar.mdc file from a hardcoded public URL and save it to .cursor/rules/laminar.mdc"""
|
24
|
+
# Hardcoded URL for the laminar.mdc file
|
25
|
+
url = "https://raw.githubusercontent.com/lmnr-ai/lmnr/dev/rules/laminar.mdc"
|
26
|
+
|
27
|
+
# Create .cursor/rules directory if it doesn't exist
|
28
|
+
rules_dir = Path(".cursor/rules")
|
29
|
+
rules_dir.mkdir(parents=True, exist_ok=True)
|
30
|
+
|
31
|
+
# Define the target file path
|
32
|
+
target_file = rules_dir / "laminar.mdc"
|
33
|
+
|
34
|
+
try:
|
35
|
+
LOG.info(f"Downloading laminar.mdc from {url}")
|
36
|
+
|
37
|
+
# Download the file
|
38
|
+
with urllib.request.urlopen(url) as response:
|
39
|
+
content = response.read()
|
40
|
+
|
41
|
+
# Write the content to the target file (this will overwrite if it exists)
|
42
|
+
with open(target_file, 'wb') as f:
|
43
|
+
f.write(content)
|
44
|
+
|
45
|
+
LOG.info(f"Successfully downloaded laminar.mdc to {target_file}")
|
46
|
+
|
47
|
+
except urllib.error.URLError as e:
|
48
|
+
LOG.error(f"Failed to download file from {url}: {e}")
|
49
|
+
sys.exit(1)
|
50
|
+
except Exception as e:
|
51
|
+
LOG.error(f"Unexpected error: {e}")
|
52
|
+
sys.exit(1)
|
53
|
+
|
54
|
+
|
19
55
|
async def run_evaluation(args):
|
20
56
|
sys.path.append(os.getcwd())
|
21
57
|
|
@@ -103,8 +139,16 @@ def cli():
|
|
103
139
|
help="Fail on error",
|
104
140
|
)
|
105
141
|
|
142
|
+
parser_download = subparsers.add_parser(
|
143
|
+
"add-cursor-rules",
|
144
|
+
description="Download laminar.mdc file and add it to .cursor/rules",
|
145
|
+
help="Download laminar.mdc file and add it to .cursor/rules",
|
146
|
+
)
|
147
|
+
|
106
148
|
parsed = parser.parse_args()
|
107
149
|
if parsed.subcommand == "eval":
|
108
150
|
asyncio.run(run_evaluation(parsed))
|
151
|
+
elif parsed.subcommand == "add-cursor-rules":
|
152
|
+
add_cursor_rules()
|
109
153
|
else:
|
110
154
|
parser.print_help()
|
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
|