dtlpy 1.104.14__py3-none-any.whl → 1.106.5__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.
- dtlpy/__init__.py +0 -8
- dtlpy/__version__.py +1 -1
- dtlpy/entities/annotation.py +11 -0
- dtlpy/entities/annotation_definitions/box.py +5 -62
- dtlpy/entities/compute.py +1 -0
- dtlpy/entities/dataset.py +43 -11
- dtlpy/entities/item.py +16 -3
- dtlpy/entities/ontology.py +4 -1
- dtlpy/entities/prompt_item.py +9 -0
- dtlpy/entities/service.py +0 -6
- dtlpy/new_instance.py +0 -3
- dtlpy/repositories/annotations.py +26 -0
- dtlpy/repositories/computes.py +10 -4
- dtlpy/repositories/datasets.py +45 -9
- dtlpy/repositories/downloader.py +10 -3
- dtlpy/repositories/integrations.py +115 -27
- dtlpy/repositories/items.py +40 -2
- dtlpy/repositories/projects.py +0 -8
- dtlpy/repositories/settings.py +0 -13
- dtlpy/repositories/tasks.py +33 -0
- dtlpy/services/api_client.py +0 -53
- dtlpy/services/check_sdk.py +0 -26
- {dtlpy-1.104.14.dist-info → dtlpy-1.106.5.dist-info}/METADATA +1 -1
- {dtlpy-1.104.14.dist-info → dtlpy-1.106.5.dist-info}/RECORD +32 -32
- tests/features/environment.py +34 -0
- {dtlpy-1.104.14.data → dtlpy-1.106.5.data}/scripts/dlp +0 -0
- {dtlpy-1.104.14.data → dtlpy-1.106.5.data}/scripts/dlp.bat +0 -0
- {dtlpy-1.104.14.data → dtlpy-1.106.5.data}/scripts/dlp.py +0 -0
- {dtlpy-1.104.14.dist-info → dtlpy-1.106.5.dist-info}/LICENSE +0 -0
- {dtlpy-1.104.14.dist-info → dtlpy-1.106.5.dist-info}/WHEEL +0 -0
- {dtlpy-1.104.14.dist-info → dtlpy-1.106.5.dist-info}/entry_points.txt +0 -0
- {dtlpy-1.104.14.dist-info → dtlpy-1.106.5.dist-info}/top_level.txt +0 -0
dtlpy/repositories/downloader.py
CHANGED
|
@@ -46,7 +46,8 @@ class Downloader:
|
|
|
46
46
|
export_png_files=False,
|
|
47
47
|
filter_output_annotations=False,
|
|
48
48
|
alpha=1,
|
|
49
|
-
export_version=entities.ExportVersion.V1
|
|
49
|
+
export_version=entities.ExportVersion.V1,
|
|
50
|
+
dataset_lock=False
|
|
50
51
|
):
|
|
51
52
|
"""
|
|
52
53
|
Download dataset by filters.
|
|
@@ -72,6 +73,7 @@ class Downloader:
|
|
|
72
73
|
:param filter_output_annotations: default - False, given an export by filter - determine if to filter out annotations
|
|
73
74
|
:param alpha: opacity value [0 1], default 1
|
|
74
75
|
:param str export_version: exported items will have original extension in filename, `V1` - no original extension in filenames
|
|
76
|
+
:param bool dataset_lock: optional - default = False
|
|
75
77
|
:return: Output (list)
|
|
76
78
|
"""
|
|
77
79
|
|
|
@@ -195,7 +197,8 @@ class Downloader:
|
|
|
195
197
|
'include_annotations_in_output': include_annotations_in_output,
|
|
196
198
|
'export_png_files': export_png_files,
|
|
197
199
|
'filter_output_annotations': filter_output_annotations,
|
|
198
|
-
'export_version': export_version
|
|
200
|
+
'export_version': export_version,
|
|
201
|
+
'dataset_lock': dataset_lock
|
|
199
202
|
})
|
|
200
203
|
###############
|
|
201
204
|
# downloading #
|
|
@@ -361,7 +364,8 @@ class Downloader:
|
|
|
361
364
|
include_annotations_in_output=True,
|
|
362
365
|
export_png_files=False,
|
|
363
366
|
filter_output_annotations=False,
|
|
364
|
-
export_version=entities.ExportVersion.V1
|
|
367
|
+
export_version=entities.ExportVersion.V1,
|
|
368
|
+
dataset_lock=False
|
|
365
369
|
):
|
|
366
370
|
"""
|
|
367
371
|
Download annotations json for entire dataset
|
|
@@ -375,6 +379,7 @@ class Downloader:
|
|
|
375
379
|
:param export_png_files: default - if True, semantic annotations should be exported as png files
|
|
376
380
|
:param filter_output_annotations: default - False, given an export by filter - determine if to filter out annotations
|
|
377
381
|
:param str export_version: exported items will have original extension in filename, `V1` - no original extension in filenames
|
|
382
|
+
:param bool dataset_lock: optional - default = False
|
|
378
383
|
:return:
|
|
379
384
|
"""
|
|
380
385
|
local_path = os.path.join(local_path, "json")
|
|
@@ -397,6 +402,8 @@ class Downloader:
|
|
|
397
402
|
if annotation_filters is not None:
|
|
398
403
|
payload['annotationsQuery'] = annotation_filters.prepare()
|
|
399
404
|
payload['annotations']['filter'] = filter_output_annotations
|
|
405
|
+
if dataset_lock:
|
|
406
|
+
payload['datasetLock'] = dataset_lock
|
|
400
407
|
|
|
401
408
|
success, response = dataset._client_api.gen_request(req_type='post',
|
|
402
409
|
path='/datasets/{}/export'.format(dataset.id),
|
|
@@ -114,6 +114,8 @@ class Integrations:
|
|
|
114
114
|
aws-cross - {}
|
|
115
115
|
gcp-cross - {}
|
|
116
116
|
gcp-workload-identity-federation - {"secret": "", "content": "{}", "clientId": ""}
|
|
117
|
+
private-registry (ECR) - {"name": "", "spec": {"accessKeyId": "", "secretAccessKey": "", "account": "", "region": ""}}
|
|
118
|
+
private-registry (GAR) - {"name": "", "spec": {"password": ""}} (can use generate_gar_options to generate the options)
|
|
117
119
|
|
|
118
120
|
**Prerequisites**: You must be an *owner* in the organization.
|
|
119
121
|
|
|
@@ -129,7 +131,7 @@ class Integrations:
|
|
|
129
131
|
.. code-block:: python
|
|
130
132
|
|
|
131
133
|
project.integrations.create(integrations_type=dl.IntegrationType.S3,
|
|
132
|
-
name='
|
|
134
|
+
name='S3Integration',
|
|
133
135
|
options={key: "Access key ID", secret: "Secret access key"})
|
|
134
136
|
"""
|
|
135
137
|
|
|
@@ -144,7 +146,9 @@ class Integrations:
|
|
|
144
146
|
organization_id = self.org.id
|
|
145
147
|
|
|
146
148
|
url_path = '/orgs/{}/integrations'.format(organization_id)
|
|
147
|
-
payload = {"type": integrations_type.value if isinstance(integrations_type,
|
|
149
|
+
payload = {"type": integrations_type.value if isinstance(integrations_type,
|
|
150
|
+
entities.IntegrationType) else integrations_type,
|
|
151
|
+
'name': name, 'options': options}
|
|
148
152
|
if metadata is not None:
|
|
149
153
|
payload['metadata'] = metadata
|
|
150
154
|
success, response = self._client_api.gen_request(req_type='post',
|
|
@@ -300,21 +304,8 @@ class Integrations:
|
|
|
300
304
|
available_integrations = miscellaneous.List(response.json())
|
|
301
305
|
return available_integrations
|
|
302
306
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
return self.create(
|
|
306
|
-
integrations_type='private-registry',
|
|
307
|
-
name='gar-1',
|
|
308
|
-
metadata={"provider": "gcp"},
|
|
309
|
-
options={
|
|
310
|
-
"name": "_json_key",
|
|
311
|
-
"spec": {
|
|
312
|
-
"password": password
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
)
|
|
316
|
-
|
|
317
|
-
def __create_gar_password(self, service_account: str, location: str) -> str:
|
|
307
|
+
@staticmethod
|
|
308
|
+
def generate_gar_options(service_account: str, location: str, email: str = None) -> dict:
|
|
318
309
|
"""
|
|
319
310
|
Generates a Google Artifact Registry JSON configuration and returns it as a base64-encoded string.
|
|
320
311
|
|
|
@@ -330,22 +321,119 @@ class Integrations:
|
|
|
330
321
|
Returns:
|
|
331
322
|
str: A base64-encoded string representation of the repository JSON configuration.
|
|
332
323
|
"""
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
324
|
+
return IntegrationUtils.generate_gar_options(service_account=service_account, location=location, email=email)
|
|
325
|
+
|
|
326
|
+
@staticmethod
|
|
327
|
+
def generate_docker_hub_options(username: str, password: str, email: str = None) -> dict:
|
|
328
|
+
"""
|
|
329
|
+
Generates a Docker Hub JSON configuration and returns it as a base64-encoded string.
|
|
330
|
+
|
|
331
|
+
Parameters:
|
|
332
|
+
username (str): The Docker Hub username.
|
|
333
|
+
password (str): The Docker Hub password.
|
|
334
|
+
email (str): Optional - Docker Hub email.
|
|
335
|
+
|
|
336
|
+
Returns:
|
|
337
|
+
str: A base64-encoded string representation of the repository JSON configuration.
|
|
338
|
+
"""
|
|
339
|
+
return IntegrationUtils.generate_docker_hub_options(username=username, password=password, email=email)
|
|
340
|
+
|
|
341
|
+
@staticmethod
|
|
342
|
+
def generate_ecr_options(access_key_id: str, secret_access_key: str, account: str, region: str) -> dict:
|
|
343
|
+
"""
|
|
344
|
+
Generates an Amazon Elastic Container Registry (ECR) JSON configuration and returns it as a base64-encoded string.
|
|
345
|
+
|
|
346
|
+
Parameters:
|
|
347
|
+
access_key_id (str): The AWS access key ID.
|
|
348
|
+
secret_access_key (str): The AWS secret access key.
|
|
349
|
+
account (str): The AWS account ID.
|
|
350
|
+
region (str): The AWS region.
|
|
351
|
+
|
|
352
|
+
Returns:
|
|
353
|
+
str: A base64-encoded string representation of the repository JSON configuration.
|
|
354
|
+
"""
|
|
355
|
+
return IntegrationUtils.generate_ecr_options(
|
|
356
|
+
access_key_id=access_key_id,
|
|
357
|
+
secret_access_key=secret_access_key,
|
|
358
|
+
account=account,
|
|
359
|
+
region=region
|
|
360
|
+
)
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
class IntegrationUtils:
|
|
340
364
|
|
|
365
|
+
@staticmethod
|
|
366
|
+
def encode(st: str):
|
|
367
|
+
return str(base64.b64encode(bytes(st, 'utf-8')))[2:-1]
|
|
368
|
+
|
|
369
|
+
@staticmethod
|
|
370
|
+
def generate_json_key_options(location: str, username: str, password: str, auth: str, email: str = None):
|
|
341
371
|
encoded_pass = {
|
|
342
372
|
"auths": {
|
|
343
373
|
f"{location}": {
|
|
344
|
-
"username":
|
|
345
|
-
"password":
|
|
374
|
+
"username": username,
|
|
375
|
+
"password": password,
|
|
346
376
|
"auth": auth
|
|
347
377
|
}
|
|
348
378
|
}
|
|
349
379
|
}
|
|
350
380
|
|
|
351
|
-
|
|
381
|
+
if email:
|
|
382
|
+
encoded_pass['auths'][f'{location}']['email'] = email
|
|
383
|
+
|
|
384
|
+
return {
|
|
385
|
+
"name": "_json_key",
|
|
386
|
+
"spec": {
|
|
387
|
+
"password": IntegrationUtils.encode(json.dumps(encoded_pass))
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
@staticmethod
|
|
392
|
+
def generate_gar_options(service_account: str, location: str, email: str = None) -> dict:
|
|
393
|
+
|
|
394
|
+
if not service_account:
|
|
395
|
+
raise ValueError('Missing Service Account')
|
|
396
|
+
if not location:
|
|
397
|
+
raise ValueError('Missing Location')
|
|
398
|
+
|
|
399
|
+
username = "_json_key"
|
|
400
|
+
cred = f"{username}:{service_account}"
|
|
401
|
+
auth = IntegrationUtils.encode(cred)
|
|
402
|
+
|
|
403
|
+
return IntegrationUtils.generate_json_key_options(
|
|
404
|
+
location=location,
|
|
405
|
+
username=username,
|
|
406
|
+
password=service_account,
|
|
407
|
+
auth=auth,
|
|
408
|
+
email=email
|
|
409
|
+
)
|
|
410
|
+
|
|
411
|
+
@staticmethod
|
|
412
|
+
def generate_docker_hub_options(username: str, password: str, email: str = None) -> dict:
|
|
413
|
+
|
|
414
|
+
if not username:
|
|
415
|
+
raise ValueError('Missing Username')
|
|
416
|
+
if not password:
|
|
417
|
+
raise ValueError('Missing Password')
|
|
418
|
+
|
|
419
|
+
auth = IntegrationUtils.encode('{}:{}'.format(username, password))
|
|
420
|
+
|
|
421
|
+
return IntegrationUtils.generate_json_key_options(
|
|
422
|
+
location='docker.io',
|
|
423
|
+
username=username,
|
|
424
|
+
password=password,
|
|
425
|
+
auth=auth,
|
|
426
|
+
email=email
|
|
427
|
+
)
|
|
428
|
+
|
|
429
|
+
@staticmethod
|
|
430
|
+
def generate_ecr_options(access_key_id: str, secret_access_key: str, account: str, region: str) -> dict:
|
|
431
|
+
return {
|
|
432
|
+
"name": "AWS",
|
|
433
|
+
"spec": {
|
|
434
|
+
"accessKeyId": access_key_id,
|
|
435
|
+
"secretAccessKey": secret_access_key,
|
|
436
|
+
"account": account,
|
|
437
|
+
"region": region,
|
|
438
|
+
}
|
|
439
|
+
}
|
dtlpy/repositories/items.py
CHANGED
|
@@ -527,7 +527,8 @@ class Items:
|
|
|
527
527
|
export_png_files: bool = False,
|
|
528
528
|
filter_output_annotations: bool = False,
|
|
529
529
|
alpha: float = 1,
|
|
530
|
-
export_version=entities.ExportVersion.V1
|
|
530
|
+
export_version=entities.ExportVersion.V1,
|
|
531
|
+
dataset_lock: bool = False
|
|
531
532
|
):
|
|
532
533
|
"""
|
|
533
534
|
Download dataset items by filters.
|
|
@@ -547,6 +548,7 @@ class Items:
|
|
|
547
548
|
:param list annotation_options: download annotations options: list(dl.ViewAnnotationOptions)
|
|
548
549
|
:param dtlpy.entities.filters.Filters annotation_filters: Filters entity to filter annotations for download
|
|
549
550
|
:param bool overwrite: optional - default = False
|
|
551
|
+
:param bool dataset_lock: optional - default = False
|
|
550
552
|
:param bool to_items_folder: Create 'items' folder and download items to it
|
|
551
553
|
:param int thickness: optional - line thickness, if -1 annotation will be filled, default =1
|
|
552
554
|
:param bool with_text: optional - add text to annotations, default = False
|
|
@@ -593,7 +595,8 @@ class Items:
|
|
|
593
595
|
include_annotations_in_output=include_annotations_in_output,
|
|
594
596
|
export_png_files=export_png_files,
|
|
595
597
|
filter_output_annotations=filter_output_annotations,
|
|
596
|
-
export_version=export_version
|
|
598
|
+
export_version=export_version,
|
|
599
|
+
dataset_lock=dataset_lock
|
|
597
600
|
)
|
|
598
601
|
|
|
599
602
|
def upload(
|
|
@@ -869,3 +872,38 @@ class Items:
|
|
|
869
872
|
raise exceptions.PlatformException(response)
|
|
870
873
|
|
|
871
874
|
return success
|
|
875
|
+
|
|
876
|
+
def task_scores(self, item_id: str, task_id: str, page_offset: int = 0, page_size: int = 100):
|
|
877
|
+
"""
|
|
878
|
+
Get item score
|
|
879
|
+
|
|
880
|
+
**Prerequisites**: You must be able to read the task
|
|
881
|
+
|
|
882
|
+
:param str item_id: item id
|
|
883
|
+
:param str task_id: task id
|
|
884
|
+
:param int page_offset: start page
|
|
885
|
+
:param int page_size: page size
|
|
886
|
+
:return: page of item scores
|
|
887
|
+
|
|
888
|
+
**Example**:
|
|
889
|
+
|
|
890
|
+
.. code-block:: python
|
|
891
|
+
|
|
892
|
+
dataset.items.item_score(item_id='item_id', task_id='task_id')
|
|
893
|
+
|
|
894
|
+
"""
|
|
895
|
+
|
|
896
|
+
if item_id is None:
|
|
897
|
+
raise exceptions.PlatformException('400', 'Must provide item id')
|
|
898
|
+
|
|
899
|
+
if task_id is None:
|
|
900
|
+
raise exceptions.PlatformException('400', 'Must provide task id')
|
|
901
|
+
|
|
902
|
+
success, response = self._client_api.gen_request(req_type="get",
|
|
903
|
+
path="/scores/tasks/{}/items/{}?page={}&pageSize={}"
|
|
904
|
+
.format(task_id, item_id, page_offset, page_size))
|
|
905
|
+
if success:
|
|
906
|
+
return response.json()
|
|
907
|
+
else:
|
|
908
|
+
raise exceptions.PlatformException(response)
|
|
909
|
+
|
dtlpy/repositories/projects.py
CHANGED
|
@@ -432,14 +432,6 @@ class Projects:
|
|
|
432
432
|
assert isinstance(project, entities.Project)
|
|
433
433
|
if checkout:
|
|
434
434
|
self.checkout(project=project)
|
|
435
|
-
if project.id not in self._client_api.platform_settings.working_projects:
|
|
436
|
-
self._client_api.platform_settings.add_project(project.id)
|
|
437
|
-
try:
|
|
438
|
-
settings_list = project.settings.resolve(user_email=self._client_api.info()['user_email'],
|
|
439
|
-
project_id=project.id)
|
|
440
|
-
self._client_api.platform_settings.add_bulk(settings_list)
|
|
441
|
-
except:
|
|
442
|
-
logger.warning("failed to add project settings")
|
|
443
435
|
return project
|
|
444
436
|
|
|
445
437
|
@_api_reference.add(path='/projects/{projectId}', method='delete')
|
dtlpy/repositories/settings.py
CHANGED
|
@@ -112,12 +112,6 @@ class Settings:
|
|
|
112
112
|
else:
|
|
113
113
|
raise exceptions.PlatformException(response)
|
|
114
114
|
|
|
115
|
-
# add settings to cookies
|
|
116
|
-
self._client_api.platform_settings.add(setting.name,
|
|
117
|
-
{
|
|
118
|
-
setting.scope.id: setting.value
|
|
119
|
-
}
|
|
120
|
-
)
|
|
121
115
|
return constructor(
|
|
122
116
|
_json=_json,
|
|
123
117
|
client_api=self._client_api,
|
|
@@ -172,13 +166,6 @@ class Settings:
|
|
|
172
166
|
else:
|
|
173
167
|
raise exceptions.PlatformException(response)
|
|
174
168
|
|
|
175
|
-
# add settings to cookies
|
|
176
|
-
self._client_api.platform_settings.add(setting.name,
|
|
177
|
-
{
|
|
178
|
-
setting.scope.id: setting.value
|
|
179
|
-
}
|
|
180
|
-
)
|
|
181
|
-
|
|
182
169
|
return constructor(
|
|
183
170
|
_json=_json,
|
|
184
171
|
client_api=self._client_api,
|
dtlpy/repositories/tasks.py
CHANGED
|
@@ -1089,3 +1089,36 @@ class Tasks:
|
|
|
1089
1089
|
success_count=len(updated_items), failed_items=failed_items)
|
|
1090
1090
|
logger.info(msg=log_msg)
|
|
1091
1091
|
return True
|
|
1092
|
+
|
|
1093
|
+
def task_scores(self, task_id: str = None, page_offset: int = 0, page_size: int = 100):
|
|
1094
|
+
"""
|
|
1095
|
+
Get all entities scores in a task.
|
|
1096
|
+
|
|
1097
|
+
:param str task_id: the id of the task
|
|
1098
|
+
:param int page_offset: the page offset
|
|
1099
|
+
:param int page_size: the page size
|
|
1100
|
+
:return: page of the task scores
|
|
1101
|
+
|
|
1102
|
+
**Example**:
|
|
1103
|
+
|
|
1104
|
+
.. code-block:: python
|
|
1105
|
+
|
|
1106
|
+
dataset.tasks.task_scores(task_id= 'task_id')
|
|
1107
|
+
"""
|
|
1108
|
+
if task_id is None:
|
|
1109
|
+
raise exceptions.PlatformException('400', 'Please provide task_id')
|
|
1110
|
+
|
|
1111
|
+
url = '/scores/tasks/{task_id}?page={page_offset}&pageSize={page_size}'.format(
|
|
1112
|
+
task_id=task_id,
|
|
1113
|
+
page_offset=page_offset,
|
|
1114
|
+
page_size=page_size
|
|
1115
|
+
)
|
|
1116
|
+
success, response = self._client_api.gen_request(
|
|
1117
|
+
req_type='get',
|
|
1118
|
+
path=url
|
|
1119
|
+
)
|
|
1120
|
+
|
|
1121
|
+
if success:
|
|
1122
|
+
return response.json()
|
|
1123
|
+
else:
|
|
1124
|
+
raise exceptions.PlatformException(response)
|
dtlpy/services/api_client.py
CHANGED
|
@@ -430,51 +430,6 @@ class Attributes2:
|
|
|
430
430
|
os.environ["USE_ATTRIBUTE_2"] = json.dumps(val)
|
|
431
431
|
self.to_cookie()
|
|
432
432
|
|
|
433
|
-
|
|
434
|
-
class PlatformSettings:
|
|
435
|
-
|
|
436
|
-
def __init__(self):
|
|
437
|
-
self._working_projects = list()
|
|
438
|
-
self._settings = dict()
|
|
439
|
-
|
|
440
|
-
@property
|
|
441
|
-
def settings(self) -> dict:
|
|
442
|
-
return self._settings
|
|
443
|
-
|
|
444
|
-
@property
|
|
445
|
-
def working_projects(self) -> list:
|
|
446
|
-
return self._working_projects
|
|
447
|
-
|
|
448
|
-
@settings.setter
|
|
449
|
-
def settings(self, val: dict):
|
|
450
|
-
if not isinstance(val, dict):
|
|
451
|
-
raise exceptions.PlatformException(error=400,
|
|
452
|
-
message="input must be of type dict")
|
|
453
|
-
|
|
454
|
-
self._settings = val
|
|
455
|
-
|
|
456
|
-
def add(self, setting_name: str, setting: dict):
|
|
457
|
-
if setting_name in self.settings:
|
|
458
|
-
self._settings[setting_name].update(setting)
|
|
459
|
-
else:
|
|
460
|
-
self._settings[setting_name] = setting
|
|
461
|
-
|
|
462
|
-
def add_project(self, project_id: str):
|
|
463
|
-
if not isinstance(project_id, str):
|
|
464
|
-
raise exceptions.PlatformException(error=400,
|
|
465
|
-
message="input must be of type str")
|
|
466
|
-
self._working_projects.append(project_id)
|
|
467
|
-
|
|
468
|
-
def add_bulk(self, settings_list):
|
|
469
|
-
settings_dict = {s.name: {s.scope.id: s.value}
|
|
470
|
-
for s in settings_list}
|
|
471
|
-
for setting_name, settings_val in settings_dict.items():
|
|
472
|
-
if setting_name in self._settings:
|
|
473
|
-
self._settings[setting_name].update(settings_val)
|
|
474
|
-
else:
|
|
475
|
-
self._settings[setting_name] = settings_val
|
|
476
|
-
|
|
477
|
-
|
|
478
433
|
class Decorators:
|
|
479
434
|
@staticmethod
|
|
480
435
|
def token_expired_decorator(method):
|
|
@@ -522,7 +477,6 @@ class ApiClient:
|
|
|
522
477
|
self._callbacks = None
|
|
523
478
|
self._cache_state = None
|
|
524
479
|
self._attributes_mode = None
|
|
525
|
-
self._platform_settings = None
|
|
526
480
|
self._cache_configs = None
|
|
527
481
|
self._sdk_cache = None
|
|
528
482
|
self._fetch_entities = None
|
|
@@ -793,13 +747,6 @@ class ApiClient:
|
|
|
793
747
|
assert isinstance(self._attributes_mode, Attributes2)
|
|
794
748
|
return self._attributes_mode
|
|
795
749
|
|
|
796
|
-
@property
|
|
797
|
-
def platform_settings(self):
|
|
798
|
-
if self._platform_settings is None:
|
|
799
|
-
self._platform_settings = PlatformSettings()
|
|
800
|
-
assert isinstance(self._platform_settings, PlatformSettings)
|
|
801
|
-
return self._platform_settings
|
|
802
|
-
|
|
803
750
|
@property
|
|
804
751
|
def sdk_cache(self):
|
|
805
752
|
if self._sdk_cache is None:
|
dtlpy/services/check_sdk.py
CHANGED
|
@@ -66,29 +66,3 @@ def check(version, client_api):
|
|
|
66
66
|
logger.error(msg=msg)
|
|
67
67
|
else:
|
|
68
68
|
logger.debug(msg='unknown')
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def resolve_platform_settings_in_thread(settings, client_api):
|
|
72
|
-
try:
|
|
73
|
-
# check for a valid token
|
|
74
|
-
if client_api.token_expired():
|
|
75
|
-
# wait for user to maybe login in the next 2 minutes
|
|
76
|
-
time.sleep(120)
|
|
77
|
-
# check for a valid token again
|
|
78
|
-
if client_api.token_expired():
|
|
79
|
-
# return if cant find a valid token
|
|
80
|
-
logger.debug('Cant set settings without a valid token.')
|
|
81
|
-
return
|
|
82
|
-
settings_list = settings.resolve(user_email=client_api.info()['user_email'])
|
|
83
|
-
client_api.platform_settings.add_bulk(settings_list)
|
|
84
|
-
|
|
85
|
-
except Exception:
|
|
86
|
-
logger.debug(traceback.format_exc())
|
|
87
|
-
logger.debug('Error in add settings.')
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def resolve_platform_settings(client_api, settings):
|
|
91
|
-
worker = threading.Thread(target=resolve_platform_settings_in_thread,
|
|
92
|
-
kwargs={'client_api': client_api, 'settings': settings})
|
|
93
|
-
worker.daemon = True
|
|
94
|
-
worker.start()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
dtlpy/__init__.py,sha256=
|
|
2
|
-
dtlpy/__version__.py,sha256=
|
|
1
|
+
dtlpy/__init__.py,sha256=K2c30sbTNH6bdPFLjabRX-Dh3TsQ33nR9psVGCAoUlw,20687
|
|
2
|
+
dtlpy/__version__.py,sha256=tc3CnFqsLZmTnEcwJPLV6J-btgk4o1Alm0UeA10qNoM,20
|
|
3
3
|
dtlpy/exceptions.py,sha256=EQCKs3pwhwZhgMByQN3D3LpWpdxwcKPEEt-bIaDwURM,2871
|
|
4
|
-
dtlpy/new_instance.py,sha256=
|
|
4
|
+
dtlpy/new_instance.py,sha256=bHsWS-nNcQ5XWDcC4uASqOqpl1ye97kUacduxXZHO68,9990
|
|
5
5
|
dtlpy/assets/__init__.py,sha256=D_hAa6NM8Zoy32sF_9b7m0b7I-BQEyBFg8-9Tg2WOeo,976
|
|
6
6
|
dtlpy/assets/lock_open.png,sha256=BH9uyf5uYvgZrDpDw9qCUnT3UbkXG8XbeRmWDpWlV4M,18215
|
|
7
7
|
dtlpy/assets/main.py,sha256=N1JUsx79qnXI7Hx22C8JOzHJdGHxvrXeTx5UZAxvJfE,1380
|
|
@@ -45,7 +45,7 @@ dtlpy/dlp/dlp.py,sha256=YjNBjeCDTXJ7tj8qdiGZ8lFb8DtPZl-FvViyjxt9xF8,4278
|
|
|
45
45
|
dtlpy/dlp/parser.py,sha256=p-TFaiAU2c3QkI97TXzL2LDR3Eq0hGDFrTc9J2jWLh4,30551
|
|
46
46
|
dtlpy/entities/__init__.py,sha256=HQ2p5IWmBqT5oG908poiDsSsQOnESsV_Y2rHASEHdcs,4943
|
|
47
47
|
dtlpy/entities/analytic.py,sha256=5MpYDKPVsZ1MIy20Ju515RWed6P667j4TLxsan2gyNM,11925
|
|
48
|
-
dtlpy/entities/annotation.py,sha256=
|
|
48
|
+
dtlpy/entities/annotation.py,sha256=qpMGn1GEEw1Zdam4rL0gPaE4f_2hIyd_-tbNhoZLFWg,68482
|
|
49
49
|
dtlpy/entities/annotation_collection.py,sha256=CEYSBHhhDkC0VJdHsBSrA6TgdKGMcKeI3tFM40UJwS8,29838
|
|
50
50
|
dtlpy/entities/app.py,sha256=dVd87-mP22NWvec5nqA5VjZ8Qk3aJlgUcloIAAOAPUw,6968
|
|
51
51
|
dtlpy/entities/app_module.py,sha256=0UiAbBX1q8iEImi3nY7ySWZZHoRRwu0qUXmyXmgVAc4,3645
|
|
@@ -56,8 +56,8 @@ dtlpy/entities/bot.py,sha256=is3NUCnPg56HSjsHIvFcVkymValMqDV0uHRDC1Ib-ds,3819
|
|
|
56
56
|
dtlpy/entities/codebase.py,sha256=pwRkAq2GV0wvmzshg89IAmE-0I2Wsy_-QNOu8OV8uqc,8999
|
|
57
57
|
dtlpy/entities/collection.py,sha256=FPPPfIxOsBG1ujORPJVq8uXyF8vhIqC6N4EiI9SJzl0,1160
|
|
58
58
|
dtlpy/entities/command.py,sha256=FtfsO6kQSZqKn-Uo8n2ryGOB01Fgr-g5ewfMCtRMTfw,5247
|
|
59
|
-
dtlpy/entities/compute.py,sha256=
|
|
60
|
-
dtlpy/entities/dataset.py,sha256=
|
|
59
|
+
dtlpy/entities/compute.py,sha256=6mN4ZRUTf28wc0YtFy7W4mONaoZI0DyIGvwosjQrsAA,14663
|
|
60
|
+
dtlpy/entities/dataset.py,sha256=a1PutKuGkYF-xVp1JCXNU1kRhekQ0uxYCpfnnTtbf9E,51985
|
|
61
61
|
dtlpy/entities/directory_tree.py,sha256=Rni6pLSWytR6yeUPgEdCCRfTg_cqLOdUc9uCqz9KT-Q,1186
|
|
62
62
|
dtlpy/entities/dpk.py,sha256=FJVhQKk2fj1cO_4rcE_bIF6QmIQZQWUkBnwTNQNMrfE,17857
|
|
63
63
|
dtlpy/entities/driver.py,sha256=O_QdK1EaLjQyQkmvKsmkNgmvmMb1mPjKnJGxK43KrOA,7197
|
|
@@ -67,13 +67,13 @@ dtlpy/entities/feature_set.py,sha256=niw4MkmrDbD_LWQu1X30uE6U4DCzmFhPTaYeZ6VZDB0
|
|
|
67
67
|
dtlpy/entities/filters.py,sha256=PUmgor77m3CWeUgvCdWMg3Bt5SxHXPVBbN5VmD_dglQ,22683
|
|
68
68
|
dtlpy/entities/gis_item.py,sha256=Uk-wMBxwcHsImjz4qOjP-EyZAohbRzN43kMpCaVjCXU,3982
|
|
69
69
|
dtlpy/entities/integration.py,sha256=Kdy1j6-cJLW8qNmnqCmdg36phi843YDrlMqcMyMfvYk,5875
|
|
70
|
-
dtlpy/entities/item.py,sha256=
|
|
70
|
+
dtlpy/entities/item.py,sha256=uZBYGprHUwtGRcRcIPQ0SBbm-gNaqzqaceytIvbDsYQ,34642
|
|
71
71
|
dtlpy/entities/label.py,sha256=ycDYavIgKhz806plIX-64c07_TeHpDa-V7LnfFVe4Rg,3869
|
|
72
72
|
dtlpy/entities/links.py,sha256=FAmEwHtsrqKet3c0UHH9u_gHgG6_OwF1-rl4xK7guME,2516
|
|
73
73
|
dtlpy/entities/message.py,sha256=ApJuaKEqxATpXjNYUjGdYPu3ibQzEMo8-LtJ_4xAcPI,5865
|
|
74
74
|
dtlpy/entities/model.py,sha256=YwjIi3MxAZoyartTvqx_qhtDKQe6zVsQuwZbYLygMxU,26898
|
|
75
75
|
dtlpy/entities/node.py,sha256=yPPYDLtNMc6vZbbf4FIffY86y7tkaTvYm42Jb7k3Ofk,39617
|
|
76
|
-
dtlpy/entities/ontology.py,sha256=
|
|
76
|
+
dtlpy/entities/ontology.py,sha256=924g9c2ZTfr69fWd_ejrVU0C-MAUR8UAhhz6GY-IQME,32100
|
|
77
77
|
dtlpy/entities/organization.py,sha256=Zm-tTHV82PvYyTNetRRXqvmvzBCbXEwS-gAENf7Zny4,9874
|
|
78
78
|
dtlpy/entities/package.py,sha256=QSDePHlp4ik19aUE3dAUC7edh0oUUVjzSmMG867avc4,26363
|
|
79
79
|
dtlpy/entities/package_defaults.py,sha256=wTD7Z7rGYjVy8AcUxTFEnkOkviiJaLVZYvduiUBKNZo,211
|
|
@@ -84,11 +84,11 @@ dtlpy/entities/paged_entities.py,sha256=grNjt2FYg4gKBlVRDkztI1BPOI4JoGeyjvmOW3Bn
|
|
|
84
84
|
dtlpy/entities/pipeline.py,sha256=JtWGoCUhVszOVkBNK43fbTt446fkND4wH-Y-fN_llww,20851
|
|
85
85
|
dtlpy/entities/pipeline_execution.py,sha256=EQhW4W_G1bIPShYbJSAT--1WNQuvxVQbcQ_MCHIX0KI,9938
|
|
86
86
|
dtlpy/entities/project.py,sha256=ZUx8zA3mr6N145M62R3UDPCCzO1vxfyWO6vjES-bO-g,14653
|
|
87
|
-
dtlpy/entities/prompt_item.py,sha256=
|
|
87
|
+
dtlpy/entities/prompt_item.py,sha256=qXDK2IWVKszm7gpqcgCE51SSf4IUTNFirq40qszBYw8,19566
|
|
88
88
|
dtlpy/entities/recipe.py,sha256=SX0T7gw-_9Cs2FZyC_htIxQd7CwDwb2zA3SqB37vymM,11917
|
|
89
89
|
dtlpy/entities/reflect_dict.py,sha256=2NaSAL-CO0T0FYRYFQlaSpbsoLT2Q18AqdHgQSLX5Y4,3273
|
|
90
90
|
dtlpy/entities/resource_execution.py,sha256=1HuVV__U4jAUOtOkWlWImnM3Yts8qxMSAkMA9sBhArY,5033
|
|
91
|
-
dtlpy/entities/service.py,sha256=
|
|
91
|
+
dtlpy/entities/service.py,sha256=X4rukxywZvb69swxj2C12i7HdmQ_XFuCRKV8Cdl_Dbw,33542
|
|
92
92
|
dtlpy/entities/setting.py,sha256=uXagJHtcCR3nJYClR_AUGZjz_kx3TejPcUZ8ginHFIA,8561
|
|
93
93
|
dtlpy/entities/task.py,sha256=SL1-6p4jruELkWI-5VXBMn7Imj1xJVaOfAFDa7inH64,19544
|
|
94
94
|
dtlpy/entities/time_series.py,sha256=336jWNckjuSn0G29WJFetB7nBoFAKqs4VH9_IB4m4FE,4017
|
|
@@ -97,7 +97,7 @@ dtlpy/entities/user.py,sha256=hqEzwN6rl1oUTpKOV5eXvw9Z7dtpsiC4TAPSNBmkqcM,3865
|
|
|
97
97
|
dtlpy/entities/webhook.py,sha256=6R06MgLxabvKySInGlSJmaf0AVmAMe3vKusWhqONRyU,3539
|
|
98
98
|
dtlpy/entities/annotation_definitions/__init__.py,sha256=qZ77hGmCQopPSpiDHYhNWbNKC7nrn10NWNlim9dINmg,666
|
|
99
99
|
dtlpy/entities/annotation_definitions/base_annotation_definition.py,sha256=tZGMokakJ4HjWAtD1obsgh2pORD66XWcnIT6CZLVMQs,3201
|
|
100
|
-
dtlpy/entities/annotation_definitions/box.py,sha256=
|
|
100
|
+
dtlpy/entities/annotation_definitions/box.py,sha256=A4NnMrHkq3CuvFR9wq-jqAMHMHKKWyc2gMwMHmQXKdU,6045
|
|
101
101
|
dtlpy/entities/annotation_definitions/classification.py,sha256=uqLAAaqNww2ZwR1e4UW22foJtDxoeZXJsv5PTvyt-tA,1559
|
|
102
102
|
dtlpy/entities/annotation_definitions/comparison.py,sha256=cp9HZ32wm7E78tbeoqsfJL5oZ26ojig7Cjn2FJE7mbI,1806
|
|
103
103
|
dtlpy/entities/annotation_definitions/cube.py,sha256=ZSCH6548EI3dhA9eVe4nDA2oiMFaOqYt4XDBc22TphQ,8554
|
|
@@ -155,7 +155,7 @@ dtlpy/ml/summary_writer.py,sha256=dehDi8zmGC1sAGyy_3cpSWGXoGQSiQd7bL_Thoo8yIs,27
|
|
|
155
155
|
dtlpy/ml/train_utils.py,sha256=R-BHKRfqDoLLhFyLzsRFyJ4E-8iedj9s9oZqy3IO2rg,2404
|
|
156
156
|
dtlpy/repositories/__init__.py,sha256=b7jPmE4meKaeikO-x87HcO2lcfQg-8OzqcYZa8n6l-Q,2033
|
|
157
157
|
dtlpy/repositories/analytics.py,sha256=dQPCYTPAIuyfVI_ppR49W7_GBj0033feIm9Gd7LW1V0,2966
|
|
158
|
-
dtlpy/repositories/annotations.py,sha256=
|
|
158
|
+
dtlpy/repositories/annotations.py,sha256=idTKzanNt-ncB0eIKE5p6WclrVGNjceI2Y7dAzDFtzY,43595
|
|
159
159
|
dtlpy/repositories/apps.py,sha256=J-PDCPWVtvTLmzzkABs2-8zo9hGLk_z_sNR2JB1mB0c,15752
|
|
160
160
|
dtlpy/repositories/artifacts.py,sha256=Ke2ustTNw-1eQ0onLsWY7gL2aChjXPAX5p1uQ_EzMbo,19081
|
|
161
161
|
dtlpy/repositories/assignments.py,sha256=1VwJZ7ctQe1iaDDDpeYDgoj2G-TCgzolVLUEqUocd2w,25506
|
|
@@ -164,16 +164,16 @@ dtlpy/repositories/codebases.py,sha256=pvcZxdrq0-zWysVbdXjUOhnfcF6hJD8v5VclNZ-zh
|
|
|
164
164
|
dtlpy/repositories/collections.py,sha256=C_BPMg128Sl9AG3U4PxgI_2aaehQ2NuehMmzoTaXbPQ,11459
|
|
165
165
|
dtlpy/repositories/commands.py,sha256=i6gQgOmRDG8ixqKU7672H3CvGt8VLT3ihDVfri1eWWc,5610
|
|
166
166
|
dtlpy/repositories/compositions.py,sha256=H417BvlQAiWr5NH2eANFke6CfEO5o7DSvapYpf7v5Hk,2150
|
|
167
|
-
dtlpy/repositories/computes.py,sha256=
|
|
168
|
-
dtlpy/repositories/datasets.py,sha256=
|
|
169
|
-
dtlpy/repositories/downloader.py,sha256=
|
|
167
|
+
dtlpy/repositories/computes.py,sha256=l0-FS3_8WEGG5tbtIR3ltsZc6MyHVkiYajHTCaeUugk,10156
|
|
168
|
+
dtlpy/repositories/datasets.py,sha256=bKvQijZibjkGYQOsvB_tkwgZnaykJoCKXrXSqjR-_M8,58181
|
|
169
|
+
dtlpy/repositories/downloader.py,sha256=uMsSArbXAsVWeUsXg1G3yKffFUWoti3dHno78W7ctdg,44620
|
|
170
170
|
dtlpy/repositories/dpks.py,sha256=dglvaiSFBvEithhlQ0RAXwzTxoZaICONs-owx3e2nfU,17848
|
|
171
171
|
dtlpy/repositories/drivers.py,sha256=fF0UuHCyBzop8pHfryex23mf0kVFAkqzNdOmwBbaWxY,10204
|
|
172
172
|
dtlpy/repositories/executions.py,sha256=4UoU6bnB3kl5cMuF1eJvDecfZCaB06gKWxPfv6_g1_k,32598
|
|
173
173
|
dtlpy/repositories/feature_sets.py,sha256=UowMDAl_CRefRB5oZzubnsjU_OFgiPPdQXn8q2j4Kuw,9666
|
|
174
174
|
dtlpy/repositories/features.py,sha256=A_RqTJxzjTh-Wbm0uXaoTNyHSfCLbeiH38iB11p2ifY,9915
|
|
175
|
-
dtlpy/repositories/integrations.py,sha256=
|
|
176
|
-
dtlpy/repositories/items.py,sha256=
|
|
175
|
+
dtlpy/repositories/integrations.py,sha256=mE2KXFkZzvQj8gxYT0MuR0Slp4TKSiamm0Gk8CNttU0,17278
|
|
176
|
+
dtlpy/repositories/items.py,sha256=RmS-_wKSefOBvuUaXLgYbWWC2M0rGThGPco_wBJorx0,39752
|
|
177
177
|
dtlpy/repositories/messages.py,sha256=QU0Psckg6CA_Tlw9AVxqa-Ay1fRM4n269sSIJkH9o7E,3066
|
|
178
178
|
dtlpy/repositories/models.py,sha256=IekNMcnuKVaAVTJf2AJv6YvX5qCd9kkSl4ETPMWP4Zc,38213
|
|
179
179
|
dtlpy/repositories/nodes.py,sha256=xXJm_YA0vDUn0dVvaGeq6ORM0vI3YXvfjuylvGRtkxo,3061
|
|
@@ -182,13 +182,13 @@ dtlpy/repositories/organizations.py,sha256=6ijUDFbsogfRul1g_vUB5AZOb41MRmV5NhNU7
|
|
|
182
182
|
dtlpy/repositories/packages.py,sha256=QhkXMZkpseCt0pDropJuqoHJL0RMa5plk8AN0V3w6Nk,86807
|
|
183
183
|
dtlpy/repositories/pipeline_executions.py,sha256=hJX2I939c-bWxveVdikZ_9LWMNCQusTRkkdEa5j3Yvo,17007
|
|
184
184
|
dtlpy/repositories/pipelines.py,sha256=Mbe1x-7iX2kec6_f83Ji1xiNktz2jy1dRCvBMJTn7Po,23722
|
|
185
|
-
dtlpy/repositories/projects.py,sha256=
|
|
185
|
+
dtlpy/repositories/projects.py,sha256=TKLCuL7Inlv4GwgcQcuXkPQtgacfrXYjsTQng8nPC7Y,21623
|
|
186
186
|
dtlpy/repositories/recipes.py,sha256=ZZDhHn9g28C99bsf0nFaIpVYn6f6Jisz9upkHEkeaYY,15843
|
|
187
187
|
dtlpy/repositories/resource_executions.py,sha256=PyzsbdJxz6jf17Gx13GZmqdu6tZo3TTVv-DypnJ_sY0,5374
|
|
188
188
|
dtlpy/repositories/schema.py,sha256=kTKDrbwm7BfQnBAK81LpAl9ChNFdyUweSLNazlJJhjk,3953
|
|
189
189
|
dtlpy/repositories/services.py,sha256=2ruoPwyznRwsNtM7YK2vSGQP9jtCHB6WitRo-Z0yB_c,68576
|
|
190
|
-
dtlpy/repositories/settings.py,sha256=
|
|
191
|
-
dtlpy/repositories/tasks.py,sha256=
|
|
190
|
+
dtlpy/repositories/settings.py,sha256=HHYSGub5Y6cQ746pBfvlQndsgBj1UoNFupa2otgvsWI,11645
|
|
191
|
+
dtlpy/repositories/tasks.py,sha256=VKIltgjuSqfnyjePtmqmxO8baWehqrcqqggZl4Jfx00,50049
|
|
192
192
|
dtlpy/repositories/times_series.py,sha256=m-bKFEgiZ13yQNelDjBfeXMUy_HgsPD_JAHj1GVx9fU,11420
|
|
193
193
|
dtlpy/repositories/triggers.py,sha256=izdNyCN1gDc5uo7AXntso0HSMTDIzGFUp-dSEz8cn_U,21990
|
|
194
194
|
dtlpy/repositories/upload_element.py,sha256=R2KWIXmkp_dMAIr81tu3Y_VRfldj0ju8__V28ombkcg,10677
|
|
@@ -196,11 +196,11 @@ dtlpy/repositories/uploader.py,sha256=5qQbsg701HrL8x0wWCRLPBP_dztqXEb31QfeZnh0SQ
|
|
|
196
196
|
dtlpy/repositories/webhooks.py,sha256=IIpxOJ-7KeQp1TY9aJZz-FuycSjAoYx0TDk8z86KAK8,9033
|
|
197
197
|
dtlpy/services/__init__.py,sha256=VfVJy2otIrDra6i7Sepjyez2ujiE6171ChQZp-YgxsM,904
|
|
198
198
|
dtlpy/services/aihttp_retry.py,sha256=tgntZsAY0dW9v08rkjX1T5BLNDdDd8svtgn7nH8DSGU,5022
|
|
199
|
-
dtlpy/services/api_client.py,sha256=
|
|
199
|
+
dtlpy/services/api_client.py,sha256=HPG326fG6h0m0_w0JIRhpN-GIXxyeZU5BU3MkN-4kw4,71416
|
|
200
200
|
dtlpy/services/api_reference.py,sha256=cW-B3eoi9Xs3AwI87_Kr6GV_E6HPoC73aETFaGz3A-0,1515
|
|
201
201
|
dtlpy/services/async_utils.py,sha256=kaYHTPw0Lg8PeJJq8whPyzrBYkzD7offs5hsKRZXJm8,3960
|
|
202
202
|
dtlpy/services/calls_counter.py,sha256=gr0io5rIsO5-7Cgc8neA1vK8kUtYhgFPmDQ2jXtiZZs,1036
|
|
203
|
-
dtlpy/services/check_sdk.py,sha256=
|
|
203
|
+
dtlpy/services/check_sdk.py,sha256=H4KL5xrmNGfR9fUSxTVUeBm_3YFGjkwUZpFnqhFBJyI,2617
|
|
204
204
|
dtlpy/services/cookie.py,sha256=sSZR1QV4ienCcZ8lEK_Y4nZYBgAxO3kHrcBXFKGcmwQ,3694
|
|
205
205
|
dtlpy/services/create_logger.py,sha256=WFQjuvCuwrZoftFaU9jQkmEcOrL1XD-NqsuBqb5_SN4,6332
|
|
206
206
|
dtlpy/services/events.py,sha256=mpcu8RusLPrBcJEbWR61uFb4FiU_dQv3xoa7uM-rTcY,3686
|
|
@@ -224,19 +224,19 @@ dtlpy/utilities/reports/report.py,sha256=3nEsNnIWmdPEsd21nN8vMMgaZVcPKn9iawKTTeO
|
|
|
224
224
|
dtlpy/utilities/videos/__init__.py,sha256=SV3w51vfPuGBxaMeNemx6qEMHw_C4lLpWNGXMvdsKSY,734
|
|
225
225
|
dtlpy/utilities/videos/video_player.py,sha256=LCxg0EZ_DeuwcT7U_r7MRC6Q19s0xdFb7x5Gk39PRms,24072
|
|
226
226
|
dtlpy/utilities/videos/videos.py,sha256=Dj916B4TQRIhI7HZVevl3foFrCsPp0eeWwvGbgX3-_A,21875
|
|
227
|
-
dtlpy-1.
|
|
228
|
-
dtlpy-1.
|
|
229
|
-
dtlpy-1.
|
|
227
|
+
dtlpy-1.106.5.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
|
|
228
|
+
dtlpy-1.106.5.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
|
|
229
|
+
dtlpy-1.106.5.data/scripts/dlp.py,sha256=tEokRaDINISXnq8yNx_CBw1qM5uwjYiZoJOYGqWB3RU,4267
|
|
230
230
|
tests/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
231
231
|
tests/assets/models_flow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
232
232
|
tests/assets/models_flow/failedmain.py,sha256=n8F4eu_u7JPrJ1zedbJPvv9e3lHb3ihoErqrBIcseEc,1847
|
|
233
233
|
tests/assets/models_flow/main.py,sha256=vnDKyVZaae2RFpvwS22Hzi6Dt2LJerH4yQrmKtaT8_g,2123
|
|
234
234
|
tests/assets/models_flow/main_model.py,sha256=Hl_tv7Q6KaRL3yLkpUoLMRqu5-ab1QsUYPL6RPEoamw,2042
|
|
235
235
|
tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
236
|
-
tests/features/environment.py,sha256=
|
|
237
|
-
dtlpy-1.
|
|
238
|
-
dtlpy-1.
|
|
239
|
-
dtlpy-1.
|
|
240
|
-
dtlpy-1.
|
|
241
|
-
dtlpy-1.
|
|
242
|
-
dtlpy-1.
|
|
236
|
+
tests/features/environment.py,sha256=TMeUzSZkksHqbxNBDLk-LYBMD4G5dMo4ZLZXPwQImVE,18751
|
|
237
|
+
dtlpy-1.106.5.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
238
|
+
dtlpy-1.106.5.dist-info/METADATA,sha256=UMKbsTir4mtoHZEXU2NnsiJ_Sq_Qje8Jv3YQ9jEWVbU,3019
|
|
239
|
+
dtlpy-1.106.5.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
|
240
|
+
dtlpy-1.106.5.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
|
|
241
|
+
dtlpy-1.106.5.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
|
|
242
|
+
dtlpy-1.106.5.dist-info/RECORD,,
|