uipath 2.1.56__py3-none-any.whl → 2.1.57__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/agent/_utils.py +55 -0
- uipath/agent/models/agent.py +344 -0
- {uipath-2.1.56.dist-info → uipath-2.1.57.dist-info}/METADATA +1 -1
- {uipath-2.1.56.dist-info → uipath-2.1.57.dist-info}/RECORD +7 -5
- {uipath-2.1.56.dist-info → uipath-2.1.57.dist-info}/WHEEL +0 -0
- {uipath-2.1.56.dist-info → uipath-2.1.57.dist-info}/entry_points.txt +0 -0
- {uipath-2.1.56.dist-info → uipath-2.1.57.dist-info}/licenses/LICENSE +0 -0
uipath/agent/_utils.py
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
import logging
|
2
|
+
from pathlib import PurePath
|
3
|
+
|
4
|
+
from httpx import Response
|
5
|
+
from pydantic import TypeAdapter
|
6
|
+
|
7
|
+
from uipath._cli._utils._studio_project import (
|
8
|
+
ProjectFile,
|
9
|
+
ProjectFolder,
|
10
|
+
StudioClient,
|
11
|
+
resolve_path,
|
12
|
+
)
|
13
|
+
from uipath.agent.models.agent import AgentDefinition
|
14
|
+
|
15
|
+
logger = logging.getLogger(__name__)
|
16
|
+
|
17
|
+
|
18
|
+
async def get_file(
|
19
|
+
folder: ProjectFolder, path: PurePath, studio_client: StudioClient
|
20
|
+
) -> Response:
|
21
|
+
resolved = resolve_path(folder, path)
|
22
|
+
assert isinstance(resolved, ProjectFile), "Path file not found."
|
23
|
+
return await studio_client.download_file_async(resolved.id)
|
24
|
+
|
25
|
+
|
26
|
+
async def load_agent_definition(project_id: str):
|
27
|
+
studio_client = StudioClient(project_id=project_id)
|
28
|
+
project_structure = await studio_client.get_project_structure_async()
|
29
|
+
|
30
|
+
agent = (
|
31
|
+
await get_file(project_structure, PurePath("agent.json"), studio_client)
|
32
|
+
).json()
|
33
|
+
|
34
|
+
resolved_path = resolve_path(project_structure, PurePath("resources"))
|
35
|
+
if isinstance(resolved_path, ProjectFolder):
|
36
|
+
resource_folders = resolved_path.folders
|
37
|
+
else:
|
38
|
+
logger.warning(
|
39
|
+
"Unable to read resource information from project. Defaulting to empty resources."
|
40
|
+
)
|
41
|
+
resource_folders = []
|
42
|
+
|
43
|
+
resources = []
|
44
|
+
for resource in resource_folders:
|
45
|
+
resources.append(
|
46
|
+
(await get_file(resource, PurePath("resource.json"), studio_client)).json()
|
47
|
+
)
|
48
|
+
|
49
|
+
agent_definition = {
|
50
|
+
"id": project_id,
|
51
|
+
"name": project_structure.name,
|
52
|
+
"resources": resources,
|
53
|
+
**agent,
|
54
|
+
}
|
55
|
+
return TypeAdapter(AgentDefinition).validate_python(agent_definition)
|
@@ -0,0 +1,344 @@
|
|
1
|
+
"""Agent Models."""
|
2
|
+
|
3
|
+
from enum import Enum
|
4
|
+
from typing import Annotated, Any, Dict, List, Literal, Optional, Union
|
5
|
+
|
6
|
+
from pydantic import BaseModel, ConfigDict, Discriminator, Field, Tag
|
7
|
+
|
8
|
+
from uipath.models import Connection
|
9
|
+
|
10
|
+
|
11
|
+
class AgentResourceType(str, Enum):
|
12
|
+
"""Enum for resource types."""
|
13
|
+
|
14
|
+
TOOL = "tool"
|
15
|
+
CONTEXT = "context"
|
16
|
+
ESCALATION = "escalation"
|
17
|
+
|
18
|
+
|
19
|
+
class BaseAgentResourceConfig(BaseModel):
|
20
|
+
"""Base resource model with common properties."""
|
21
|
+
|
22
|
+
name: str
|
23
|
+
description: str
|
24
|
+
|
25
|
+
model_config = ConfigDict(
|
26
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
27
|
+
)
|
28
|
+
|
29
|
+
|
30
|
+
class AgentUnknownResourceConfig(BaseAgentResourceConfig):
|
31
|
+
"""Fallback for unknown or future resource types."""
|
32
|
+
|
33
|
+
resource_type: str = Field(alias="$resourceType")
|
34
|
+
|
35
|
+
model_config = ConfigDict(extra="allow")
|
36
|
+
|
37
|
+
|
38
|
+
class BaseAgentToolResourceConfig(BaseAgentResourceConfig):
|
39
|
+
"""Tool resource with tool-specific properties."""
|
40
|
+
|
41
|
+
resource_type: Literal[AgentResourceType.TOOL] = Field(alias="$resourceType")
|
42
|
+
input_schema: Dict[str, Any] = Field(
|
43
|
+
..., alias="inputSchema", description="Input schema for the tool"
|
44
|
+
)
|
45
|
+
|
46
|
+
model_config = ConfigDict(
|
47
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
48
|
+
)
|
49
|
+
|
50
|
+
|
51
|
+
class AgentToolType(str, Enum):
|
52
|
+
"""Agent tool type."""
|
53
|
+
|
54
|
+
AGENT = "agent"
|
55
|
+
INTEGRATION = "integration"
|
56
|
+
|
57
|
+
|
58
|
+
class AgentToolSettings(BaseModel):
|
59
|
+
"""Settings for tool configuration."""
|
60
|
+
|
61
|
+
max_attempts: Optional[int] = Field(None, alias="maxAttempts")
|
62
|
+
retry_delay: Optional[int] = Field(None, alias="retryDelay")
|
63
|
+
timeout: Optional[int] = Field(None)
|
64
|
+
|
65
|
+
model_config = ConfigDict(
|
66
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
67
|
+
)
|
68
|
+
|
69
|
+
|
70
|
+
class AgentProcessToolProperties(BaseModel):
|
71
|
+
"""Properties specific to tool configuration."""
|
72
|
+
|
73
|
+
folder_path: Optional[str] = Field(None, alias="folderPath")
|
74
|
+
process_name: Optional[str] = Field(None, alias="processName")
|
75
|
+
|
76
|
+
model_config = ConfigDict(
|
77
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
78
|
+
)
|
79
|
+
|
80
|
+
|
81
|
+
class AgentProcessToolResourceConfig(BaseAgentToolResourceConfig):
|
82
|
+
"""Tool resource with tool-specific properties."""
|
83
|
+
|
84
|
+
type: Literal[AgentToolType.AGENT] = AgentToolType.AGENT
|
85
|
+
output_schema: Dict[str, Any] = Field(
|
86
|
+
..., alias="outputSchema", description="Output schema for the tool"
|
87
|
+
)
|
88
|
+
properties: AgentProcessToolProperties = Field(
|
89
|
+
..., description="Tool-specific properties"
|
90
|
+
)
|
91
|
+
settings: AgentToolSettings = Field(
|
92
|
+
default_factory=AgentToolSettings, description="Tool settings"
|
93
|
+
)
|
94
|
+
|
95
|
+
model_config = ConfigDict(
|
96
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
97
|
+
)
|
98
|
+
|
99
|
+
|
100
|
+
class AgentIntegrationToolProperties(BaseModel):
|
101
|
+
"""Properties specific to tool configuration."""
|
102
|
+
|
103
|
+
tool_path: str = Field(..., alias="toolPath")
|
104
|
+
object_name: str = Field(..., alias="objectName")
|
105
|
+
tool_display_name: str = Field(..., alias="toolDisplayName")
|
106
|
+
tool_description: str = Field(..., alias="toolDescription")
|
107
|
+
method: str = Field(..., alias="method")
|
108
|
+
connection: Connection = Field(..., alias="connection")
|
109
|
+
body_structure: dict[str, Any] = Field(..., alias="bodyStructure")
|
110
|
+
|
111
|
+
model_config = ConfigDict(
|
112
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
113
|
+
)
|
114
|
+
|
115
|
+
|
116
|
+
class AgentIntegrationToolResourceConfig(BaseAgentToolResourceConfig):
|
117
|
+
"""Tool resource with tool-specific properties."""
|
118
|
+
|
119
|
+
type: Literal[AgentToolType.INTEGRATION] = AgentToolType.INTEGRATION
|
120
|
+
properties: AgentIntegrationToolProperties
|
121
|
+
|
122
|
+
model_config = ConfigDict(
|
123
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
124
|
+
)
|
125
|
+
|
126
|
+
|
127
|
+
class AgentUnknownToolResourceConfig(BaseAgentToolResourceConfig):
|
128
|
+
"""Fallback for unknown or future tool types."""
|
129
|
+
|
130
|
+
resource_type: Literal[AgentResourceType.TOOL] = AgentResourceType.TOOL
|
131
|
+
type: str = Field(alias="$resourceType")
|
132
|
+
|
133
|
+
model_config = ConfigDict(extra="allow")
|
134
|
+
|
135
|
+
|
136
|
+
class AgentContextSettings(BaseModel):
|
137
|
+
"""Settings for context configuration."""
|
138
|
+
|
139
|
+
result_count: int = Field(alias="resultCount")
|
140
|
+
retrieval_mode: Literal["Semantic", "Structured"] = Field(alias="retrievalMode")
|
141
|
+
threshold: float = Field(default=0)
|
142
|
+
|
143
|
+
model_config = ConfigDict(
|
144
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
145
|
+
)
|
146
|
+
|
147
|
+
|
148
|
+
class AgentContextResourceConfig(BaseAgentResourceConfig):
|
149
|
+
"""Context resource with context-specific properties."""
|
150
|
+
|
151
|
+
resource_type: Literal[AgentResourceType.CONTEXT] = Field(alias="$resourceType")
|
152
|
+
folder_path: str = Field(alias="folderPath")
|
153
|
+
index_name: str = Field(alias="indexName")
|
154
|
+
settings: AgentContextSettings = Field(..., description="Context settings")
|
155
|
+
|
156
|
+
model_config = ConfigDict(
|
157
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
158
|
+
)
|
159
|
+
|
160
|
+
|
161
|
+
class AgentEscalationChannelProperties(BaseModel):
|
162
|
+
"""Agent escalation channel properties."""
|
163
|
+
|
164
|
+
app_name: str = Field(..., alias="appName")
|
165
|
+
app_version: int = Field(..., alias="appVersion")
|
166
|
+
folder_name: Optional[str] = Field(..., alias="folderName")
|
167
|
+
resource_key: str = Field(..., alias="resourceKey")
|
168
|
+
is_actionable_message_enabled: Optional[bool] = Field(
|
169
|
+
None, alias="isActionableMessageEnabled"
|
170
|
+
)
|
171
|
+
actionable_message_meta_data: Optional[Any] = Field(
|
172
|
+
None, alias="actionableMessageMetaData"
|
173
|
+
)
|
174
|
+
|
175
|
+
model_config = ConfigDict(
|
176
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
177
|
+
)
|
178
|
+
|
179
|
+
|
180
|
+
class AgentEscalationChannel(BaseModel):
|
181
|
+
"""Agent escalation channel."""
|
182
|
+
|
183
|
+
id: str = Field(..., alias="id")
|
184
|
+
name: str = Field(..., alias="name")
|
185
|
+
type: str = Field(alias="type")
|
186
|
+
description: str = Field(..., alias="description")
|
187
|
+
input_schema: Dict[str, Any] = Field(
|
188
|
+
..., alias="inputSchema", description="Input schema for the escalation channel"
|
189
|
+
)
|
190
|
+
output_schema: Dict[str, Any] = Field(
|
191
|
+
...,
|
192
|
+
alias="outputSchema",
|
193
|
+
description="Output schema for the escalation channel",
|
194
|
+
)
|
195
|
+
properties: AgentEscalationChannelProperties = Field(..., alias="properties")
|
196
|
+
|
197
|
+
model_config = ConfigDict(
|
198
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
199
|
+
)
|
200
|
+
|
201
|
+
|
202
|
+
class AgentEscalationResourceConfig(BaseAgentResourceConfig):
|
203
|
+
"""Escalation resource with escalation-specific properties."""
|
204
|
+
|
205
|
+
resource_type: Literal[AgentResourceType.ESCALATION] = Field(alias="$resourceType")
|
206
|
+
channels: List[AgentEscalationChannel] = Field(alias="channels")
|
207
|
+
|
208
|
+
# escalation_type: int = Field(..., alias="escalationType")
|
209
|
+
is_agent_memory_enabled: bool = Field(alias="isAgentMemoryEnabled")
|
210
|
+
|
211
|
+
model_config = ConfigDict(
|
212
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
213
|
+
)
|
214
|
+
|
215
|
+
|
216
|
+
def custom_discriminator(data: Any) -> str:
|
217
|
+
"""Discriminator for resource types. This is required due to multi-key discrimination requirements for resources."""
|
218
|
+
if isinstance(data, dict):
|
219
|
+
resource_type = data.get("$resourceType")
|
220
|
+
if resource_type == AgentResourceType.CONTEXT:
|
221
|
+
return "AgentContextResourceConfig"
|
222
|
+
elif resource_type == AgentResourceType.ESCALATION:
|
223
|
+
return "AgentEscalationResourceConfig"
|
224
|
+
elif resource_type == AgentResourceType.TOOL:
|
225
|
+
tool_type = data.get("type")
|
226
|
+
if tool_type == AgentToolType.AGENT:
|
227
|
+
return "AgentProcessToolResourceConfig"
|
228
|
+
elif tool_type == AgentToolType.INTEGRATION:
|
229
|
+
return "AgentIntegrationToolResourceConfig"
|
230
|
+
else:
|
231
|
+
return "AgentUnknownToolResourceConfig"
|
232
|
+
else:
|
233
|
+
return "AgentUnknownResourceConfig"
|
234
|
+
raise ValueError("Invalid discriminator values")
|
235
|
+
|
236
|
+
|
237
|
+
AgentResourceConfig = Annotated[
|
238
|
+
Union[
|
239
|
+
Annotated[
|
240
|
+
AgentProcessToolResourceConfig, Tag("AgentProcessToolResourceConfig")
|
241
|
+
],
|
242
|
+
Annotated[
|
243
|
+
AgentIntegrationToolResourceConfig,
|
244
|
+
Tag("AgentIntegrationToolResourceConfig"),
|
245
|
+
],
|
246
|
+
Annotated[
|
247
|
+
AgentUnknownToolResourceConfig, Tag("AgentUnknownToolResourceConfig")
|
248
|
+
],
|
249
|
+
Annotated[AgentContextResourceConfig, Tag("AgentContextResourceConfig")],
|
250
|
+
Annotated[AgentEscalationResourceConfig, Tag("AgentEscalationResourceConfig")],
|
251
|
+
Annotated[AgentUnknownResourceConfig, Tag("AgentUnknownResourceConfig")],
|
252
|
+
],
|
253
|
+
Field(discriminator=Discriminator(custom_discriminator)),
|
254
|
+
]
|
255
|
+
|
256
|
+
|
257
|
+
class BaseAgentDefinition(BaseModel):
|
258
|
+
"""Main agent model."""
|
259
|
+
|
260
|
+
id: str = Field(..., description="Agent id or project name")
|
261
|
+
name: str = Field(..., description="Agent name or project name")
|
262
|
+
input_schema: Dict[str, Any] = Field(
|
263
|
+
..., alias="inputSchema", description="JSON schema for input arguments"
|
264
|
+
)
|
265
|
+
output_schema: Dict[str, Any] = Field(
|
266
|
+
..., alias="outputSchema", description="JSON schema for output arguments"
|
267
|
+
)
|
268
|
+
version: str = Field("1.0.0", description="Agent version")
|
269
|
+
resources: List[AgentResourceConfig] = Field(
|
270
|
+
..., description="List of tools, context, and escalation resources"
|
271
|
+
)
|
272
|
+
|
273
|
+
model_config = ConfigDict(
|
274
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
275
|
+
)
|
276
|
+
|
277
|
+
|
278
|
+
class AgentType(str, Enum):
|
279
|
+
"""Agent type."""
|
280
|
+
|
281
|
+
LOW_CODE = "lowCode"
|
282
|
+
|
283
|
+
|
284
|
+
class AgentMessageRole(str, Enum):
|
285
|
+
"""Enum for message roles."""
|
286
|
+
|
287
|
+
SYSTEM = "system"
|
288
|
+
USER = "user"
|
289
|
+
|
290
|
+
|
291
|
+
class AgentMessage(BaseModel):
|
292
|
+
"""Message model for agent conversations."""
|
293
|
+
|
294
|
+
role: AgentMessageRole
|
295
|
+
content: str
|
296
|
+
|
297
|
+
model_config = ConfigDict(
|
298
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
299
|
+
)
|
300
|
+
|
301
|
+
|
302
|
+
class AgentSettings(BaseModel):
|
303
|
+
"""Settings for agent configuration."""
|
304
|
+
|
305
|
+
engine: str = Field(..., description="Engine type, e.g., 'basic-v1'")
|
306
|
+
model: str = Field(..., description="LLM model identifier")
|
307
|
+
max_tokens: int = Field(
|
308
|
+
..., alias="maxTokens", description="Maximum number of tokens"
|
309
|
+
)
|
310
|
+
temperature: float = Field(..., description="Temperature for response generation")
|
311
|
+
|
312
|
+
model_config = ConfigDict(
|
313
|
+
validate_by_name=True, validate_by_alias=True, extra="allow"
|
314
|
+
)
|
315
|
+
|
316
|
+
|
317
|
+
class LowCodeAgentDefinition(BaseAgentDefinition):
|
318
|
+
"""Low code agent definition."""
|
319
|
+
|
320
|
+
type: Literal[AgentType.LOW_CODE] = AgentType.LOW_CODE
|
321
|
+
messages: List[AgentMessage] = Field(
|
322
|
+
..., description="List of system and user messages"
|
323
|
+
)
|
324
|
+
features: List[Any] = Field(
|
325
|
+
default_factory=list, description="Currently empty feature list"
|
326
|
+
)
|
327
|
+
settings: AgentSettings = Field(..., description="Agent settings configuration")
|
328
|
+
|
329
|
+
|
330
|
+
KnownAgentDefinition = Annotated[
|
331
|
+
Union[LowCodeAgentDefinition,],
|
332
|
+
Field(discriminator="type"),
|
333
|
+
]
|
334
|
+
|
335
|
+
|
336
|
+
class UnknownAgentDefinition(BaseAgentDefinition):
|
337
|
+
"""Fallback for unknown agent definitions."""
|
338
|
+
|
339
|
+
type: str
|
340
|
+
|
341
|
+
model_config = ConfigDict(extra="allow")
|
342
|
+
|
343
|
+
|
344
|
+
AgentDefinition = Union[KnownAgentDefinition, UnknownAgentDefinition]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: uipath
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.57
|
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
|
@@ -101,6 +101,7 @@ uipath/_utils/_ssl_context.py,sha256=xSYitos0eJc9cPHzNtHISX9PBvL6D2vas5G_GiBdLp8
|
|
101
101
|
uipath/_utils/_url.py,sha256=-4eluSrIZCUlnQ3qU17WPJkgaC2KwF9W5NeqGnTNGGo,2512
|
102
102
|
uipath/_utils/_user_agent.py,sha256=pVJkFYacGwaQBomfwWVAvBQgdBUo62e4n3-fLIajWUU,563
|
103
103
|
uipath/_utils/constants.py,sha256=defPi1_4sLojgKVsbdIjkfME8O8n-iLmJnj_-n4Ox8s,1108
|
104
|
+
uipath/agent/_utils.py,sha256=Z5x7TprkEudrd_aC9YI5ObyT8O05_WkmBJTpqkQKOGQ,1641
|
104
105
|
uipath/agent/conversation/__init__.py,sha256=5hK-Iz131mnd9m6ANnpZZffxXZLVFDQ9GTg5z9ik1oQ,5265
|
105
106
|
uipath/agent/conversation/async_stream.py,sha256=BA_8uU1DgE3VpU2KkJj0rkI3bAHLk_ZJKsajR0ipMpo,2055
|
106
107
|
uipath/agent/conversation/citation.py,sha256=42dGv-wiYx3Lt7MPuPCFTkjAlSADFSzjyNXuZHdxqvo,2253
|
@@ -111,6 +112,7 @@ uipath/agent/conversation/exchange.py,sha256=nuk1tEMBHc_skrraT17d8U6AtyJ3h07ExGQ
|
|
111
112
|
uipath/agent/conversation/message.py,sha256=1ZkEs146s79TrOAWCQwzBAEJvjAu4lQBpJ64tKXDgGE,2142
|
112
113
|
uipath/agent/conversation/meta.py,sha256=3t0eS9UHoAPHre97QTUeVbjDhnMX4zj4-qG6ju0B8wY,315
|
113
114
|
uipath/agent/conversation/tool.py,sha256=ol8XI8AVd-QNn5auXNBPcCzOkh9PPFtL7hTK3kqInkU,2191
|
115
|
+
uipath/agent/models/agent.py,sha256=jhBxZwNRsB-1F-aD6ZELWaX3cFzgGIJ25cCHIb-RzhE,10965
|
114
116
|
uipath/eval/_helpers/__init__.py,sha256=GSmZMryjuO3Wo_zdxZdrHCRRsgOxsVFYkYgJ15YNC3E,86
|
115
117
|
uipath/eval/_helpers/helpers.py,sha256=iE2HHdMiAdAMLqxHkPKHpfecEtAuN5BTBqvKFTI8ciE,1315
|
116
118
|
uipath/eval/evaluators/__init__.py,sha256=DJAAhgv0I5UfBod4sGnSiKerfrz1iMmk7GNFb71V8eI,494
|
@@ -148,8 +150,8 @@ uipath/tracing/_traced.py,sha256=CsuNMy67R5HCunuu84LnRNwcadNLhtHLMEawGaNsTYs,184
|
|
148
150
|
uipath/tracing/_utils.py,sha256=wJRELaPu69iY0AhV432Dk5QYf_N_ViRU4kAUG1BI1ew,10384
|
149
151
|
uipath/utils/__init__.py,sha256=VD-KXFpF_oWexFg6zyiWMkxl2HM4hYJMIUDZ1UEtGx0,105
|
150
152
|
uipath/utils/_endpoints_manager.py,sha256=iRTl5Q0XAm_YgcnMcJOXtj-8052sr6jpWuPNz6CgT0Q,8408
|
151
|
-
uipath-2.1.
|
152
|
-
uipath-2.1.
|
153
|
-
uipath-2.1.
|
154
|
-
uipath-2.1.
|
155
|
-
uipath-2.1.
|
153
|
+
uipath-2.1.57.dist-info/METADATA,sha256=LZV3q6VHuyZ0YY919szKSEItcd9Ir0p4wocixl1r7T0,6482
|
154
|
+
uipath-2.1.57.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
155
|
+
uipath-2.1.57.dist-info/entry_points.txt,sha256=9C2_29U6Oq1ExFu7usihR-dnfIVNSKc-0EFbh0rskB4,43
|
156
|
+
uipath-2.1.57.dist-info/licenses/LICENSE,sha256=-KBavWXepyDjimmzH5fVAsi-6jNVpIKFc2kZs0Ri4ng,1058
|
157
|
+
uipath-2.1.57.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|