lmnr 0.7.5__py3-none-any.whl → 0.7.6__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/litellm/__init__.py +15 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/__init__.py +33 -23
- lmnr/opentelemetry_lib/tracing/_instrument_initializers.py +1 -1
- lmnr/sdk/browser/browser_use_cdp_otel.py +2 -2
- lmnr/version.py +1 -1
- {lmnr-0.7.5.dist-info → lmnr-0.7.6.dist-info}/METADATA +1 -1
- {lmnr-0.7.5.dist-info → lmnr-0.7.6.dist-info}/RECORD +9 -9
- {lmnr-0.7.5.dist-info → lmnr-0.7.6.dist-info}/WHEEL +0 -0
- {lmnr-0.7.5.dist-info → lmnr-0.7.6.dist-info}/entry_points.txt +0 -0
@@ -11,6 +11,10 @@ from lmnr.opentelemetry_lib.tracing.context import get_event_attributes_from_con
|
|
11
11
|
from lmnr.opentelemetry_lib.utils.package_check import is_package_installed
|
12
12
|
from lmnr.sdk.log import get_default_logger
|
13
13
|
|
14
|
+
from lmnr.opentelemetry_lib.opentelemetry.instrumentation.openai import (
|
15
|
+
OpenAIInstrumentor,
|
16
|
+
)
|
17
|
+
|
14
18
|
logger = get_default_logger(__name__)
|
15
19
|
|
16
20
|
SUPPORTED_CALL_TYPES = ["completion", "acompletion"]
|
@@ -41,6 +45,17 @@ try:
|
|
41
45
|
if not hasattr(TracerWrapper, "instance") or TracerWrapper.instance is None:
|
42
46
|
raise ValueError("Laminar must be initialized before LiteLLM callback")
|
43
47
|
|
48
|
+
if is_package_installed("openai"):
|
49
|
+
openai_instrumentor = OpenAIInstrumentor()
|
50
|
+
if (
|
51
|
+
openai_instrumentor
|
52
|
+
and openai_instrumentor.is_instrumented_by_opentelemetry
|
53
|
+
):
|
54
|
+
logger.info(
|
55
|
+
"Disabling OpenTelemetry instrumentation for OpenAI to avoid double-instrumentation of LiteLLM."
|
56
|
+
)
|
57
|
+
openai_instrumentor.uninstrument()
|
58
|
+
|
44
59
|
def _get_tracer(self) -> Tracer:
|
45
60
|
if not hasattr(TracerWrapper, "instance") or TracerWrapper.instance is None:
|
46
61
|
raise ValueError("Laminar must be initialized before LiteLLM callback")
|
@@ -2,6 +2,8 @@ from typing import Collection
|
|
2
2
|
|
3
3
|
from opentelemetry._events import get_event_logger
|
4
4
|
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
5
|
+
|
6
|
+
from lmnr.sdk.log import get_default_logger
|
5
7
|
from ..shared.chat_wrappers import (
|
6
8
|
achat_wrapper,
|
7
9
|
chat_wrapper,
|
@@ -44,6 +46,7 @@ from wrapt import wrap_function_wrapper
|
|
44
46
|
|
45
47
|
|
46
48
|
_instruments = ("openai >= 1.0.0",)
|
49
|
+
logger = get_default_logger(__name__)
|
47
50
|
|
48
51
|
|
49
52
|
class OpenAIV1Instrumentor(BaseInstrumentor):
|
@@ -63,7 +66,8 @@ class OpenAIV1Instrumentor(BaseInstrumentor):
|
|
63
66
|
"""
|
64
67
|
try:
|
65
68
|
wrap_function_wrapper(module, function, wrapper)
|
66
|
-
except (AttributeError, ModuleNotFoundError):
|
69
|
+
except (AttributeError, ModuleNotFoundError, ImportError):
|
70
|
+
logger.debug(f"Failed to wrap {module}.{function}")
|
67
71
|
pass
|
68
72
|
|
69
73
|
def _instrument(self, **kwargs):
|
@@ -331,28 +335,34 @@ class OpenAIV1Instrumentor(BaseInstrumentor):
|
|
331
335
|
)
|
332
336
|
|
333
337
|
def _uninstrument(self, **kwargs):
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
338
|
+
self.try_unwrap("openai.resources.chat.completions.Completions", "create")
|
339
|
+
self.try_unwrap("openai.resources.completions.Completions", "create")
|
340
|
+
self.try_unwrap("openai.resources.embeddings.Embeddings", "create")
|
341
|
+
self.try_unwrap("openai.resources.chat.completions.AsyncCompletions", "create")
|
342
|
+
self.try_unwrap("openai.resources.completions.AsyncCompletions", "create")
|
343
|
+
self.try_unwrap("openai.resources.embeddings.AsyncEmbeddings", "create")
|
344
|
+
self.try_unwrap("openai.resources.images.Images", "generate")
|
345
|
+
self.try_unwrap("openai.resources.chat.completions.Completions", "parse")
|
346
|
+
self.try_unwrap("openai.resources.chat.completions.AsyncCompletions", "parse")
|
347
|
+
self.try_unwrap("openai.resources.beta.assistants.Assistants", "create")
|
348
|
+
self.try_unwrap("openai.resources.beta.chat.completions.Completions", "parse")
|
349
|
+
self.try_unwrap(
|
350
|
+
"openai.resources.beta.chat.completions.AsyncCompletions", "parse"
|
351
|
+
)
|
352
|
+
self.try_unwrap("openai.resources.beta.threads.runs.Runs", "create")
|
353
|
+
self.try_unwrap("openai.resources.beta.threads.runs.Runs", "retrieve")
|
354
|
+
self.try_unwrap("openai.resources.beta.threads.runs.Runs", "create_and_stream")
|
355
|
+
self.try_unwrap("openai.resources.beta.threads.messages.Messages", "list")
|
356
|
+
self.try_unwrap("openai.resources.responses.Responses", "create")
|
357
|
+
self.try_unwrap("openai.resources.responses.Responses", "retrieve")
|
358
|
+
self.try_unwrap("openai.resources.responses.Responses", "cancel")
|
359
|
+
self.try_unwrap("openai.resources.responses.AsyncResponses", "create")
|
360
|
+
self.try_unwrap("openai.resources.responses.AsyncResponses", "retrieve")
|
361
|
+
self.try_unwrap("openai.resources.responses.AsyncResponses", "cancel")
|
341
362
|
|
342
|
-
|
363
|
+
def try_unwrap(self, module, function):
|
343
364
|
try:
|
344
|
-
unwrap(
|
345
|
-
|
346
|
-
|
347
|
-
unwrap("openai.resources.beta.threads.runs", "Runs.create")
|
348
|
-
unwrap("openai.resources.beta.threads.runs", "Runs.retrieve")
|
349
|
-
unwrap("openai.resources.beta.threads.runs", "Runs.create_and_stream")
|
350
|
-
unwrap("openai.resources.beta.threads.messages", "Messages.list")
|
351
|
-
unwrap("openai.resources.responses", "Responses.create")
|
352
|
-
unwrap("openai.resources.responses", "Responses.retrieve")
|
353
|
-
unwrap("openai.resources.responses", "Responses.cancel")
|
354
|
-
unwrap("openai.resources.responses", "AsyncResponses.create")
|
355
|
-
unwrap("openai.resources.responses", "AsyncResponses.retrieve")
|
356
|
-
unwrap("openai.resources.responses", "AsyncResponses.cancel")
|
357
|
-
except ImportError:
|
365
|
+
unwrap(module, function)
|
366
|
+
except (AttributeError, ModuleNotFoundError, ImportError):
|
367
|
+
logger.debug(f"Failed to unwrap {module}.{function}")
|
358
368
|
pass
|
@@ -65,7 +65,7 @@ class BrowserUseInstrumentorInitializer(InstrumentorInitializer):
|
|
65
65
|
|
66
66
|
return BrowserUseLegacyInstrumentor()
|
67
67
|
|
68
|
-
if version and parse(version) >= parse("
|
68
|
+
if version and parse(version) >= parse("0.6.0rc1"):
|
69
69
|
from lmnr.sdk.browser.browser_use_cdp_otel import BrowserUseInstrumentor
|
70
70
|
|
71
71
|
return BrowserUseInstrumentor(async_client)
|
@@ -14,8 +14,8 @@ from typing import Collection
|
|
14
14
|
from wrapt import wrap_function_wrapper
|
15
15
|
import uuid
|
16
16
|
|
17
|
-
# Stable versions, e.g.
|
18
|
-
_instruments = ("browser-use >=
|
17
|
+
# Stable versions, e.g. 0.6.0, satisfy this condition too
|
18
|
+
_instruments = ("browser-use >= 0.6.0rc1",)
|
19
19
|
|
20
20
|
WRAPPED_METHODS = [
|
21
21
|
{
|
lmnr/version.py
CHANGED
@@ -3,7 +3,7 @@ lmnr/cli.py,sha256=b8780b51f37fe9e20db5495c41d3ad3837f6b48f408b09a58688d017850c0
|
|
3
3
|
lmnr/opentelemetry_lib/.flake8,sha256=6c2c6e0e51b1dd8439e501ca3e21899277076a787da868d0254ba37056b79405,150
|
4
4
|
lmnr/opentelemetry_lib/__init__.py,sha256=1350e8d12ea2f422751ab3a80d7d32d10c27ad8e4c2989407771dc6e544d9c65,2350
|
5
5
|
lmnr/opentelemetry_lib/decorators/__init__.py,sha256=e2ddd9252e0f3d82601081d655342af56413e09dc827ac07f66b51d3b575156e,11814
|
6
|
-
lmnr/opentelemetry_lib/litellm/__init__.py,sha256=
|
6
|
+
lmnr/opentelemetry_lib/litellm/__init__.py,sha256=c72a5d23eb14f03926e713b70acf2c67063f74678c2dfd5824f1bdbc8ce1900f,15723
|
7
7
|
lmnr/opentelemetry_lib/litellm/utils.py,sha256=da8cf0553f82dc7203109f117a4c7b4185e8baf34caad12d7823875515201a27,539
|
8
8
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/__init__.py,sha256=2604189b7598edb5404ddbcd0775bdf2dc506dd5e6319eef4e4724e39c420301,23276
|
9
9
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/config.py,sha256=972919b821b9b7e5dc7cd191ba7e78b30b6efa5d63514e8cb301996d6386392c,369
|
@@ -37,7 +37,7 @@ lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_models.
|
|
37
37
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/image_gen_wrappers.py,sha256=9650a0e4ad2d3bfb2a072590da189bcf4f807aca070945af26a9f9b99d779b77,2021
|
38
38
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/utils.py,sha256=541e94d60c94b8a8035ee74cda00ca3576a3f50a215df03d948de58665dbc25b,4649
|
39
39
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v0/__init__.py,sha256=7f43421e052bd8f64d5d5b03170a3b7187c2ce038362fa15b5d1d0c43bc1a40d,6143
|
40
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/__init__.py,sha256=
|
40
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/__init__.py,sha256=7bdbf691ac89efb42ade686b7dbe69bd139a84f48482a013b7b68d3baa5b9c98,13527
|
41
41
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py,sha256=558036c734559b3526647c1b18cfb986699e8fb322855af72ea054c2e458f721,10404
|
42
42
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py,sha256=4809cde003e5892822828b373aa3e43a8adbaee4ff443f198401003f43c15e8a,4366
|
43
43
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/responses_wrappers.py,sha256=b3853c60c58a36ba64de184211ac2d112bb8b53c4af62f0fc716fb87d168fd4b,24790
|
@@ -46,7 +46,7 @@ lmnr/opentelemetry_lib/opentelemetry/instrumentation/opentelemetry/__init__.py,s
|
|
46
46
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/skyvern/__init__.py,sha256=764e4fe979fb08d7821419a3cc5c3ae89a6664b626ef928259f8f175c939eaea,6334
|
47
47
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/threading/__init__.py,sha256=90aa8558467d7e469fe1a6c75372c113da403557715f03b522b2fab94b287c40,6320
|
48
48
|
lmnr/opentelemetry_lib/tracing/__init__.py,sha256=b96aee7590af1853fffc4c3d8ce9127a67e1ce589f695a99aabe6b37d70b0e48,10203
|
49
|
-
lmnr/opentelemetry_lib/tracing/_instrument_initializers.py,sha256=
|
49
|
+
lmnr/opentelemetry_lib/tracing/_instrument_initializers.py,sha256=dfeace460aa0daceb34266f93321acdce6b61847ad2113f428a8cd9493a93a55,14830
|
50
50
|
lmnr/opentelemetry_lib/tracing/attributes.py,sha256=a879e337ff4e8569a4454544d303ccbc3b04bd42e1cdb765eb563aeaa08f731d,1653
|
51
51
|
lmnr/opentelemetry_lib/tracing/context.py,sha256=83f842be0fc29a96647cbf005c39ea761b0fb5913c4102f965411f47906a6135,4103
|
52
52
|
lmnr/opentelemetry_lib/tracing/exporter.py,sha256=6af8e61fd873e8f5db315d9b9f1edbf46b860ba7e50140f0bdcc6864c6d35a03,2082
|
@@ -59,7 +59,7 @@ lmnr/opentelemetry_lib/utils/package_check.py,sha256=f8274186c96815c996a25fae06b
|
|
59
59
|
lmnr/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
60
60
|
lmnr/sdk/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
61
61
|
lmnr/sdk/browser/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
62
|
-
lmnr/sdk/browser/browser_use_cdp_otel.py,sha256=
|
62
|
+
lmnr/sdk/browser/browser_use_cdp_otel.py,sha256=aa14e3ea7bd0980a4b1fc2d9a5d40d3815479fe37f2aff989f896f0ad5a63a7d,3210
|
63
63
|
lmnr/sdk/browser/browser_use_otel.py,sha256=e5549878c07bad451efef9f460ce52202284cff50075bce700ca61749102c5eb,5065
|
64
64
|
lmnr/sdk/browser/cdp_utils.py,sha256=3f43e4b9958e752b1b9aa0a3ae6321ef9e1cb66b3f4ca07990584b2c60c17a97,26103
|
65
65
|
lmnr/sdk/browser/patchright_otel.py,sha256=9d22ab1f28f1eddbcfd0032a14fe306bfe00bfc7f11128cb99836c4dd15fb7c8,4800
|
@@ -91,8 +91,8 @@ lmnr/sdk/laminar.py,sha256=24d680407ce694f1a7ec0e9c0524eae3deb7d638ad5caff3a591d
|
|
91
91
|
lmnr/sdk/log.py,sha256=9edfd83263f0d4845b1b2d1beeae2b4ed3f8628de941f371a893d72b79c348d4,2213
|
92
92
|
lmnr/sdk/types.py,sha256=f8a8368e225c4d2f82df54d92f029065afb60c3eff494c77c6e574963ed524ff,13454
|
93
93
|
lmnr/sdk/utils.py,sha256=4beb884ae6fbbc7d8cf639b036b726ea6a2a658f0a6386faf5735a13d706a2d8,5039
|
94
|
-
lmnr/version.py,sha256=
|
95
|
-
lmnr-0.7.
|
96
|
-
lmnr-0.7.
|
97
|
-
lmnr-0.7.
|
98
|
-
lmnr-0.7.
|
94
|
+
lmnr/version.py,sha256=d3747c091ad12262da3123ec8cd3a9ecdd8ee197c270773b4953d9fb342c6c0c,1321
|
95
|
+
lmnr-0.7.6.dist-info/WHEEL,sha256=ab6157bc637547491fb4567cd7ddf26b04d63382916ca16c29a5c8e94c9c9ef7,79
|
96
|
+
lmnr-0.7.6.dist-info/entry_points.txt,sha256=abdf3411b7dd2d7329a241f2da6669bab4e314a747a586ecdb9f888f3035003c,39
|
97
|
+
lmnr-0.7.6.dist-info/METADATA,sha256=2224332cbdca13b77e0b54b575efcc7d7923957dfabc51dfbe9f3988f8bd1ef9,14196
|
98
|
+
lmnr-0.7.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|