lmnr 0.6.19__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/client/asynchronous/async_client.py +13 -0
- lmnr/sdk/client/asynchronous/resources/__init__.py +2 -0
- lmnr/sdk/client/asynchronous/resources/evaluators.py +85 -0
- lmnr/sdk/client/asynchronous/resources/tags.py +4 -10
- lmnr/sdk/client/synchronous/resources/__init__.py +2 -1
- lmnr/sdk/client/synchronous/resources/evaluators.py +85 -0
- lmnr/sdk/client/synchronous/resources/tags.py +4 -10
- lmnr/sdk/client/synchronous/sync_client.py +14 -0
- lmnr/sdk/decorators.py +39 -4
- lmnr/sdk/evaluations.py +23 -9
- lmnr/sdk/laminar.py +75 -48
- lmnr/sdk/utils.py +23 -0
- lmnr/version.py +1 -1
- {lmnr-0.6.19.dist-info → lmnr-0.6.21.dist-info}/METADATA +8 -7
- {lmnr-0.6.19.dist-info → lmnr-0.6.21.dist-info}/RECORD +42 -25
- {lmnr-0.6.19.dist-info → lmnr-0.6.21.dist-info}/WHEEL +1 -1
- {lmnr-0.6.19.dist-info → lmnr-0.6.21.dist-info}/entry_points.txt +0 -0
@@ -2,7 +2,12 @@ import logging
|
|
2
2
|
import uuid
|
3
3
|
|
4
4
|
from lmnr.opentelemetry_lib.utils.package_check import is_package_installed
|
5
|
-
from lmnr.sdk.browser.pw_utils import
|
5
|
+
from lmnr.sdk.browser.pw_utils import (
|
6
|
+
start_recording_events_async,
|
7
|
+
start_recording_events_sync,
|
8
|
+
take_full_snapshot,
|
9
|
+
take_full_snapshot_async,
|
10
|
+
)
|
6
11
|
from lmnr.sdk.browser.utils import with_tracer_and_client_wrapper
|
7
12
|
from lmnr.sdk.client.asynchronous.async_client import AsyncLaminarClient
|
8
13
|
from lmnr.sdk.client.synchronous.sync_client import LaminarClient
|
@@ -19,18 +24,16 @@ from wrapt import wrap_function_wrapper
|
|
19
24
|
|
20
25
|
try:
|
21
26
|
if is_package_installed("playwright"):
|
22
|
-
from playwright.async_api import Browser, BrowserContext
|
27
|
+
from playwright.async_api import Browser, BrowserContext
|
23
28
|
from playwright.sync_api import (
|
24
29
|
Browser as SyncBrowser,
|
25
30
|
BrowserContext as SyncBrowserContext,
|
26
|
-
Page as SyncPage,
|
27
31
|
)
|
28
32
|
elif is_package_installed("patchright"):
|
29
|
-
from patchright.async_api import Browser, BrowserContext
|
33
|
+
from patchright.async_api import Browser, BrowserContext
|
30
34
|
from patchright.sync_api import (
|
31
35
|
Browser as SyncBrowser,
|
32
36
|
BrowserContext as SyncBrowserContext,
|
33
|
-
Page as SyncPage,
|
34
37
|
)
|
35
38
|
else:
|
36
39
|
raise ImportError(
|
@@ -50,44 +53,18 @@ _instruments = ("playwright >= 1.9.0",)
|
|
50
53
|
logger = logging.getLogger(__name__)
|
51
54
|
|
52
55
|
|
53
|
-
@with_tracer_and_client_wrapper
|
54
|
-
def _wrap_new_page(
|
55
|
-
tracer: Tracer, client: LaminarClient, to_wrap, wrapped, instance, args, kwargs
|
56
|
-
):
|
57
|
-
page = wrapped(*args, **kwargs)
|
58
|
-
session_id = str(uuid.uuid4().hex)
|
59
|
-
handle_navigation_sync(page, session_id, client)
|
60
|
-
return page
|
61
|
-
|
62
|
-
|
63
|
-
@with_tracer_and_client_wrapper
|
64
|
-
async def _wrap_new_page_async(
|
65
|
-
tracer: Tracer, client: AsyncLaminarClient, to_wrap, wrapped, instance, args, kwargs
|
66
|
-
):
|
67
|
-
page = await wrapped(*args, **kwargs)
|
68
|
-
session_id = str(uuid.uuid4().hex)
|
69
|
-
await handle_navigation_async(page, session_id, client)
|
70
|
-
return page
|
71
|
-
|
72
|
-
|
73
56
|
@with_tracer_and_client_wrapper
|
74
57
|
def _wrap_new_browser_sync(
|
75
58
|
tracer: Tracer, client: LaminarClient, to_wrap, wrapped, instance, args, kwargs
|
76
59
|
):
|
77
60
|
browser: SyncBrowser = wrapped(*args, **kwargs)
|
78
61
|
session_id = str(uuid.uuid4().hex)
|
79
|
-
for context in browser.contexts:
|
80
|
-
|
81
|
-
def handle_page_navigation(page: SyncPage):
|
82
|
-
return handle_navigation_sync(page, session_id, client)
|
83
|
-
|
84
|
-
context.on(
|
85
|
-
"page",
|
86
|
-
handle_page_navigation,
|
87
|
-
)
|
88
62
|
|
63
|
+
for context in browser.contexts:
|
64
|
+
context.on("page", lambda p: start_recording_events_sync(p, session_id, client))
|
89
65
|
for page in context.pages:
|
90
|
-
|
66
|
+
start_recording_events_sync(page, session_id, client)
|
67
|
+
|
91
68
|
return browser
|
92
69
|
|
93
70
|
|
@@ -97,14 +74,13 @@ async def _wrap_new_browser_async(
|
|
97
74
|
):
|
98
75
|
browser: Browser = await wrapped(*args, **kwargs)
|
99
76
|
session_id = str(uuid.uuid4().hex)
|
100
|
-
for context in browser.contexts:
|
101
77
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
78
|
+
for context in browser.contexts:
|
79
|
+
context.on(
|
80
|
+
"page", lambda p: start_recording_events_async(p, session_id, client)
|
81
|
+
)
|
106
82
|
for page in context.pages:
|
107
|
-
await
|
83
|
+
await start_recording_events_async(page, session_id, client)
|
108
84
|
return browser
|
109
85
|
|
110
86
|
|
@@ -115,15 +91,10 @@ def _wrap_new_context_sync(
|
|
115
91
|
context: SyncBrowserContext = wrapped(*args, **kwargs)
|
116
92
|
session_id = str(uuid.uuid4().hex)
|
117
93
|
|
118
|
-
|
119
|
-
return handle_navigation_sync(page, session_id, client)
|
120
|
-
|
121
|
-
context.on(
|
122
|
-
"page",
|
123
|
-
handle_page_navigation,
|
124
|
-
)
|
94
|
+
context.on("page", lambda p: start_recording_events_sync(p, session_id, client))
|
125
95
|
for page in context.pages:
|
126
|
-
|
96
|
+
start_recording_events_sync(page, session_id, client)
|
97
|
+
|
127
98
|
return context
|
128
99
|
|
129
100
|
|
@@ -134,28 +105,30 @@ async def _wrap_new_context_async(
|
|
134
105
|
context: BrowserContext = await wrapped(*args, **kwargs)
|
135
106
|
session_id = str(uuid.uuid4().hex)
|
136
107
|
|
137
|
-
|
138
|
-
return await handle_navigation_async(page, session_id, client)
|
139
|
-
|
140
|
-
context.on("page", handle_page_navigation)
|
108
|
+
context.on("page", lambda p: start_recording_events_async(p, session_id, client))
|
141
109
|
for page in context.pages:
|
142
|
-
await
|
110
|
+
await start_recording_events_async(page, session_id, client)
|
111
|
+
|
143
112
|
return context
|
144
113
|
|
145
114
|
|
115
|
+
@with_tracer_and_client_wrapper
|
116
|
+
def _wrap_bring_to_front_sync(
|
117
|
+
tracer: Tracer, client: LaminarClient, to_wrap, wrapped, instance, args, kwargs
|
118
|
+
):
|
119
|
+
wrapped(*args, **kwargs)
|
120
|
+
take_full_snapshot(instance)
|
121
|
+
|
122
|
+
|
123
|
+
@with_tracer_and_client_wrapper
|
124
|
+
async def _wrap_bring_to_front_async(
|
125
|
+
tracer: Tracer, client: AsyncLaminarClient, to_wrap, wrapped, instance, args, kwargs
|
126
|
+
):
|
127
|
+
await wrapped(*args, **kwargs)
|
128
|
+
await take_full_snapshot_async(instance)
|
129
|
+
|
130
|
+
|
146
131
|
WRAPPED_METHODS = [
|
147
|
-
{
|
148
|
-
"package": "playwright.sync_api",
|
149
|
-
"object": "BrowserContext",
|
150
|
-
"method": "new_page",
|
151
|
-
"wrapper": _wrap_new_page,
|
152
|
-
},
|
153
|
-
{
|
154
|
-
"package": "playwright.sync_api",
|
155
|
-
"object": "Browser",
|
156
|
-
"method": "new_page",
|
157
|
-
"wrapper": _wrap_new_page,
|
158
|
-
},
|
159
132
|
{
|
160
133
|
"package": "playwright.sync_api",
|
161
134
|
"object": "BrowserType",
|
@@ -186,21 +159,15 @@ WRAPPED_METHODS = [
|
|
186
159
|
"method": "launch_persistent_context",
|
187
160
|
"wrapper": _wrap_new_context_sync,
|
188
161
|
},
|
162
|
+
{
|
163
|
+
"package": "playwright.sync_api",
|
164
|
+
"object": "Page",
|
165
|
+
"method": "bring_to_front",
|
166
|
+
"wrapper": _wrap_bring_to_front_sync,
|
167
|
+
},
|
189
168
|
]
|
190
169
|
|
191
170
|
WRAPPED_METHODS_ASYNC = [
|
192
|
-
{
|
193
|
-
"package": "playwright.async_api",
|
194
|
-
"object": "BrowserContext",
|
195
|
-
"method": "new_page",
|
196
|
-
"wrapper": _wrap_new_page_async,
|
197
|
-
},
|
198
|
-
{
|
199
|
-
"package": "playwright.async_api",
|
200
|
-
"object": "Browser",
|
201
|
-
"method": "new_page",
|
202
|
-
"wrapper": _wrap_new_page_async,
|
203
|
-
},
|
204
171
|
{
|
205
172
|
"package": "playwright.async_api",
|
206
173
|
"object": "BrowserType",
|
@@ -231,6 +198,12 @@ WRAPPED_METHODS_ASYNC = [
|
|
231
198
|
"method": "launch_persistent_context",
|
232
199
|
"wrapper": _wrap_new_context_async,
|
233
200
|
},
|
201
|
+
{
|
202
|
+
"package": "playwright.async_api",
|
203
|
+
"object": "Page",
|
204
|
+
"method": "bring_to_front",
|
205
|
+
"wrapper": _wrap_bring_to_front_async,
|
206
|
+
},
|
234
207
|
]
|
235
208
|
|
236
209
|
|