uipath 2.1.57__py3-none-any.whl → 2.1.58__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.
- uipath/tracing/_traced.py +24 -8
- uipath/tracing/_utils.py +54 -13
- {uipath-2.1.57.dist-info → uipath-2.1.58.dist-info}/METADATA +1 -1
- {uipath-2.1.57.dist-info → uipath-2.1.58.dist-info}/RECORD +7 -7
- {uipath-2.1.57.dist-info → uipath-2.1.58.dist-info}/WHEEL +0 -0
- {uipath-2.1.57.dist-info → uipath-2.1.58.dist-info}/entry_points.txt +0 -0
- {uipath-2.1.57.dist-info → uipath-2.1.58.dist-info}/licenses/LICENSE +0 -0
uipath/tracing/_traced.py
CHANGED
@@ -215,11 +215,15 @@ def _opentelemetry_traced(
|
|
215
215
|
if input_processor:
|
216
216
|
processed_inputs = input_processor(json.loads(inputs))
|
217
217
|
inputs = json.dumps(processed_inputs, default=str)
|
218
|
-
span.set_attribute("
|
218
|
+
span.set_attribute("input.mime_type", "application/json")
|
219
|
+
span.set_attribute("input.value", inputs)
|
219
220
|
|
220
221
|
result = func(*args, **kwargs)
|
221
222
|
output = output_processor(result) if output_processor else result
|
222
|
-
span.set_attribute(
|
223
|
+
span.set_attribute(
|
224
|
+
"output.value", _SpanUtils.format_object_for_trace_json(output)
|
225
|
+
)
|
226
|
+
span.set_attribute("output.mime_type", "application/json")
|
223
227
|
return result
|
224
228
|
except Exception as e:
|
225
229
|
span.record_exception(e)
|
@@ -249,11 +253,15 @@ def _opentelemetry_traced(
|
|
249
253
|
if input_processor:
|
250
254
|
processed_inputs = input_processor(json.loads(inputs))
|
251
255
|
inputs = json.dumps(processed_inputs, default=str)
|
252
|
-
span.set_attribute("
|
256
|
+
span.set_attribute("input.mime_type", "application/json")
|
257
|
+
span.set_attribute("input.value", inputs)
|
253
258
|
|
254
259
|
result = await func(*args, **kwargs)
|
255
260
|
output = output_processor(result) if output_processor else result
|
256
|
-
span.set_attribute(
|
261
|
+
span.set_attribute(
|
262
|
+
"output.value", _SpanUtils.format_object_for_trace_json(output)
|
263
|
+
)
|
264
|
+
span.set_attribute("output.mime_type", "application/json")
|
257
265
|
return result
|
258
266
|
except Exception as e:
|
259
267
|
span.record_exception(e)
|
@@ -285,7 +293,8 @@ def _opentelemetry_traced(
|
|
285
293
|
if input_processor:
|
286
294
|
processed_inputs = input_processor(json.loads(inputs))
|
287
295
|
inputs = json.dumps(processed_inputs, default=str)
|
288
|
-
span.set_attribute("
|
296
|
+
span.set_attribute("input.mime_type", "application/json")
|
297
|
+
span.set_attribute("input.value", inputs)
|
289
298
|
|
290
299
|
outputs = []
|
291
300
|
for item in func(*args, **kwargs):
|
@@ -293,7 +302,10 @@ def _opentelemetry_traced(
|
|
293
302
|
span.add_event(f"Yielded: {item}")
|
294
303
|
yield item
|
295
304
|
output = output_processor(outputs) if output_processor else outputs
|
296
|
-
span.set_attribute(
|
305
|
+
span.set_attribute(
|
306
|
+
"output.value", _SpanUtils.format_object_for_trace_json(output)
|
307
|
+
)
|
308
|
+
span.set_attribute("output.mime_type", "application/json")
|
297
309
|
except Exception as e:
|
298
310
|
span.record_exception(e)
|
299
311
|
span.set_status(
|
@@ -324,7 +336,8 @@ def _opentelemetry_traced(
|
|
324
336
|
if input_processor:
|
325
337
|
processed_inputs = input_processor(json.loads(inputs))
|
326
338
|
inputs = json.dumps(processed_inputs, default=str)
|
327
|
-
span.set_attribute("
|
339
|
+
span.set_attribute("input.mime_type", "application/json")
|
340
|
+
span.set_attribute("input.value", inputs)
|
328
341
|
|
329
342
|
outputs = []
|
330
343
|
async for item in func(*args, **kwargs):
|
@@ -332,7 +345,10 @@ def _opentelemetry_traced(
|
|
332
345
|
span.add_event(f"Yielded: {item}")
|
333
346
|
yield item
|
334
347
|
output = output_processor(outputs) if output_processor else outputs
|
335
|
-
span.set_attribute(
|
348
|
+
span.set_attribute(
|
349
|
+
"output.value", _SpanUtils.format_object_for_trace_json(output)
|
350
|
+
)
|
351
|
+
span.set_attribute("output.mime_type", "application/json")
|
336
352
|
except Exception as e:
|
337
353
|
span.record_exception(e)
|
338
354
|
span.set_status(
|
uipath/tracing/_utils.py
CHANGED
@@ -4,10 +4,12 @@ import logging
|
|
4
4
|
import os
|
5
5
|
import random
|
6
6
|
import uuid
|
7
|
-
from dataclasses import dataclass, field
|
8
|
-
from datetime import datetime
|
7
|
+
from dataclasses import asdict, dataclass, field, is_dataclass
|
8
|
+
from datetime import datetime, timezone
|
9
|
+
from enum import Enum
|
9
10
|
from os import environ as env
|
10
11
|
from typing import Any, Dict, Optional
|
12
|
+
from zoneinfo import ZoneInfo
|
11
13
|
|
12
14
|
from opentelemetry.sdk.trace import ReadableSpan
|
13
15
|
from opentelemetry.trace import StatusCode
|
@@ -15,6 +17,36 @@ from opentelemetry.trace import StatusCode
|
|
15
17
|
logger = logging.getLogger(__name__)
|
16
18
|
|
17
19
|
|
20
|
+
def _simple_serialize_defaults(obj):
|
21
|
+
if hasattr(obj, "model_dump"):
|
22
|
+
return obj.model_dump(exclude_none=True, mode="json")
|
23
|
+
if hasattr(obj, "dict"):
|
24
|
+
return obj.dict()
|
25
|
+
if hasattr(obj, "to_dict"):
|
26
|
+
return obj.to_dict()
|
27
|
+
|
28
|
+
# Handle dataclasses
|
29
|
+
if is_dataclass(obj) and not isinstance(obj, type):
|
30
|
+
return asdict(obj)
|
31
|
+
|
32
|
+
# Handle enums
|
33
|
+
if isinstance(obj, Enum):
|
34
|
+
return obj.value
|
35
|
+
|
36
|
+
if isinstance(obj, (set, tuple)):
|
37
|
+
if hasattr(obj, "_asdict") and callable(obj._asdict):
|
38
|
+
return obj._asdict()
|
39
|
+
return list(obj)
|
40
|
+
|
41
|
+
if isinstance(obj, datetime):
|
42
|
+
return obj.isoformat()
|
43
|
+
|
44
|
+
if isinstance(obj, (timezone, ZoneInfo)):
|
45
|
+
return obj.tzname(None)
|
46
|
+
|
47
|
+
return str(obj)
|
48
|
+
|
49
|
+
|
18
50
|
@dataclass
|
19
51
|
class UiPathSpan:
|
20
52
|
"""Represents a span in the UiPath tracing system."""
|
@@ -150,30 +182,32 @@ class _SpanUtils:
|
|
150
182
|
status = 2 # Error
|
151
183
|
attributes_dict["error"] = otel_span.status.description
|
152
184
|
|
153
|
-
original_inputs = attributes_dict.get("
|
154
|
-
original_outputs = attributes_dict.get("
|
185
|
+
original_inputs = attributes_dict.get("input", None)
|
186
|
+
original_outputs = attributes_dict.get("output", None)
|
155
187
|
|
156
188
|
if original_inputs:
|
157
189
|
try:
|
158
190
|
if isinstance(original_inputs, str):
|
159
191
|
json_inputs = json.loads(original_inputs)
|
160
|
-
attributes_dict["
|
192
|
+
attributes_dict["input.value"] = json_inputs
|
193
|
+
attributes_dict["input.mime_type"] = "application/json"
|
161
194
|
else:
|
162
|
-
attributes_dict["
|
195
|
+
attributes_dict["input.value"] = original_inputs
|
163
196
|
except Exception as e:
|
164
|
-
|
165
|
-
attributes_dict["
|
197
|
+
logger.warning(f"Error parsing inputs: {e}")
|
198
|
+
attributes_dict["input.value"] = str(original_inputs)
|
166
199
|
|
167
200
|
if original_outputs:
|
168
201
|
try:
|
169
202
|
if isinstance(original_outputs, str):
|
170
203
|
json_outputs = json.loads(original_outputs)
|
171
|
-
attributes_dict["
|
204
|
+
attributes_dict["output.value"] = json_outputs
|
205
|
+
attributes_dict["output.mime_type"] = "application/json"
|
172
206
|
else:
|
173
|
-
attributes_dict["
|
207
|
+
attributes_dict["output.value"] = original_outputs
|
174
208
|
except Exception as e:
|
175
|
-
|
176
|
-
attributes_dict["
|
209
|
+
logger.warning(f"Error parsing output: {e}")
|
210
|
+
attributes_dict["output.value"] = str(original_outputs)
|
177
211
|
|
178
212
|
# Add events as additional attributes if they exist
|
179
213
|
if otel_span.events:
|
@@ -233,7 +267,14 @@ class _SpanUtils:
|
|
233
267
|
) -> str:
|
234
268
|
"""Return a JSON string of inputs from the function signature."""
|
235
269
|
result = _SpanUtils.format_args_for_trace(signature, *args, **kwargs)
|
236
|
-
return json.dumps(result, default=
|
270
|
+
return json.dumps(result, default=_simple_serialize_defaults)
|
271
|
+
|
272
|
+
@staticmethod
|
273
|
+
def format_object_for_trace_json(
|
274
|
+
input_object: Any,
|
275
|
+
) -> str:
|
276
|
+
"""Return a JSON string of inputs from the function signature."""
|
277
|
+
return json.dumps(input_object, default=_simple_serialize_defaults)
|
237
278
|
|
238
279
|
@staticmethod
|
239
280
|
def format_args_for_trace(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: uipath
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.58
|
4
4
|
Summary: Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools.
|
5
5
|
Project-URL: Homepage, https://uipath.com
|
6
6
|
Project-URL: Repository, https://github.com/UiPath/uipath-python
|
@@ -146,12 +146,12 @@ uipath/telemetry/_constants.py,sha256=uRDuEZayBYtBA0tMx-2AS_D-oiVA7oKgp9zid9jNat
|
|
146
146
|
uipath/telemetry/_track.py,sha256=G_Pyq8n8iMvoCWhUpWedlptXUSuUSbQBBzGxsh4DW9c,4654
|
147
147
|
uipath/tracing/__init__.py,sha256=GKRINyWdHVrDsI-8mrZDLdf0oey6GHGlNZTOADK-kgc,224
|
148
148
|
uipath/tracing/_otel_exporters.py,sha256=X7cnuGqvxGbACZuFD2XYTWXwIse8pokOEAjeTPE6DCQ,3158
|
149
|
-
uipath/tracing/_traced.py,sha256=
|
150
|
-
uipath/tracing/_utils.py,sha256=
|
149
|
+
uipath/tracing/_traced.py,sha256=CJIp6wqIoHVTmh9-Kuk7diD4OJDTAeA6x3zI9w0i4lI,19307
|
150
|
+
uipath/tracing/_utils.py,sha256=ny3VgfUPT_5fQ0BAFl7hitR2jH6nNuuZEpR7DKVd8QE,11739
|
151
151
|
uipath/utils/__init__.py,sha256=VD-KXFpF_oWexFg6zyiWMkxl2HM4hYJMIUDZ1UEtGx0,105
|
152
152
|
uipath/utils/_endpoints_manager.py,sha256=iRTl5Q0XAm_YgcnMcJOXtj-8052sr6jpWuPNz6CgT0Q,8408
|
153
|
-
uipath-2.1.
|
154
|
-
uipath-2.1.
|
155
|
-
uipath-2.1.
|
156
|
-
uipath-2.1.
|
157
|
-
uipath-2.1.
|
153
|
+
uipath-2.1.58.dist-info/METADATA,sha256=V3aUe96vDwV0iGCY6Uyr752tATUAiDRVYDonJ5Zckvs,6482
|
154
|
+
uipath-2.1.58.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
155
|
+
uipath-2.1.58.dist-info/entry_points.txt,sha256=9C2_29U6Oq1ExFu7usihR-dnfIVNSKc-0EFbh0rskB4,43
|
156
|
+
uipath-2.1.58.dist-info/licenses/LICENSE,sha256=-KBavWXepyDjimmzH5fVAsi-6jNVpIKFc2kZs0Ri4ng,1058
|
157
|
+
uipath-2.1.58.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|