uipath 2.1.118__py3-none-any.whl → 2.1.121__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.

Potentially problematic release.


This version of uipath might be problematic. Click here for more details.

@@ -151,3 +151,67 @@ class ValidatedResult(BaseModel):
151
151
 
152
152
  document_id: str = Field(alias="DocumentId")
153
153
  results_document: dict = Field(alias="ResultsDocument") # type: ignore
154
+
155
+
156
+ class Reference(BaseModel):
157
+ model_config = ConfigDict(
158
+ serialize_by_alias=True,
159
+ validate_by_alias=True,
160
+ )
161
+
162
+ text_start_index: int = Field(alias="TextStartIndex")
163
+ text_length: int = Field(alias="TextLength")
164
+ tokens: List[str] = Field(alias="Tokens")
165
+
166
+
167
+ class DocumentBounds(BaseModel):
168
+ model_config = ConfigDict(
169
+ serialize_by_alias=True,
170
+ validate_by_alias=True,
171
+ )
172
+
173
+ start_page: int = Field(alias="StartPage")
174
+ page_count: int = Field(alias="PageCount")
175
+ text_start_index: int = Field(alias="TextStartIndex")
176
+ text_length: int = Field(alias="TextLength")
177
+ page_range: str = Field(alias="PageRange")
178
+
179
+
180
+ class ClassificationResult(BaseModel):
181
+ """A model representing the result of a document classification.
182
+
183
+ Attributes:
184
+ document_id (str): The ID of the classified document.
185
+ document_type_id (str): The ID of the predicted document type.
186
+ confidence (float): The confidence score of the classification.
187
+ ocr_confidence (float): The OCR confidence score of the document.
188
+ reference (Reference): The reference information for the classified document.
189
+ document_bounds (DocumentBounds): The bounds of the document in terms of pages and text.
190
+ classifier_name (str): The name of the classifier used.
191
+ project_id (str): The ID of the project associated with the classification.
192
+ """
193
+
194
+ model_config = ConfigDict(
195
+ serialize_by_alias=True,
196
+ validate_by_alias=True,
197
+ )
198
+
199
+ document_id: str = Field(alias="DocumentId")
200
+ document_type_id: str = Field(alias="DocumentTypeId")
201
+ confidence: float = Field(alias="Confidence")
202
+ ocr_confidence: float = Field(alias="OcrConfidence")
203
+ reference: Reference = Field(alias="Reference")
204
+ document_bounds: DocumentBounds = Field(alias="DocumentBounds")
205
+ classifier_name: str = Field(alias="ClassifierName")
206
+ project_id: str = Field(alias="ProjectId")
207
+
208
+
209
+ class ClassificationResponse(BaseModel):
210
+ model_config = ConfigDict(
211
+ serialize_by_alias=True,
212
+ validate_by_alias=True,
213
+ )
214
+
215
+ classification_results: List[ClassificationResult] = Field(
216
+ alias="classificationResults"
217
+ )
@@ -32,20 +32,25 @@ def _get_llm_messages(attributes: Dict[str, Any], prefix: str) -> List[Dict[str,
32
32
  """Extracts and reconstructs LLM messages from flattened attributes."""
33
33
  messages: dict[int, dict[str, Any]] = {}
34
34
  message_prefix = f"{prefix}."
35
+ prefix_len = len(message_prefix)
35
36
 
36
37
  for key, value in attributes.items():
37
38
  if key.startswith(message_prefix):
38
- parts = key[len(message_prefix) :].split(".")
39
+ # Avoid repeated string slicing and splits
40
+ parts = key[prefix_len:].split(".")
39
41
  if len(parts) >= 2 and parts[0].isdigit():
40
42
  index = int(parts[0])
41
43
  if index not in messages:
42
44
  messages[index] = {}
43
45
  current: Any = messages[index]
44
46
 
45
- for i, part in enumerate(parts[1:-1]):
47
+ # Traverse parts except the last one
48
+ parts_len = len(parts)
49
+ for i in range(1, parts_len - 1):
50
+ part = parts[i]
46
51
  key_part: str | int = part
47
52
  if part.isdigit() and (
48
- i + 2 < len(parts) and parts[i + 2].isdigit()
53
+ i + 2 < parts_len and parts[i + 2].isdigit()
49
54
  ):
50
55
  key_part = int(part)
51
56
 
@@ -60,6 +65,10 @@ def _get_llm_messages(attributes: Dict[str, Any], prefix: str) -> List[Dict[str,
60
65
 
61
66
  current[parts[-1]] = value
62
67
 
68
+ # Convert dict to list, ordered by index, avoid sorted() if we can use range
69
+ if not messages:
70
+ return []
71
+
63
72
  # Convert dict to list, ordered by index
64
73
  return [messages[i] for i in sorted(messages.keys())]
65
74
 
@@ -112,18 +121,30 @@ class LlmOpsHttpExporter(SpanExporter):
112
121
  f"Exporting {len(spans)} spans to {self.base_url}/llmopstenant_/api/Traces/spans"
113
122
  )
114
123
 
124
+ # Use optimized path: keep attributes as dict for processing
125
+ # Only serialize at the very end
115
126
  span_list = [
116
127
  _SpanUtils.otel_span_to_uipath_span(
117
- span, custom_trace_id=self.trace_id
118
- ).to_dict()
128
+ span, custom_trace_id=self.trace_id, serialize_attributes=False
129
+ ).to_dict(serialize_attributes=False)
119
130
  for span in spans
120
131
  ]
132
+
121
133
  url = self._build_url(span_list)
122
134
 
135
+ # Process spans in-place if needed - work directly with dict
123
136
  if self._extra_process_spans:
124
- span_list = [self._process_span_attributes(span) for span in span_list]
137
+ for span_data in span_list:
138
+ self._process_span_attributes(span_data)
125
139
 
126
- logger.debug("Payload: %s", json.dumps(span_list))
140
+ # Serialize attributes once at the very end
141
+ for span_data in span_list:
142
+ if isinstance(span_data.get("Attributes"), dict):
143
+ span_data["Attributes"] = json.dumps(span_data["Attributes"])
144
+
145
+ # Only serialize for logging if debug is enabled to avoid allocation
146
+ if logger.isEnabledFor(logging.DEBUG):
147
+ logger.debug("Payload: %s", json.dumps(span_list))
127
148
 
128
149
  return self._send_with_retries(url, span_list)
129
150
 
@@ -133,7 +154,8 @@ class LlmOpsHttpExporter(SpanExporter):
133
154
 
134
155
  def _map_llm_call_attributes(self, attributes: Dict[str, Any]) -> Dict[str, Any]:
135
156
  """Maps attributes for LLM calls, handling flattened keys."""
136
- result = attributes.copy() # Keep original attributes including basic mappings
157
+ # Modify attributes in place to avoid copy
158
+ result = attributes
137
159
 
138
160
  # Token Usage
139
161
  token_keys = {
@@ -202,7 +224,8 @@ class LlmOpsHttpExporter(SpanExporter):
202
224
 
203
225
  def _map_tool_call_attributes(self, attributes: Dict[str, Any]) -> Dict[str, Any]:
204
226
  """Maps attributes for tool calls."""
205
- result = attributes.copy() # Keep original attributes
227
+ # Modify attributes in place to avoid copy
228
+ result = attributes
206
229
 
207
230
  result["type"] = "toolCall"
208
231
  result["callId"] = attributes.get("call_id") or attributes.get("id")
@@ -225,22 +248,32 @@ class LlmOpsHttpExporter(SpanExporter):
225
248
  return self.Status.ERROR
226
249
  return self.Status.SUCCESS
227
250
 
228
- def _process_span_attributes(self, span_data: Dict[str, Any]) -> Dict[str, Any]:
229
- """Extracts, transforms, and maps attributes for a span."""
251
+ def _process_span_attributes(self, span_data: Dict[str, Any]) -> None:
252
+ """Extracts, transforms, and maps attributes for a span in-place.
253
+
254
+ Args:
255
+ span_data: Span dict with Attributes as dict or JSON string
256
+
257
+ Note:
258
+ Modifies span_data in-place. When optimized path is used (dict),
259
+ modifies dict directly. When legacy path is used (str), parse → modify → serialize.
260
+ """
230
261
  if "Attributes" not in span_data:
231
- return span_data
262
+ return
232
263
 
233
264
  attributes_val = span_data["Attributes"]
234
265
  if isinstance(attributes_val, str):
266
+ # Legacy path: parse JSON string
235
267
  try:
236
268
  attributes: Dict[str, Any] = json.loads(attributes_val)
237
269
  except json.JSONDecodeError as e:
238
270
  logger.warning(f"Failed to parse attributes JSON: {e}")
239
- return span_data
271
+ return
240
272
  elif isinstance(attributes_val, dict):
273
+ # Optimized path: work directly with dict
241
274
  attributes = attributes_val
242
275
  else:
243
- return span_data
276
+ return
244
277
 
245
278
  # Determine SpanType
246
279
  if "openinference.span.kind" in attributes:
@@ -258,23 +291,23 @@ class LlmOpsHttpExporter(SpanExporter):
258
291
  attributes[new_key] = attributes[old_key]
259
292
 
260
293
  # Apply detailed mapping based on SpanType
294
+ # Modify attributes dict in place to avoid allocations
261
295
  span_type = span_data.get("SpanType")
262
296
  if span_type == "completion":
263
- processed_attributes = self._map_llm_call_attributes(attributes)
297
+ self._map_llm_call_attributes(attributes)
264
298
  elif span_type == "toolCall":
265
- processed_attributes = self._map_tool_call_attributes(attributes)
266
- else:
267
- processed_attributes = attributes.copy()
299
+ self._map_tool_call_attributes(attributes)
268
300
 
269
- span_data["Attributes"] = json.dumps(processed_attributes)
301
+ # If attributes were a string (legacy path), serialize back
302
+ # If dict (optimized path), leave as dict - caller will serialize once at the end
303
+ if isinstance(attributes_val, str):
304
+ span_data["Attributes"] = json.dumps(attributes)
270
305
 
271
306
  # Determine status based on error information
272
307
  error = attributes.get("error") or attributes.get("exception.message")
273
308
  status = self._determine_status(error)
274
309
  span_data["Status"] = status
275
310
 
276
- return span_data
277
-
278
311
  def _build_url(self, span_list: list[Dict[str, Any]]) -> str:
279
312
  """Construct the URL for the API request."""
280
313
  trace_id = str(span_list[0]["TraceId"])
@@ -323,7 +356,10 @@ class JsonLinesFileExporter(SpanExporter):
323
356
  def export(self, spans: Sequence[ReadableSpan]) -> SpanExportResult:
324
357
  try:
325
358
  uipath_spans = [
326
- _SpanUtils.otel_span_to_uipath_span(span).to_dict() for span in spans
359
+ _SpanUtils.otel_span_to_uipath_span(
360
+ span, serialize_attributes=True
361
+ ).to_dict(serialize_attributes=True)
362
+ for span in spans
327
363
  ]
328
364
 
329
365
  with open(self.file_path, "a") as f:
uipath/tracing/_utils.py CHANGED
@@ -63,12 +63,15 @@ def _simple_serialize_defaults(obj):
63
63
 
64
64
  @dataclass
65
65
  class UiPathSpan:
66
- """Represents a span in the UiPath tracing system."""
66
+ """Represents a span in the UiPath tracing system.
67
+
68
+ Note: attributes can be either a JSON string (backwards compatible) or a dict (optimized).
69
+ """
67
70
 
68
71
  id: uuid.UUID
69
72
  trace_id: uuid.UUID
70
73
  name: str
71
- attributes: str
74
+ attributes: str | Dict[str, Any] # Support both str (legacy) and dict (optimized)
72
75
  parent_id: Optional[uuid.UUID] = None
73
76
  start_time: str = field(default_factory=lambda: datetime.now().isoformat())
74
77
  end_time: str = field(default_factory=lambda: datetime.now().isoformat())
@@ -96,16 +99,32 @@ class UiPathSpan:
96
99
 
97
100
  job_key: Optional[str] = field(default_factory=lambda: env.get("UIPATH_JOB_KEY"))
98
101
 
99
- def to_dict(self) -> Dict[str, Any]:
100
- """Convert the Span to a dictionary suitable for JSON serialization."""
102
+ def to_dict(self, serialize_attributes: bool = True) -> Dict[str, Any]:
103
+ """Convert the Span to a dictionary suitable for JSON serialization.
104
+
105
+ Args:
106
+ serialize_attributes: If True and attributes is a dict, serialize to JSON string.
107
+ If False, keep attributes as-is (dict or str).
108
+ Default True for backwards compatibility.
109
+ """
110
+ # Cache UUID string conversions to avoid repeated str() calls
111
+ id_str = str(self.id)
112
+ trace_id_str = str(self.trace_id)
113
+ parent_id_str = str(self.parent_id) if self.parent_id else None
114
+
115
+ # Handle attributes serialization
116
+ attributes_out = self.attributes
117
+ if serialize_attributes and isinstance(self.attributes, dict):
118
+ attributes_out = json.dumps(self.attributes)
119
+
101
120
  return {
102
- "Id": str(self.id),
103
- "TraceId": str(self.trace_id),
104
- "ParentId": str(self.parent_id) if self.parent_id else None,
121
+ "Id": id_str,
122
+ "TraceId": trace_id_str,
123
+ "ParentId": parent_id_str,
105
124
  "Name": self.name,
106
125
  "StartTime": self.start_time,
107
126
  "EndTime": self.end_time,
108
- "Attributes": self.attributes,
127
+ "Attributes": attributes_out,
109
128
  "Status": self.status,
110
129
  "CreatedAt": self.created_at,
111
130
  "UpdatedAt": self.updated_at,
@@ -168,9 +187,18 @@ class _SpanUtils:
168
187
 
169
188
  @staticmethod
170
189
  def otel_span_to_uipath_span(
171
- otel_span: ReadableSpan, custom_trace_id: Optional[str] = None
190
+ otel_span: ReadableSpan,
191
+ custom_trace_id: Optional[str] = None,
192
+ serialize_attributes: bool = True,
172
193
  ) -> UiPathSpan:
173
- """Convert an OpenTelemetry span to a UiPathSpan."""
194
+ """Convert an OpenTelemetry span to a UiPathSpan.
195
+
196
+ Args:
197
+ otel_span: The OpenTelemetry span to convert
198
+ custom_trace_id: Optional custom trace ID to use
199
+ serialize_attributes: If True, serialize attributes to JSON string (backwards compatible).
200
+ If False, keep as dict for optimized processing. Default True.
201
+ """
174
202
  # Extract the context information from the OTel span
175
203
  span_context = otel_span.get_span_context()
176
204
 
@@ -192,10 +220,11 @@ class _SpanUtils:
192
220
  if parent_span_id_str:
193
221
  parent_id = uuid.UUID(parent_span_id_str)
194
222
 
195
- # Convert attributes to a format compatible with UiPathSpan
196
- attributes_dict: dict[str, Any] = (
197
- dict(otel_span.attributes) if otel_span.attributes else {}
198
- )
223
+ # Build attributes dict efficiently
224
+ # Use the otel attributes as base - we only add new keys, don't modify existing
225
+ otel_attrs = otel_span.attributes if otel_span.attributes else {}
226
+ # Only copy if we need to modify - we'll build attributes_dict lazily
227
+ attributes_dict: dict[str, Any] = dict(otel_attrs) if otel_attrs else {}
199
228
 
200
229
  # Map status
201
230
  status = 1 # Default to OK
@@ -203,32 +232,31 @@ class _SpanUtils:
203
232
  status = 2 # Error
204
233
  attributes_dict["error"] = otel_span.status.description
205
234
 
206
- original_inputs = attributes_dict.get("input", None)
207
- original_outputs = attributes_dict.get("output", None)
208
-
235
+ # Process inputs - avoid redundant parsing if already parsed
236
+ original_inputs = otel_attrs.get("input", None)
209
237
  if original_inputs:
210
- try:
211
- if isinstance(original_inputs, str):
212
- json_inputs = json.loads(original_inputs)
213
- attributes_dict["input.value"] = json_inputs
238
+ if isinstance(original_inputs, str):
239
+ try:
240
+ attributes_dict["input.value"] = json.loads(original_inputs)
214
241
  attributes_dict["input.mime_type"] = "application/json"
215
- else:
242
+ except Exception as e:
243
+ logger.warning(f"Error parsing inputs: {e}")
216
244
  attributes_dict["input.value"] = original_inputs
217
- except Exception as e:
218
- logger.warning(f"Error parsing inputs: {e}")
219
- attributes_dict["input.value"] = str(original_inputs)
245
+ else:
246
+ attributes_dict["input.value"] = original_inputs
220
247
 
248
+ # Process outputs - avoid redundant parsing if already parsed
249
+ original_outputs = otel_attrs.get("output", None)
221
250
  if original_outputs:
222
- try:
223
- if isinstance(original_outputs, str):
224
- json_outputs = json.loads(original_outputs)
225
- attributes_dict["output.value"] = json_outputs
251
+ if isinstance(original_outputs, str):
252
+ try:
253
+ attributes_dict["output.value"] = json.loads(original_outputs)
226
254
  attributes_dict["output.mime_type"] = "application/json"
227
- else:
255
+ except Exception as e:
256
+ logger.warning(f"Error parsing output: {e}")
228
257
  attributes_dict["output.value"] = original_outputs
229
- except Exception as e:
230
- logger.warning(f"Error parsing output: {e}")
231
- attributes_dict["output.value"] = str(original_outputs)
258
+ else:
259
+ attributes_dict["output.value"] = original_outputs
232
260
 
233
261
  # Add events as additional attributes if they exist
234
262
  if otel_span.events:
@@ -275,7 +303,9 @@ class _SpanUtils:
275
303
  trace_id=trace_id,
276
304
  parent_id=parent_id,
277
305
  name=otel_span.name,
278
- attributes=json.dumps(attributes_dict),
306
+ attributes=json.dumps(attributes_dict)
307
+ if serialize_attributes
308
+ else attributes_dict,
279
309
  start_time=start_time,
280
310
  end_time=end_time_str,
281
311
  status=status,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.1.118
3
+ Version: 2.1.121
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
@@ -1,5 +1,5 @@
1
1
  uipath/__init__.py,sha256=IaeKItOOQXMa95avueJ3dAq-XcRHyZVNjcCGwlSB000,634
2
- uipath/_config.py,sha256=pi3qxPzDTxMEstj_XkGOgKJqD6RTHHv7vYv8sS_-d5Q,92
2
+ uipath/_config.py,sha256=YEiLmpHeeT2K_CinSVWr9aIWU6txfkgAUPP-jqxa9R0,990
3
3
  uipath/_execution_context.py,sha256=Qo8VMUFgtiL-40KsZrvul5bGv1CRERle_fCw1ORCggY,2374
4
4
  uipath/_folder_context.py,sha256=D-bgxdwpwJP4b_QdVKcPODYh15kMDrOar2xNonmMSm4,1861
5
5
  uipath/_uipath.py,sha256=ycu11bjIUx5priRkB3xSRcilugHuSmfSN4Nq6Yz88gk,3702
@@ -11,14 +11,14 @@ uipath/_cli/cli_auth.py,sha256=CzetSRqSUvMs02PtI4w5Vi_0fv_ETA307bB2vXalWzY,2628
11
11
  uipath/_cli/cli_debug.py,sha256=-s6Nmy0DnDyITjZAf6f71hZ1YDDt0Yl57XklEkuL0FU,4068
12
12
  uipath/_cli/cli_deploy.py,sha256=KPCmQ0c_NYD5JofSDao5r6QYxHshVCRxlWDVnQvlp5w,645
13
13
  uipath/_cli/cli_dev.py,sha256=nEfpjw1PZ72O6jmufYWVrueVwihFxDPOeJakdvNHdOA,2146
14
- uipath/_cli/cli_eval.py,sha256=44DLzz4NDpjgqtYf-YTk4FulAF_BI4i3mCNZV0o3Otk,5037
15
- uipath/_cli/cli_init.py,sha256=AXLZyN_PJju6BmHZNcgTx3tO-la60fUKQNJDIj_jgyo,7537
14
+ uipath/_cli/cli_eval.py,sha256=odAZtE8jfT9Yl3UyJgN6WJJcImt32iSJyi_uw1BTUtg,5404
15
+ uipath/_cli/cli_init.py,sha256=39sQnIHol46D5ce4MBJRrD_8KOqvK1IyYhgn42_XYIM,7545
16
16
  uipath/_cli/cli_invoke.py,sha256=m-te-EjhDpk_fhFDkt-yQFzmjEHGo5lQDGEQWxSXisQ,4395
17
17
  uipath/_cli/cli_new.py,sha256=9378NYUBc9j-qKVXV7oja-jahfJhXBg8zKVyaon7ctY,2102
18
- uipath/_cli/cli_pack.py,sha256=U5rXVbUnHFgdEsXyhkjmWza8dfob1wU9lyl4yrYnUss,11076
18
+ uipath/_cli/cli_pack.py,sha256=7mJgZahtpKM_4ZZEA3WNv61eJJeRwNv87FjBPmXRJ3c,11041
19
19
  uipath/_cli/cli_publish.py,sha256=DgyfcZjvfV05Ldy0Pk5y_Le_nT9JduEE_x-VpIc_Kq0,6471
20
- uipath/_cli/cli_pull.py,sha256=YKUXp5mt_WwLKhqCPv2JcSNVagbICd196MWOzzLHZck,2161
21
- uipath/_cli/cli_push.py,sha256=irOh4Bi5LDWgGN6kHd2KwBVTByG0_fq2RUp5hJSzNz0,3781
20
+ uipath/_cli/cli_pull.py,sha256=nV-OCdue_7C6x4f8jRoTYSnM-BgsWVsZUVibkgnogDU,2117
21
+ uipath/_cli/cli_push.py,sha256=5J-dhDilsYrlYg1aV1eWOU84QC_PlwTi9tI3UZptg1k,3743
22
22
  uipath/_cli/cli_register.py,sha256=5-Asb8DSTR4W6M3TDi4U-AKXYOCZ3l2vcTuMOybDHEo,1465
23
23
  uipath/_cli/cli_run.py,sha256=9vbmSG_FzS0x8KNNzSrST37FKjUOzhXPjl8xTm2ZEqQ,4203
24
24
  uipath/_cli/middlewares.py,sha256=tb0c4sU1SCYi0PNs956Qmk24NDk0C0mBfVQmTcyORE0,5000
@@ -54,8 +54,8 @@ uipath/_cli/_evals/_console_progress_reporter.py,sha256=RlfhtyEHq2QjyXRevyeAhtGT
54
54
  uipath/_cli/_evals/_evaluate.py,sha256=yRVhZ6uV58EV5Fv5X_K6425ZGsseQslnLe6FpIKy-u8,833
55
55
  uipath/_cli/_evals/_evaluator_factory.py,sha256=gPF9fRMZBOUPnJSM1fzQyXGHMGYQw_0VmHv-JOGbZf4,14348
56
56
  uipath/_cli/_evals/_helpers.py,sha256=dYHgkWxy2fOuqqZDtOKWKsZ1Ri4dn8qMnuB6DE-1MUk,6661
57
- uipath/_cli/_evals/_progress_reporter.py,sha256=qWMJZskfEjHOLKLL7FqhpraFaYAWpcqO2YFV7oAyBDY,33191
58
- uipath/_cli/_evals/_runtime.py,sha256=rE2cD7_axKgKuwb2IxLvT0AwvyO-PQUHS-YU1Pg_Hys,25604
57
+ uipath/_cli/_evals/_progress_reporter.py,sha256=MbN6QWCl2o6ydmmG-bjf7pPy9guA3bODar6iBettp6k,33315
58
+ uipath/_cli/_evals/_runtime.py,sha256=Gy8O0UJxtCbHwVWdHzhi8u4gAEAJnx891_HSzgPkTCk,25708
59
59
  uipath/_cli/_evals/_span_collection.py,sha256=RoKoeDFG2XODdlgI27ionCjU7LLD_C0LJJ3gu0wab10,779
60
60
  uipath/_cli/_evals/_models/_evaluation_set.py,sha256=7P6zIkgerGKHXL6rD1YHXFFWpyxCUpNu7AX71bAaNoE,7270
61
61
  uipath/_cli/_evals/_models/_evaluator.py,sha256=UXrN103gHJFw3MtVWlGwViQWAo2cICRR-n357zL6wTA,9369
@@ -88,7 +88,7 @@ uipath/_cli/_templates/main.py.template,sha256=QB62qX5HKDbW4lFskxj7h9uuxBITnTWqu
88
88
  uipath/_cli/_templates/package.nuspec.template,sha256=YZyLc-u_EsmIoKf42JsLQ55OGeFmb8VkIU2VF7DFbtw,359
89
89
  uipath/_cli/_utils/_common.py,sha256=fSZkps1sjOXRyWn8GqmQfGqYAZ_tVua6dgT18Lpscds,3467
90
90
  uipath/_cli/_utils/_console.py,sha256=scvnrrFoFX6CE451K-PXKV7UN0DUkInbOtDZ5jAdPP0,10070
91
- uipath/_cli/_utils/_constants.py,sha256=rS8lQ5Nzull8ytajK6lBsz398qiCp1REoAwlHtyBwF0,1415
91
+ uipath/_cli/_utils/_constants.py,sha256=AXeVidtHUFiODrkB2BCX_bqDL-bUzRg-Ieh1-2cCrGA,1374
92
92
  uipath/_cli/_utils/_debug.py,sha256=zamzIR4VgbdKADAE4gbmjxDsbgF7wvdr7C5Dqp744Oc,1739
93
93
  uipath/_cli/_utils/_eval_set.py,sha256=QsAtF_K0sKTn_5lcOnhmWbTrGpmlFn0HV7wG3mSuASU,3771
94
94
  uipath/_cli/_utils/_folders.py,sha256=RsYrXzF0NA1sPxgBoLkLlUY3jDNLg1V-Y8j71Q8a8HY,1357
@@ -104,12 +104,12 @@ uipath/_cli/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
104
104
  uipath/_cli/models/runtime_schema.py,sha256=Po1SYFwTBlWZdmwIG2GvFy0WYbZnT5U1aGjfWcd8ZAA,2181
105
105
  uipath/_events/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
106
  uipath/_events/_event_bus.py,sha256=4-VzstyX69cr7wT1EY7ywp-Ndyz2CyemD3Wk_-QmRpo,5496
107
- uipath/_events/_events.py,sha256=S-3zQiJM6y0pKysXhxQQciNaGcnqJqRw5PrRGgFEKn4,4565
107
+ uipath/_events/_events.py,sha256=ShRoV_ARbJiDFFy0tHUQiC61V_CDzGhA6uCC9KpuUH4,4607
108
108
  uipath/_resources/AGENTS.md,sha256=nRQNAVeEBaBvuMzXw8uXtMnGebLClUgwIMlgb8_qU9o,1039
109
109
  uipath/_resources/CLAUDE.md,sha256=kYsckFWTVe948z_fNWLysCHvi9_YpchBXl3s1Ek03lU,10
110
- uipath/_resources/CLI_REFERENCE.md,sha256=v6pVR2jbBP7hTXwAwi3Ia5C96BfDKs4xGCCUOmsbEBM,6530
110
+ uipath/_resources/CLI_REFERENCE.md,sha256=PNVZINTXDSW4XN8QtxV3kS2WLreR7UyLfSso1_VXWBg,6758
111
111
  uipath/_resources/REQUIRED_STRUCTURE.md,sha256=3laqGiNa3kauJ7jRI1d7w_fWKUDkqYBjcTT_6_8FAGk,1417
112
- uipath/_resources/SDK_REFERENCE.md,sha256=xx6-FzXQpva0eeCeLgscrzaaWrVyFedxxACAD7xVlu4,18663
112
+ uipath/_resources/SDK_REFERENCE.md,sha256=lvQxxdsHi-kzur2C1L4fJ6cEvjVdJPUNSX8UMofgqUQ,19485
113
113
  uipath/_services/__init__.py,sha256=_LNy4u--VlhVtTO66bULbCoBjyJBTuyh9jnzjWrv-h4,1140
114
114
  uipath/_services/_base_service.py,sha256=x9-9jhPzn9Z16KRdFHhJNvV-FZHvTniMsDfxlS4Cutk,5782
115
115
  uipath/_services/actions_service.py,sha256=2RPMR-hFMsOlqEyjIf3aF7-lrf57jdrSD0pBjj0Kyko,16040
@@ -119,7 +119,7 @@ uipath/_services/attachments_service.py,sha256=NPQYK7CGjfBaNT_1S5vEAfODmOChTbQZf
119
119
  uipath/_services/buckets_service.py,sha256=5s8tuivd7GUZYj774DDUYTa0axxlUuesc4EBY1V5sdk,18496
120
120
  uipath/_services/connections_service.py,sha256=tKJHHOKQYKR6LkgB-V_2d0vFpLEdFeMzwj_xmBVHUDw,18416
121
121
  uipath/_services/context_grounding_service.py,sha256=Pjx-QQQEiSKD-hY6ityj3QUSALN3fIcKLLHr_NZ0d_g,37117
122
- uipath/_services/documents_service.py,sha256=2LZyGVYXtsC9ajsNpmLTmbgAXF13YeS4N_LObh4o4kA,31389
122
+ uipath/_services/documents_service.py,sha256=2mPZzmOl2r5i8RYvdeRSJtEFWSSsiXqIauTgNTW75s4,45341
123
123
  uipath/_services/entities_service.py,sha256=QKCLE6wRgq3HZraF-M2mljy-8il4vsNHrQhUgkewVVk,14028
124
124
  uipath/_services/external_application_service.py,sha256=gZhnGgLn7ZYUZzZF7AumB14QEPanVY-D_02FqEcAFtw,5478
125
125
  uipath/_services/folder_service.py,sha256=9JqgjKhWD-G_KUnfUTP2BADxL6OK9QNZsBsWZHAULdE,2749
@@ -139,7 +139,7 @@ uipath/_utils/_request_spec.py,sha256=iCtBLqtbWUpFG5g1wtIZBzSupKsfaRLiQFoFc_4B70
139
139
  uipath/_utils/_ssl_context.py,sha256=xSYitos0eJc9cPHzNtHISX9PBvL6D2vas5G_GiBdLp8,1783
140
140
  uipath/_utils/_url.py,sha256=-4eluSrIZCUlnQ3qU17WPJkgaC2KwF9W5NeqGnTNGGo,2512
141
141
  uipath/_utils/_user_agent.py,sha256=pVJkFYacGwaQBomfwWVAvBQgdBUo62e4n3-fLIajWUU,563
142
- uipath/_utils/constants.py,sha256=eUEER5NQuX1_h5uum2xHEJPrNfP0YGQrSV80fFYXEh0,1820
142
+ uipath/_utils/constants.py,sha256=qsnkTO7cw7VaN0sYM7q9-YJjHi1W6IT6TiJ2YCtcbIE,1903
143
143
  uipath/agent/_utils.py,sha256=OwSwpTxhZSAeyofasWwckE07qfMDCHuk8bX6A_ZXDbo,5287
144
144
  uipath/agent/conversation/__init__.py,sha256=5hK-Iz131mnd9m6ANnpZZffxXZLVFDQ9GTg5z9ik1oQ,5265
145
145
  uipath/agent/conversation/async_stream.py,sha256=BA_8uU1DgE3VpU2KkJj0rkI3bAHLk_ZJKsajR0ipMpo,2055
@@ -205,7 +205,7 @@ uipath/models/buckets.py,sha256=N3Lj_dVCv709-ywhOOdyCSvsuLn41eGuAfSiik6Q6F8,1285
205
205
  uipath/models/connections.py,sha256=jmzlfnddqlxjmiVhqsETRV6TQPH3fFqJGsygG0gUf7g,2745
206
206
  uipath/models/context_grounding.py,sha256=3MaF2Fv2QYle8UUWvKGkCN5XGpx2T4a34fdbBqJ2fCs,1137
207
207
  uipath/models/context_grounding_index.py,sha256=OhRyxZDHDSrEmBFK0-JLqMMMT64jir4XkHtQ54IKtc0,2683
208
- uipath/models/documents.py,sha256=fLmo75okk1peDIiCmH3hmG8GbOte6fjkhwX8EaiOQJY,5124
208
+ uipath/models/documents.py,sha256=gh063bG0pl4YGThWQIgprwRCKxnKVoMOZrXDfDEVnQw,7337
209
209
  uipath/models/entities.py,sha256=x6jbq4o_QhgL_pCgvHFsp9O8l333kQhn8e9ZCBs72UM,9823
210
210
  uipath/models/errors.py,sha256=WCxxHBlLzLF17YxjqsFkkyBLwEQM_dc6fFU5qmBjD4A,597
211
211
  uipath/models/exceptions.py,sha256=f71VsUyonK2uuH1Cs0tpP6f9dec6v6cffL1Z9EjTxm0,1870
@@ -219,14 +219,14 @@ uipath/telemetry/__init__.py,sha256=Wna32UFzZR66D-RzTKlPWlvji9i2HJb82NhHjCCXRjY,
219
219
  uipath/telemetry/_constants.py,sha256=uRDuEZayBYtBA0tMx-2AS_D-oiVA7oKgp9zid9jNats,763
220
220
  uipath/telemetry/_track.py,sha256=3RZgJtY8y28Y5rfVmC432OyRu7N3pSxPouwa82KWFso,4787
221
221
  uipath/tracing/__init__.py,sha256=0oUuxJKOHE14iOL4SP93FOiEYRIFLTq-o0NwRcTB8Q4,317
222
- uipath/tracing/_otel_exporters.py,sha256=LAtaQV5QN4PSLgEbIVvlmUETNbMYqTX87R-3mRKy_S8,12438
222
+ uipath/tracing/_otel_exporters.py,sha256=68wuAZyB_PScnSCW230PVs3qSqoJBNoArJJaE4UebNA,13956
223
223
  uipath/tracing/_traced.py,sha256=yBIY05PCCrYyx50EIHZnwJaKNdHPNx-YTR1sHQl0a98,19901
224
- uipath/tracing/_utils.py,sha256=zMjiKjNpSN3YQNEU4-u5AAvPtUsi8QuEqNLya89jfAU,14466
224
+ uipath/tracing/_utils.py,sha256=59XSCaH4Te9Jo3cqY8Wb2cNu9gPfVm8AMMSAg2OTXWo,16018
225
225
  uipath/utils/__init__.py,sha256=VD-KXFpF_oWexFg6zyiWMkxl2HM4hYJMIUDZ1UEtGx0,105
226
226
  uipath/utils/_endpoints_manager.py,sha256=tnF_FiCx8qI2XaJDQgYkMN_gl9V0VqNR1uX7iawuLp8,8230
227
227
  uipath/utils/dynamic_schema.py,sha256=w0u_54MoeIAB-mf3GmwX1A_X8_HDrRy6p998PvX9evY,3839
228
- uipath-2.1.118.dist-info/METADATA,sha256=dv4-HMQmB6yeHLxSH2P1OVvvKg2sg7LnTmSTMWN8gpA,6626
229
- uipath-2.1.118.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
230
- uipath-2.1.118.dist-info/entry_points.txt,sha256=9C2_29U6Oq1ExFu7usihR-dnfIVNSKc-0EFbh0rskB4,43
231
- uipath-2.1.118.dist-info/licenses/LICENSE,sha256=-KBavWXepyDjimmzH5fVAsi-6jNVpIKFc2kZs0Ri4ng,1058
232
- uipath-2.1.118.dist-info/RECORD,,
228
+ uipath-2.1.121.dist-info/METADATA,sha256=5MIPaAAsfFBU2ncAQrZJFW0QpfhYRAKV3JLNEHM0X6w,6626
229
+ uipath-2.1.121.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
230
+ uipath-2.1.121.dist-info/entry_points.txt,sha256=9C2_29U6Oq1ExFu7usihR-dnfIVNSKc-0EFbh0rskB4,43
231
+ uipath-2.1.121.dist-info/licenses/LICENSE,sha256=-KBavWXepyDjimmzH5fVAsi-6jNVpIKFc2kZs0Ri4ng,1058
232
+ uipath-2.1.121.dist-info/RECORD,,