uipath 2.1.49__py3-none-any.whl → 2.1.51__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.
@@ -0,0 +1,286 @@
1
+ from enum import Enum
2
+ from typing import Any, Dict, List, Optional, Type, Union, get_args, get_origin
3
+
4
+ from pydantic import BaseModel, ConfigDict, Field, create_model
5
+
6
+
7
+ class ReferenceType(Enum):
8
+ ManyToOne = "ManyToOne"
9
+
10
+
11
+ class FieldDisplayType(Enum):
12
+ Basic = "Basic"
13
+ Relationship = "Relationship"
14
+ File = "File"
15
+ ChoiceSetSingle = "ChoiceSetSingle"
16
+ ChoiceSetMultiple = "ChoiceSetMultiple"
17
+ AutoNumber = "AutoNumber"
18
+
19
+
20
+ class DataDirectionType(Enum):
21
+ ReadOnly = "ReadOnly"
22
+ ReadAndWrite = "ReadAndWrite"
23
+
24
+
25
+ class JoinType(Enum):
26
+ LeftJoin = "LeftJoin"
27
+
28
+
29
+ class EntityType(Enum):
30
+ Entity = "Entity"
31
+ ChoiceSet = "ChoiceSet"
32
+ InternalEntity = "InternalEntity"
33
+ SystemEntity = "SystemEntity"
34
+
35
+
36
+ class EntityFieldMetadata(BaseModel):
37
+ model_config = ConfigDict(
38
+ validate_by_name=True,
39
+ )
40
+ type: str
41
+ required: bool
42
+ name: str
43
+
44
+
45
+ class ExternalConnection(BaseModel):
46
+ model_config = ConfigDict(
47
+ validate_by_name=True,
48
+ validate_by_alias=True,
49
+ )
50
+ id: str
51
+ connection_id: str = Field(alias="connectionId")
52
+ element_instance_id: str = Field(alias="elementInstanceId")
53
+ folder_id: str = Field(alias="folderKey") # named folderKey in TS SDK
54
+ connector_id: str = Field(alias="connectorKey") # named connectorKey in TS SDK
55
+ connector_name: str = Field(alias="connectorName")
56
+ connection_name: str = Field(alias="connectionName")
57
+
58
+
59
+ class ExternalFieldMapping(BaseModel):
60
+ model_config = ConfigDict(
61
+ validate_by_name=True,
62
+ validate_by_alias=True,
63
+ )
64
+ id: str
65
+ external_field_name: str = Field(alias="externalFieldName")
66
+ external_field_display_name: str = Field(alias="externalFieldDisplayName")
67
+ external_object_id: str = Field(alias="externalObjectId")
68
+ external_field_type: str = Field(alias="externalFieldType")
69
+ internal_field_id: str = Field(alias="internalFieldId")
70
+ direction_type: DataDirectionType = Field(alias="directionType")
71
+
72
+
73
+ class FieldDataType(BaseModel):
74
+ model_config = ConfigDict(
75
+ validate_by_name=True,
76
+ validate_by_alias=True,
77
+ )
78
+ name: str
79
+ length_limit: Optional[int] = Field(default=None, alias="LengthLimit")
80
+ max_value: Optional[int] = Field(default=None, alias="MaxValue")
81
+ min_value: Optional[int] = Field(default=None, alias="MinValue")
82
+ decimal_precision: Optional[int] = Field(default=None, alias="DecimalPrecision")
83
+
84
+
85
+ class FieldMetadata(BaseModel):
86
+ model_config = ConfigDict(
87
+ validate_by_name=True,
88
+ validate_by_alias=True,
89
+ )
90
+ id: Optional[str] = Field(default=None, alias="id")
91
+ name: str
92
+ is_primary_key: bool = Field(alias="isPrimaryKey")
93
+ is_foreign_key: bool = Field(alias="isForeignKey")
94
+ is_external_field: bool = Field(alias="isExternalField")
95
+ is_hidden_field: bool = Field(alias="isHiddenField")
96
+ is_unique: bool = Field(alias="isUnique")
97
+ reference_name: Optional[str] = Field(default=None, alias="referenceName")
98
+ reference_entity: Optional["Entity"] = Field(default=None, alias="referenceEntity")
99
+ reference_choiceset: Optional["Entity"] = Field(
100
+ default=None, alias="referenceChoiceset"
101
+ )
102
+ reference_field: Optional["EntityField"] = Field(
103
+ default=None, alias="referenceField"
104
+ )
105
+ reference_type: ReferenceType = Field(alias="referenceType")
106
+ sql_type: "FieldDataType" = Field(alias="sqlType")
107
+ is_required: bool = Field(alias="isRequired")
108
+ display_name: str = Field(alias="displayName")
109
+ description: Optional[str] = Field(default=None, alias="description")
110
+ is_system_field: bool = Field(alias="isSystemField")
111
+ field_display_type: Optional[str] = Field(
112
+ default=None, alias="fieldDisplayType"
113
+ ) # Should be FieldDisplayType enum
114
+ choiceset_id: Optional[str] = Field(default=None, alias="choicesetId")
115
+ default_value: Optional[str] = Field(default=None, alias="defaultValue")
116
+ is_attachment: bool = Field(alias="isAttachment")
117
+ is_rbac_enabled: bool = Field(alias="isRbacEnabled")
118
+
119
+
120
+ class ExternalField(BaseModel):
121
+ model_config = ConfigDict(
122
+ validate_by_name=True,
123
+ validate_by_alias=True,
124
+ )
125
+ field_metadata: FieldMetadata = Field(alias="fieldMetadata")
126
+ external_field_mapping_detail: ExternalFieldMapping = Field(
127
+ alias="externalFieldMappingDetail"
128
+ )
129
+
130
+
131
+ class EntityField(BaseModel):
132
+ model_config = ConfigDict(
133
+ validate_by_name=True,
134
+ )
135
+ id: Optional[str] = Field(default=None, alias="id")
136
+ definition: Optional[FieldMetadata] = Field(default=None, alias="definition")
137
+
138
+
139
+ class ExternalObject(BaseModel):
140
+ model_config = ConfigDict(
141
+ validate_by_name=True,
142
+ validate_by_alias=True,
143
+ )
144
+ id: str
145
+ external_object_name: str = Field(alias="externalObjectName")
146
+ external_object_display_name: str = Field(alias="externalObjectDisplayName")
147
+ primary_key: str = Field(alias="primaryKey")
148
+ external_connection_id: str = Field(alias="externalConnectionId")
149
+ entity_id: str = Field(alias="entityId")
150
+ is_primary_source: bool = Field(alias="isPrimarySource")
151
+
152
+
153
+ class ExternalSourceFields(BaseModel):
154
+ model_config = ConfigDict(
155
+ validate_by_name=True,
156
+ validate_by_alias=True,
157
+ )
158
+ fields: List[ExternalField]
159
+ external_object_detail: ExternalObject = Field(alias="externalObject")
160
+ external_connection_detail: ExternalConnection = Field(alias="externalConnection")
161
+
162
+
163
+ class SourceJoinCriteria(BaseModel):
164
+ model_config = ConfigDict(
165
+ validate_by_name=True,
166
+ validate_by_alias=True,
167
+ )
168
+ id: str
169
+ entity_id: str = Field(alias="entityId")
170
+ join_field_name: str = Field(alias="joinFieldName")
171
+ join_type: str = Field(alias="joinType")
172
+ related_source_object_id: str = Field(alias="relatedSourceObjectId")
173
+ related_source_object_field_name: str = Field(alias="relatedSourceObjectFieldName")
174
+ related_source_field_name: str = Field(alias="relatedSourceFieldName")
175
+
176
+
177
+ class EntityRecord(BaseModel):
178
+ model_config = {
179
+ "validate_by_name": True,
180
+ "validate_by_alias": True,
181
+ "extra": "allow",
182
+ }
183
+
184
+ id: str = Field(alias="Id") # Mandatory field validated by Pydantic
185
+
186
+ @classmethod
187
+ def from_data(
188
+ cls, data: Dict[str, Any], model: Optional[Any] = None
189
+ ) -> "EntityRecord":
190
+ """Create an EntityRecord instance by validating raw data and optionally instantiating a custom model.
191
+
192
+ :param data: Raw data dictionary for the entity.
193
+ :param model: Optional user-defined class for validation.
194
+ :return: EntityRecord instance
195
+ """
196
+ # Validate the "Id" field is mandatory and must be a string
197
+ id_value = data.get("Id", None)
198
+ if id_value is None or not isinstance(id_value, str):
199
+ raise ValueError("Field 'Id' is mandatory and must be a string.")
200
+
201
+ if model:
202
+ # Check if the model is a plain Python class or Pydantic model
203
+ cls._validate_against_user_model(data, model)
204
+
205
+ return cls(**data)
206
+
207
+ @staticmethod
208
+ def _validate_against_user_model(
209
+ data: Dict[str, Any], user_class: Type[Any]
210
+ ) -> None:
211
+ user_class_annotations = getattr(user_class, "__annotations__", None)
212
+ if user_class_annotations is None:
213
+ raise ValueError(
214
+ f"User-provided class '{user_class.__name__}' is missing type annotations."
215
+ )
216
+
217
+ # Dynamically define a Pydantic model based on the user's class annotations
218
+ # Fields must be valid type annotations directly
219
+ pydantic_fields = {}
220
+
221
+ for name, annotation in user_class_annotations.items():
222
+ is_optional = False
223
+
224
+ origin = get_origin(annotation)
225
+ args = get_args(annotation)
226
+
227
+ # Handle Optional[...] or X | None
228
+ if origin is Union and type(None) in args:
229
+ is_optional = True
230
+
231
+ # Check for optional fields
232
+ if is_optional:
233
+ pydantic_fields[name] = (annotation, None) # Not required
234
+ else:
235
+ pydantic_fields[name] = (annotation, ...) # type: ignore
236
+
237
+ # Dynamically create the Pydantic model class
238
+ dynamic_model = create_model(
239
+ f"Dynamic_{user_class.__name__}",
240
+ **pydantic_fields, # type: ignore
241
+ )
242
+
243
+ # Validate input data
244
+ dynamic_model.model_validate(data)
245
+
246
+
247
+ class Entity(BaseModel):
248
+ model_config = ConfigDict(
249
+ validate_by_name=True,
250
+ validate_by_alias=True,
251
+ )
252
+
253
+ name: str
254
+ display_name: str = Field(alias="displayName")
255
+ entity_type: str = Field(alias="entityType")
256
+ description: Optional[str] = Field(default=None, alias="description")
257
+ fields: Optional[List[FieldMetadata]] = Field(default=None, alias="fields")
258
+ external_fields: Optional[List[ExternalSourceFields]] = Field(
259
+ default=None, alias="externalFields"
260
+ )
261
+ source_join_criteria: Optional[List[SourceJoinCriteria]] = Field(
262
+ default=None, alias="sourceJoinCriteria"
263
+ )
264
+ record_count: Optional[int] = Field(default=None, alias="recordCount")
265
+ storage_size_in_mb: Optional[float] = Field(default=None, alias="storageSizeInMB")
266
+ used_storage_size_in_mb: Optional[float] = Field(
267
+ default=None, alias="usedStorageSizeInMB"
268
+ )
269
+ attachment_size_in_byte: Optional[int] = Field(
270
+ default=None, alias="attachmentSizeInBytes"
271
+ )
272
+ is_rbac_enabled: bool = Field(alias="isRbacEnabled")
273
+ id: str
274
+
275
+
276
+ class EntityRecordsBatchResponse(BaseModel):
277
+ model_config = ConfigDict(
278
+ validate_by_name=True,
279
+ validate_by_alias=True,
280
+ )
281
+
282
+ success_records: List[EntityRecord] = Field(alias="successRecords")
283
+ failure_records: List[EntityRecord] = Field(alias="failureRecords")
284
+
285
+
286
+ Entity.model_rebuild()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uipath
3
- Version: 2.1.49
3
+ Version: 2.1.51
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
@@ -2,15 +2,15 @@ uipath/__init__.py,sha256=IaeKItOOQXMa95avueJ3dAq-XcRHyZVNjcCGwlSB000,634
2
2
  uipath/_config.py,sha256=pi3qxPzDTxMEstj_XkGOgKJqD6RTHHv7vYv8sS_-d5Q,92
3
3
  uipath/_execution_context.py,sha256=Qo8VMUFgtiL-40KsZrvul5bGv1CRERle_fCw1ORCggY,2374
4
4
  uipath/_folder_context.py,sha256=D-bgxdwpwJP4b_QdVKcPODYh15kMDrOar2xNonmMSm4,1861
5
- uipath/_uipath.py,sha256=lDsF2rBurqxm24DlRan25z9SU9t9b2RkAGvoI645QSw,4314
5
+ uipath/_uipath.py,sha256=p2ccvWpzBXAGFSSF_YaaSWdEqzMmRt786d0pFWrCEwU,4463
6
6
  uipath/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  uipath/_cli/README.md,sha256=GLtCfbeIKZKNnGTCsfSVqRQ27V1btT1i2bSAyW_xZl4,474
8
- uipath/_cli/__init__.py,sha256=kf4GINkunFGMZkTk2Z4f1Q3-OsxpNnV6u_9BsBt1i0E,2229
8
+ uipath/_cli/__init__.py,sha256=tscKceSouYcEOxUbGjoyHi4qGi74giBFeXG1I-ut1hs,2308
9
9
  uipath/_cli/cli_auth.py,sha256=i3ykLlCg68xgPXHHaa0agHwGFIiLiTLzOiF6Su8XaEo,2436
10
10
  uipath/_cli/cli_deploy.py,sha256=KPCmQ0c_NYD5JofSDao5r6QYxHshVCRxlWDVnQvlp5w,645
11
11
  uipath/_cli/cli_dev.py,sha256=nEfpjw1PZ72O6jmufYWVrueVwihFxDPOeJakdvNHdOA,2146
12
12
  uipath/_cli/cli_eval.py,sha256=fYJWQlyiIc8SpTzY9QPNQWOx40PagMEKdsGZIu9As2A,4402
13
- uipath/_cli/cli_init.py,sha256=ls577uNm2zWccknIhtVFS3ah2ds0QSy2_TgMp6z7Wt4,6049
13
+ uipath/_cli/cli_init.py,sha256=Ac3-9tIH3rpikIX1ehWTo7InW5tjVNoz_w6fjvgLK4w,7052
14
14
  uipath/_cli/cli_invoke.py,sha256=4jyhqcy7tPrpxvaUhW-9gut6ddsCGMdJJcpOXXmIe8g,4348
15
15
  uipath/_cli/cli_new.py,sha256=9378NYUBc9j-qKVXV7oja-jahfJhXBg8zKVyaon7ctY,2102
16
16
  uipath/_cli/cli_pack.py,sha256=NmwZTfwZ2fURiHyiX1BM0juAtBOjPB1Jmcpu-rD7p-4,11025
@@ -45,7 +45,7 @@ uipath/_cli/_dev/_terminal/_utils/_chat.py,sha256=YUZxYVdmEManwHDuZsczJT1dWIYE1d
45
45
  uipath/_cli/_dev/_terminal/_utils/_exporter.py,sha256=oI6D_eMwrh_2aqDYUh4GrJg8VLGrLYhDahR-_o0uJns,4144
46
46
  uipath/_cli/_dev/_terminal/_utils/_logger.py,sha256=jeNShEED27cNIHTe_NNx-2kUiXpSLTmi0onM6tVkqRM,888
47
47
  uipath/_cli/_evals/_runtime.py,sha256=q4h3zp_7Ygkhj1zE_YTKKXRp3BhkHaPj8CWqjkzerTk,4748
48
- uipath/_cli/_evals/progress_reporter.py,sha256=m1Dio1vG-04nFTFz5ijM_j1dhudlgOzQukmTkkg6wS4,11490
48
+ uipath/_cli/_evals/progress_reporter.py,sha256=PGt1rs7IH1C6HPw8fWUwb98GB3UBuM6eUiiqGthfCIk,11174
49
49
  uipath/_cli/_evals/_evaluators/__init__.py,sha256=jD7KNLjbsUpsESFXX11eW2MEPXDNuPp2-t-IPB-inlM,734
50
50
  uipath/_cli/_evals/_evaluators/_deterministic_evaluator_base.py,sha256=BTl0puBjp9iCsU3YFfYWqk4TOz4iE19O3q1-dK6qUOI,1723
51
51
  uipath/_cli/_evals/_evaluators/_evaluator_base.py,sha256=knHUwYFt0gMG1uJhq5TGEab6M_YevxX019yT3yYwZsw,3787
@@ -83,7 +83,8 @@ uipath/_cli/_utils/_project_files.py,sha256=a_mhBN0CLp2h56DYswjE79BP3M_LpIMYteJc
83
83
  uipath/_cli/_utils/_studio_project.py,sha256=HvzcpIIIA4hUIvMbId1dsAhmFLMuhnS2ZtyNdcpXJ8c,15422
84
84
  uipath/_cli/_utils/_tracing.py,sha256=2igb03j3EHjF_A406UhtCKkPfudVfFPjUq5tXUEG4oo,1541
85
85
  uipath/_cli/_utils/_uv_helpers.py,sha256=6SvoLnZPoKIxW0sjMvD1-ENV_HOXDYzH34GjBqwT138,3450
86
- uipath/_services/__init__.py,sha256=10xtw3ENC30yR9CCq_b94RMZ3YrUeyfHV33yWYUd8tU,896
86
+ uipath/_resources/AGENTS.md,sha256=YWhWuX9XIbyVhVT3PnPc4Of3_q6bsNJcuzYu3N8f_Ug,25850
87
+ uipath/_services/__init__.py,sha256=W08UO7ZBQRD8LBHsC6gaM4YBSUl8az0S4d6iZSKsdPE,965
87
88
  uipath/_services/_base_service.py,sha256=x9-9jhPzn9Z16KRdFHhJNvV-FZHvTniMsDfxlS4Cutk,5782
88
89
  uipath/_services/actions_service.py,sha256=2RPMR-hFMsOlqEyjIf3aF7-lrf57jdrSD0pBjj0Kyko,16040
89
90
  uipath/_services/api_client.py,sha256=kGm04ijk9AOEQd2BMxvQg-2QoB8dmyoDwFFDPyutAGw,1966
@@ -91,10 +92,11 @@ uipath/_services/assets_service.py,sha256=pG0Io--SeiRRQmfUWPQPl1vq3csZlQgx30LBNK
91
92
  uipath/_services/attachments_service.py,sha256=NPQYK7CGjfBaNT_1S5vEAfODmOChTbQZforllFM2ofU,26678
92
93
  uipath/_services/buckets_service.py,sha256=5s8tuivd7GUZYj774DDUYTa0axxlUuesc4EBY1V5sdk,18496
93
94
  uipath/_services/connections_service.py,sha256=Rf-DCm43tsDM6Cfp41iwGR4gUk_YCdobGcmbSoKvQ6E,7480
94
- uipath/_services/context_grounding_service.py,sha256=EBf7lIIYz_s1ubf_07OAZXQHjS8kpZ2vqxo4mI3VL-A,25009
95
+ uipath/_services/context_grounding_service.py,sha256=kp7h6Hd-VUuTqiDO-G7IanmXhaq0XHjXUk0ISFev-5c,24835
96
+ uipath/_services/entities_service.py,sha256=QKCLE6wRgq3HZraF-M2mljy-8il4vsNHrQhUgkewVVk,14028
95
97
  uipath/_services/folder_service.py,sha256=9JqgjKhWD-G_KUnfUTP2BADxL6OK9QNZsBsWZHAULdE,2749
96
- uipath/_services/jobs_service.py,sha256=UwsY0Cir7Yd5_mTeH0uHLmcmQZpdbT8KNx3z3F0cHZA,32775
97
- uipath/_services/llm_gateway_service.py,sha256=oZR--75V8ULdLjVC7lo-lJ5786J_qfXUDe0R9iWNAKs,24306
98
+ uipath/_services/jobs_service.py,sha256=tTZNsdZKN3uP7bWPQyBCpJeQxTfuOWbKYOR4L-_yJo4,32736
99
+ uipath/_services/llm_gateway_service.py,sha256=Ka1WCoOBKJfIlm7H9NmbKAPr27UYDYQCTExMbLKMY68,24249
98
100
  uipath/_services/processes_service.py,sha256=O_uHgQ1rnwiV5quG0OQqabAnE6Rf6cWrMENYY2jKWt8,8585
99
101
  uipath/_services/queues_service.py,sha256=VaG3dWL2QK6AJBOLoW2NQTpkPfZjsqsYPl9-kfXPFzA,13534
100
102
  uipath/_utils/__init__.py,sha256=VdcpnENJIa0R6Y26NoxY64-wUVyvb4pKfTh1wXDQeMk,526
@@ -129,6 +131,7 @@ uipath/models/buckets.py,sha256=N3Lj_dVCv709-ywhOOdyCSvsuLn41eGuAfSiik6Q6F8,1285
129
131
  uipath/models/connections.py,sha256=V6Ecx10HBDO2HGaIGG8NGx4q2sEhViAoPOUgPosPfvE,2418
130
132
  uipath/models/context_grounding.py,sha256=3MaF2Fv2QYle8UUWvKGkCN5XGpx2T4a34fdbBqJ2fCs,1137
131
133
  uipath/models/context_grounding_index.py,sha256=OhRyxZDHDSrEmBFK0-JLqMMMT64jir4XkHtQ54IKtc0,2683
134
+ uipath/models/entities.py,sha256=x6jbq4o_QhgL_pCgvHFsp9O8l333kQhn8e9ZCBs72UM,9823
132
135
  uipath/models/errors.py,sha256=WCxxHBlLzLF17YxjqsFkkyBLwEQM_dc6fFU5qmBjD4A,597
133
136
  uipath/models/exceptions.py,sha256=F0ITAhJsl6Agvmnv4nxvgY5oC_lrYIlxWTLs0yx859M,1636
134
137
  uipath/models/interrupt_models.py,sha256=UzuVTMVesI204YQ4qFQFaN-gN3kksddkrujofcaC7zQ,881
@@ -145,8 +148,8 @@ uipath/tracing/_traced.py,sha256=qeVDrds2OUnpdUIA0RhtF0kg2dlAZhyC1RRkI-qivTM,185
145
148
  uipath/tracing/_utils.py,sha256=wJRELaPu69iY0AhV432Dk5QYf_N_ViRU4kAUG1BI1ew,10384
146
149
  uipath/utils/__init__.py,sha256=VD-KXFpF_oWexFg6zyiWMkxl2HM4hYJMIUDZ1UEtGx0,105
147
150
  uipath/utils/_endpoints_manager.py,sha256=iRTl5Q0XAm_YgcnMcJOXtj-8052sr6jpWuPNz6CgT0Q,8408
148
- uipath-2.1.49.dist-info/METADATA,sha256=P2ab9mn67546ol40e40jUyA0fsS1SM9mefHzryHG5zw,6482
149
- uipath-2.1.49.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
150
- uipath-2.1.49.dist-info/entry_points.txt,sha256=9C2_29U6Oq1ExFu7usihR-dnfIVNSKc-0EFbh0rskB4,43
151
- uipath-2.1.49.dist-info/licenses/LICENSE,sha256=-KBavWXepyDjimmzH5fVAsi-6jNVpIKFc2kZs0Ri4ng,1058
152
- uipath-2.1.49.dist-info/RECORD,,
151
+ uipath-2.1.51.dist-info/METADATA,sha256=eCmpOjEple77twr2UUCa3-mSTvU0SnozK-4TRqdhdjY,6482
152
+ uipath-2.1.51.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
153
+ uipath-2.1.51.dist-info/entry_points.txt,sha256=9C2_29U6Oq1ExFu7usihR-dnfIVNSKc-0EFbh0rskB4,43
154
+ uipath-2.1.51.dist-info/licenses/LICENSE,sha256=-KBavWXepyDjimmzH5fVAsi-6jNVpIKFc2kZs0Ri4ng,1058
155
+ uipath-2.1.51.dist-info/RECORD,,