lmnr 0.6.21__py3-none-any.whl → 0.7.1__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/__init__.py +0 -4
- lmnr/opentelemetry_lib/decorators/__init__.py +81 -32
- lmnr/opentelemetry_lib/litellm/__init__.py +5 -2
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/__init__.py +6 -2
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/__init__.py +11 -2
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/__init__.py +3 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/__init__.py +16 -16
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/__init__.py +6 -0
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/chat_wrappers.py +141 -9
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/completion_wrappers.py +10 -2
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py +6 -2
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py +8 -2
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py +4 -1
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/responses_wrappers.py +20 -4
- lmnr/opentelemetry_lib/opentelemetry/instrumentation/threading/__init__.py +190 -0
- lmnr/opentelemetry_lib/tracing/__init__.py +89 -1
- lmnr/opentelemetry_lib/tracing/context.py +126 -0
- lmnr/opentelemetry_lib/tracing/processor.py +5 -6
- lmnr/opentelemetry_lib/tracing/tracer.py +29 -0
- lmnr/sdk/browser/browser_use_otel.py +5 -5
- lmnr/sdk/browser/patchright_otel.py +14 -0
- lmnr/sdk/browser/playwright_otel.py +32 -6
- lmnr/sdk/browser/pw_utils.py +119 -112
- lmnr/sdk/browser/recorder/record.umd.min.cjs +84 -0
- lmnr/sdk/client/asynchronous/resources/browser_events.py +1 -0
- lmnr/sdk/laminar.py +156 -186
- lmnr/sdk/types.py +17 -11
- lmnr/version.py +1 -1
- {lmnr-0.6.21.dist-info → lmnr-0.7.1.dist-info}/METADATA +3 -2
- {lmnr-0.6.21.dist-info → lmnr-0.7.1.dist-info}/RECORD +32 -31
- {lmnr-0.6.21.dist-info → lmnr-0.7.1.dist-info}/WHEEL +1 -1
- lmnr/opentelemetry_lib/tracing/context_properties.py +0 -65
- lmnr/sdk/browser/rrweb/rrweb.umd.min.cjs +0 -98
- {lmnr-0.6.21.dist-info → lmnr-0.7.1.dist-info}/entry_points.txt +0 -0
@@ -1,11 +1,11 @@
|
|
1
|
-
lmnr/__init__.py,sha256=
|
1
|
+
lmnr/__init__.py,sha256=47422a1fd58f5be3e7870ccb3ed7de4f1ac520d942e0c83cbcf903b0600a08f6,1278
|
2
2
|
lmnr/cli.py,sha256=b8780b51f37fe9e20db5495c41d3ad3837f6b48f408b09a58688d017850c0796,6047
|
3
3
|
lmnr/opentelemetry_lib/.flake8,sha256=6c2c6e0e51b1dd8439e501ca3e21899277076a787da868d0254ba37056b79405,150
|
4
4
|
lmnr/opentelemetry_lib/__init__.py,sha256=6962aca915d485586ed814b9e799ced898594ac2bc6d35329405705b26eab861,2160
|
5
|
-
lmnr/opentelemetry_lib/decorators/__init__.py,sha256=
|
6
|
-
lmnr/opentelemetry_lib/litellm/__init__.py,sha256=
|
5
|
+
lmnr/opentelemetry_lib/decorators/__init__.py,sha256=216536fb3ac8de18e6dfe4dfb2e571074c727466f97e6dcd609339c8458a345a,11511
|
6
|
+
lmnr/opentelemetry_lib/litellm/__init__.py,sha256=8a3679381ca5660cf53e4b7571850906c6635264129149adebda8f3f7c248f68,15127
|
7
7
|
lmnr/opentelemetry_lib/litellm/utils.py,sha256=da8cf0553f82dc7203109f117a4c7b4185e8baf34caad12d7823875515201a27,539
|
8
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/__init__.py,sha256=
|
8
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/__init__.py,sha256=984b8f97eb31d4345ea4c52237451f791af189c4a94aaf2625edfd05107d8a6e,20696
|
9
9
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/config.py,sha256=972919b821b9b7e5dc7cd191ba7e78b30b6efa5d63514e8cb301996d6386392c,369
|
10
10
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/event_emitter.py,sha256=812b3ea1c5a04412113d4dd770717561861595f9eec5b94dd8174c6ddfb7572a,6831
|
11
11
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/event_models.py,sha256=3c27c21b1aeb02bc19a91fb8c05717ae1c10ab4b01300c664aba42e0f50cb5a3,876
|
@@ -13,62 +13,63 @@ lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/span_utils.py,sha
|
|
13
13
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/streaming.py,sha256=e999ad093275c5195b5d31dfea456726afd5f474cd779be7af892f54d7b416b8,10129
|
14
14
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/utils.py,sha256=0044f02da8b99322fdbf3f8f6663f04ff5d1295ddae92a635fd16eb685d5fbb6,5386
|
15
15
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/anthropic/version.py,sha256=5aacde4ca55ef50ed07a239ad8a86889e0621b1cc72be19bd93be7c9e20910a9,23
|
16
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/__init__.py,sha256=
|
16
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/__init__.py,sha256=a47d4d1234e0278d1538748130a79c03d6cb3486976cb5d19578fe1b90f28e7b,20524
|
17
17
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/config.py,sha256=db9cdebc9ee0dccb493ffe608eede3047efec20ed26c3924b72b2e50edbd92c2,245
|
18
18
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/schema_utils.py,sha256=857a6bc52f8bfd4da72786173615d31faaf3f9378f8f6150ffe8f6f9c4bb78f9,685
|
19
19
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/google_genai/utils.py,sha256=f1248196246826d899304e510c4c2df74088d8169d28f1d0aed578a7a6c3cbfd,7669
|
20
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/__init__.py,sha256=
|
20
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/__init__.py,sha256=1e98467711405e4ff8ccd0b53c002e7a676c581616ef015e8b6606bd7057478b,14986
|
21
21
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/config.py,sha256=29d557d9dee56354e89634bdc3f4795f346ee67bbfec56184b4fb394e45a7e03,203
|
22
22
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/event_emitter.py,sha256=1f07d78bf360832951c708fcb3737718e50d39ce05beb8adbf57e818b4873703,4481
|
23
23
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/event_models.py,sha256=3c27c21b1aeb02bc19a91fb8c05717ae1c10ab4b01300c664aba42e0f50cb5a3,876
|
24
24
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/span_utils.py,sha256=7a1cd03539ff2c9e5114a26483dc50066cd5f1b7283e584431dd036949e1f31b,7461
|
25
25
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/utils.py,sha256=139f085a337ae321f68822bbbd2400bfc008c4d6a706ab319e522bef6b91e552,2360
|
26
26
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/groq/version.py,sha256=5aacde4ca55ef50ed07a239ad8a86889e0621b1cc72be19bd93be7c9e20910a9,23
|
27
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/__init__.py,sha256=
|
27
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/__init__.py,sha256=b77a70771741b95006cb27d7f9fc26e4b79b1f10ca24b93a3160a458c3397a9d,3313
|
28
28
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/langgraph/utils.py,sha256=9dff6c2595e79edb38818668aed1220efc188d8a982594c04f4ceeb6e3ff47a6,1512
|
29
29
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/__init__.py,sha256=8b91dc16af927eee75b969c0980c606680b347a87f8533bc0f4a092e5ec6e5c9,2071
|
30
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/__init__.py,sha256=
|
31
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/chat_wrappers.py,sha256=
|
32
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/completion_wrappers.py,sha256=
|
30
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/__init__.py,sha256=9d182c8cef5ee1e205dc4c2f7c8e49d8403ee9fee66072c5cfdd29a0d54f61a2,15149
|
31
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/chat_wrappers.py,sha256=6042b3bcf94f38c90bdebaa2c6c9ac1a4723d1801b8e7c20cf8cc3926cef83ad,38657
|
32
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/completion_wrappers.py,sha256=3a45c07d9d0f37baf409a48e2a1b577f28041c623c41f59ada1c87b94285ae3b,9537
|
33
33
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/config.py,sha256=8016e4af0291a77484ce88d7d1ca06146b1229ae0e0a0f46e042faf75b456a8f,507
|
34
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py,sha256=
|
34
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py,sha256=324eeeaf8dd862f49c15bb7290d414e77ad51cdf532c2cfd74358783cdf654a5,9330
|
35
35
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_emitter.py,sha256=9c96455b5ca2064dd3a9fb570d78b14ebbdf3d02f8e33255ee9e301c31336c9e,3043
|
36
36
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/shared/event_models.py,sha256=3c27c21b1aeb02bc19a91fb8c05717ae1c10ab4b01300c664aba42e0f50cb5a3,876
|
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
40
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/__init__.py,sha256=662afd935c52b42512280614bf502554389c8854ab1256efbfde03fe364dac64,12932
|
41
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py,sha256=
|
42
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py,sha256=
|
43
|
-
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/responses_wrappers.py,sha256=
|
41
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py,sha256=558036c734559b3526647c1b18cfb986699e8fb322855af72ea054c2e458f721,10404
|
42
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py,sha256=4809cde003e5892822828b373aa3e43a8adbaee4ff443f198401003f43c15e8a,4366
|
43
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/v1/responses_wrappers.py,sha256=67c94b3e5bf16b64cecf7a091b05a2eb43162e09968845066721d1cf715856c7,24372
|
44
44
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/version.py,sha256=4f39aaa913f3e49b0c174bc23028687d00bfaffc745bd3fe241e0ae6b442bed1,24
|
45
45
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/opentelemetry/__init__.py,sha256=1f86cdf738e2f68586b0a4569bb1e40edddd85c529f511ef49945ddb7b61fab5,2648
|
46
46
|
lmnr/opentelemetry_lib/opentelemetry/instrumentation/skyvern/__init__.py,sha256=764e4fe979fb08d7821419a3cc5c3ae89a6664b626ef928259f8f175c939eaea,6334
|
47
|
-
lmnr/opentelemetry_lib/
|
47
|
+
lmnr/opentelemetry_lib/opentelemetry/instrumentation/threading/__init__.py,sha256=90aa8558467d7e469fe1a6c75372c113da403557715f03b522b2fab94b287c40,6320
|
48
|
+
lmnr/opentelemetry_lib/tracing/__init__.py,sha256=a39e9a48f8a842ce7f7ec53364d793c1a303dcfd485aee7a72ade07d1b3635a2,9662
|
48
49
|
lmnr/opentelemetry_lib/tracing/_instrument_initializers.py,sha256=a15a46a0515462319195a96f7cdb695e72a1559c3212964f5883ab824031bf70,15125
|
49
50
|
lmnr/opentelemetry_lib/tracing/attributes.py,sha256=32fa30565b977c2a92202dc2bf1ded583a81d02a6bf5ba52958f75a8be08cbbe,1497
|
50
|
-
lmnr/opentelemetry_lib/tracing/
|
51
|
+
lmnr/opentelemetry_lib/tracing/context.py,sha256=83f842be0fc29a96647cbf005c39ea761b0fb5913c4102f965411f47906a6135,4103
|
51
52
|
lmnr/opentelemetry_lib/tracing/exporter.py,sha256=6af8e61fd873e8f5db315d9b9f1edbf46b860ba7e50140f0bdcc6864c6d35a03,2082
|
52
53
|
lmnr/opentelemetry_lib/tracing/instruments.py,sha256=e3c12315bda301416d1f3bc8d354ad16d4da211e2ecfa019265f4b565307c118,5655
|
53
|
-
lmnr/opentelemetry_lib/tracing/processor.py,sha256=
|
54
|
-
lmnr/opentelemetry_lib/tracing/tracer.py,sha256=
|
54
|
+
lmnr/opentelemetry_lib/tracing/processor.py,sha256=fd11e4d48eb5932f47898b8f70b8b5880f7ee7e58478f1ef20caff20e1f34252,3381
|
55
|
+
lmnr/opentelemetry_lib/tracing/tracer.py,sha256=33769a9a97385f5697eb0e0a6b1813a57ed956c7a8379d7ac2523e700e7dd528,1362
|
55
56
|
lmnr/opentelemetry_lib/utils/__init__.py,sha256=a4d85fd06def4dde5c728734de2d4c5c36eb89c49a8aa09b8b50cb5a149e90af,604
|
56
57
|
lmnr/opentelemetry_lib/utils/json_encoder.py,sha256=74ae9bfdac6bef42182fb56ff9bbb8c27b6f0c3bb29eda2ab0769d76a5fb3f9f,463
|
57
58
|
lmnr/opentelemetry_lib/utils/package_check.py,sha256=f8274186c96815c996a25fae06bf913f0bb7c835507739949f37c03bbe5d9ca9,527
|
58
59
|
lmnr/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
59
60
|
lmnr/sdk/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
60
61
|
lmnr/sdk/browser/__init__.py,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
|
61
|
-
lmnr/sdk/browser/browser_use_otel.py,sha256=
|
62
|
-
lmnr/sdk/browser/patchright_otel.py,sha256=
|
63
|
-
lmnr/sdk/browser/playwright_otel.py,sha256=
|
64
|
-
lmnr/sdk/browser/pw_utils.py,sha256=
|
65
|
-
lmnr/sdk/browser/
|
62
|
+
lmnr/sdk/browser/browser_use_otel.py,sha256=37d26de1af37f76774af176cb226e0b04988fc3bf419a2fd899ad36e79562fad,5104
|
63
|
+
lmnr/sdk/browser/patchright_otel.py,sha256=9d22ab1f28f1eddbcfd0032a14fe306bfe00bfc7f11128cb99836c4dd15fb7c8,4800
|
64
|
+
lmnr/sdk/browser/playwright_otel.py,sha256=50c0a5a75155a3a7ff5db84790ffb409c9cbd0351eef212d83d923893730223b,9459
|
65
|
+
lmnr/sdk/browser/pw_utils.py,sha256=f6cb4b7cb59d6b488298f462cf88aa967a424f5bfdfd91c39998df930b212c2c,20420
|
66
|
+
lmnr/sdk/browser/recorder/record.umd.min.cjs,sha256=f09c09052c2fc474efb0405e63d8d26ed2184b994513ce8aee04efdac8be155d,181235
|
66
67
|
lmnr/sdk/browser/utils.py,sha256=4a668776d2938108d25fbcecd61c8e1710a4da3e56230d5fefca5964dd09e3c1,2371
|
67
68
|
lmnr/sdk/client/asynchronous/async_client.py,sha256=e8feae007506cd2e4b08e72706f5f1bb4ea54492b4aa6b68ef184a129de8f466,4948
|
68
69
|
lmnr/sdk/client/asynchronous/resources/__init__.py,sha256=993423ea462aa8ea37d8d91662341c1ca0711cb2447cd476aacc373858f76135,481
|
69
70
|
lmnr/sdk/client/asynchronous/resources/agent.py,sha256=3a78372b62912cdeda831d7ff9a671306713fce185dff646b452e6f1a3cc6d8c,17788
|
70
71
|
lmnr/sdk/client/asynchronous/resources/base.py,sha256=689e37435ae5b60db7210688e1e79a64a724c554e00d46c226b0a18500941281,986
|
71
|
-
lmnr/sdk/client/asynchronous/resources/browser_events.py,sha256=
|
72
|
+
lmnr/sdk/client/asynchronous/resources/browser_events.py,sha256=76f4d7599ee54c0592198585301adc2e9c338398332eb11e445f763f4ab4c7ca,1164
|
72
73
|
lmnr/sdk/client/asynchronous/resources/evals.py,sha256=8c6f8096916657ef269463b2d0585795d9cedad056a047abcde6365ff0b320bd,5761
|
73
74
|
lmnr/sdk/client/asynchronous/resources/evaluators.py,sha256=964046f5146e89032fbb701b883f4f3a7cb996aeb9ff368f86e8f967df2fef10,2918
|
74
75
|
lmnr/sdk/client/asynchronous/resources/tags.py,sha256=14fc2e38cae2f6fe126dc8dca085d7ad02d8d7c1a09bc4b5b5b8e38a0edf7348,2314
|
@@ -84,12 +85,12 @@ lmnr/sdk/datasets.py,sha256=3fd851c5f97bf88eaa84b1451a053eaff23b4497cbb45eac2f9e
|
|
84
85
|
lmnr/sdk/decorators.py,sha256=0c6b95b92ec8023f28cd15ddc47849888fa91f2534d575f626e3557f5f0a0c02,6451
|
85
86
|
lmnr/sdk/eval_control.py,sha256=291394ac385c653ae9b5167e871bebeb4fe8fc6b7ff2ed38e636f87015dcba86,184
|
86
87
|
lmnr/sdk/evaluations.py,sha256=b41f7737b084dc5b64b2952659b729622e0918fd492bfcddde7177d1a1c690ae,22572
|
87
|
-
lmnr/sdk/laminar.py,sha256=
|
88
|
+
lmnr/sdk/laminar.py,sha256=c38590ec5d65d5dedad37258f13f4f88f989e9ae10cbdb30bd1acdad5443e1d6,34427
|
88
89
|
lmnr/sdk/log.py,sha256=9edfd83263f0d4845b1b2d1beeae2b4ed3f8628de941f371a893d72b79c348d4,2213
|
89
|
-
lmnr/sdk/types.py,sha256=
|
90
|
+
lmnr/sdk/types.py,sha256=c4868d7d1df2fbd108fe5990900675bff2e595f6ff207afcf166ad4853f5eb0a,12670
|
90
91
|
lmnr/sdk/utils.py,sha256=4beb884ae6fbbc7d8cf639b036b726ea6a2a658f0a6386faf5735a13d706a2d8,5039
|
91
|
-
lmnr/version.py,sha256=
|
92
|
-
lmnr-0.
|
93
|
-
lmnr-0.
|
94
|
-
lmnr-0.
|
95
|
-
lmnr-0.
|
92
|
+
lmnr/version.py,sha256=05f60eaaaa74f6161e0194247bb2244c9a3b5c1176c8902c6075ebef93276235,1321
|
93
|
+
lmnr-0.7.1.dist-info/WHEEL,sha256=ab6157bc637547491fb4567cd7ddf26b04d63382916ca16c29a5c8e94c9c9ef7,79
|
94
|
+
lmnr-0.7.1.dist-info/entry_points.txt,sha256=abdf3411b7dd2d7329a241f2da6669bab4e314a747a586ecdb9f888f3035003c,39
|
95
|
+
lmnr-0.7.1.dist-info/METADATA,sha256=847134a28ee45d56155835c491fbeb4a12cd6650709991550fff10976a328212,14473
|
96
|
+
lmnr-0.7.1.dist-info/RECORD,,
|
@@ -1,65 +0,0 @@
|
|
1
|
-
import copy
|
2
|
-
|
3
|
-
from lmnr.opentelemetry_lib.tracing.attributes import (
|
4
|
-
ASSOCIATION_PROPERTIES,
|
5
|
-
TRACING_LEVEL,
|
6
|
-
)
|
7
|
-
|
8
|
-
from opentelemetry.context import Context, attach, set_value, get_value
|
9
|
-
from opentelemetry.sdk.trace import Span
|
10
|
-
from opentelemetry import trace
|
11
|
-
|
12
|
-
|
13
|
-
# TODO: delete this once deprecated Laminar.with_labels is removed. The logic
|
14
|
-
# should be moved into Laminar.set_tracing_level
|
15
|
-
def set_association_properties(properties: dict) -> None:
|
16
|
-
attach(set_value("association_properties", properties))
|
17
|
-
|
18
|
-
span = trace.get_current_span()
|
19
|
-
_set_association_properties_attributes(span, properties)
|
20
|
-
|
21
|
-
|
22
|
-
# TODO: delete this once deprecated Laminar.with_labels is removed
|
23
|
-
def get_association_properties(context: Context | None = None) -> dict:
|
24
|
-
return get_value("association_properties", context) or {}
|
25
|
-
|
26
|
-
|
27
|
-
# TODO: delete this once deprecated Laminar.with_labels is removed. The logic
|
28
|
-
# should be moved into Laminar.set_tracing_level
|
29
|
-
def update_association_properties(
|
30
|
-
properties: dict,
|
31
|
-
set_on_current_span: bool = True,
|
32
|
-
context: Context | None = None,
|
33
|
-
) -> None:
|
34
|
-
"""Only adds or updates properties that are not already present"""
|
35
|
-
association_properties = get_value("association_properties", context) or {}
|
36
|
-
association_properties.update(properties)
|
37
|
-
|
38
|
-
attach(set_value("association_properties", association_properties, context))
|
39
|
-
|
40
|
-
if set_on_current_span:
|
41
|
-
span = trace.get_current_span()
|
42
|
-
_set_association_properties_attributes(span, properties)
|
43
|
-
|
44
|
-
|
45
|
-
# TODO: this logic should be moved into Laminar.set_tracing_level
|
46
|
-
def remove_association_properties(properties: dict) -> None:
|
47
|
-
props: dict = copy.copy(get_value("association_properties") or {})
|
48
|
-
for k in properties.keys():
|
49
|
-
props.pop(k, None)
|
50
|
-
set_association_properties(props)
|
51
|
-
|
52
|
-
|
53
|
-
def _set_association_properties_attributes(span: Span, properties: dict) -> None:
|
54
|
-
if not span.is_recording():
|
55
|
-
return
|
56
|
-
for key, value in properties.items():
|
57
|
-
if key == TRACING_LEVEL:
|
58
|
-
span.set_attribute(f"lmnr.internal.{TRACING_LEVEL}", value)
|
59
|
-
continue
|
60
|
-
if (
|
61
|
-
key in ["langgraph.edges", "langgraph.nodes"]
|
62
|
-
and span.name != "LangGraph.workflow"
|
63
|
-
):
|
64
|
-
continue
|
65
|
-
span.set_attribute(f"{ASSOCIATION_PROPERTIES}.{key}", value)
|