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.
@@ -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='S3ntegration',
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, entities.IntegrationType) else integrations_type, 'name': name, 'options': options}
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
- def _create_private_registry_gar(self, service_account: str, location: str):
304
- password = self.__create_gar_password(service_account, location)
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
- if not service_account:
334
- raise ValueError('Missing Service Account')
335
- if not location:
336
- raise ValueError('Missing Location')
337
- user_name = "_json_key"
338
- cred = f"{user_name}:{service_account}"
339
- auth = str(base64.b64encode(bytes(cred, 'utf-8')))[2:-1]
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": user_name,
345
- "password": service_account,
374
+ "username": username,
375
+ "password": password,
346
376
  "auth": auth
347
377
  }
348
378
  }
349
379
  }
350
380
 
351
- return str(base64.b64encode(bytes(json.dumps(encoded_pass), 'utf-8')))[2:-1]
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
+ }
@@ -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
+
@@ -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')
@@ -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,
@@ -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)
@@ -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:
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dtlpy
3
- Version: 1.104.14
3
+ Version: 1.106.5
4
4
  Summary: SDK and CLI for Dataloop platform
5
5
  Home-page: https://github.com/dataloop-ai/dtlpy
6
6
  Author: Dataloop Team
@@ -1,7 +1,7 @@
1
- dtlpy/__init__.py,sha256=GjtFPFltVerHF1m6ePaVp5oUWcg7yavd3aNhknTip9U,20961
2
- dtlpy/__version__.py,sha256=8icSzD7njprR8T5cT8Ln6LVjJOYZ676Khcka9zFX7q0,21
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=u_c6JtgqsKCr7TU24-g7_CaST9ghqamMhM4Z0Zxt50w,10121
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=L1g1OyyOFC60Eo5PWnp8KPNUGPqNCQjlnAvLbT96QQI,68006
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=LcrFnFwIm5HQYvtmzvZ2Eh6hvdkefTByJ9YmwqED57c,14641
60
- dtlpy/entities/dataset.py,sha256=GedPdhsQlWQo5H9CLsTZCqnTsyV1ppJUCwG4hukGBy0,50672
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=n_zJYr_QlUSBVdYu6oqgXf0JfIFRW1LBcIMMpu4vP38,34074
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=N5bsnNUfWNN49WV8lGQL8QRxbKfCZyV-rDyTlGByUrw,31987
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=d4rqP961PYlJvJJDRXZPI7Z6NdwRXlx_Q0_N0xtZ_B8,19276
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=NI4lFC6FqLw4aEGarr2rMptxe3omVfC39C9VAnYYEJA,33733
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=kNT_Ba7QWKBiyt1uPAmYLyBfPsxvIUNLhVe9042WFnM,8622
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=b6Y9K9Yj_EaavMMrdtDG0QfhsLpz0lYpwMecTaNPmG4,42453
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=EtfE_3JhTdNlSYDPkKXBFkq-DBl4sgQqIm50ajvFdWM,9976
168
- dtlpy/repositories/datasets.py,sha256=SpG86uToq-E5nVHMwHgWx6VwwwkgfYo8x5vZ0WA3Ouw,56546
169
- dtlpy/repositories/downloader.py,sha256=CiT8KIjJ8l52Ng003f2_bmolIpe64fi8A_GGEl39M1Y,44254
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=dBTgvT8WgzNx3f7RuXxk1Or3jwj8XaBXfAVCSYUw-hI,14122
176
- dtlpy/repositories/items.py,sha256=AF8h7-Yje1p16nXyofNLiC92bRVZtZjtHRPvHwbW62w,38423
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=tZyFLqVs-8ggTIi5echlX7XdGOJGW4LzKuXke7jkRnw,22140
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=pvqNse0ANCdU3NSLJEzHco-PZq__OIsPSPVJveB9E4I,12296
191
- dtlpy/repositories/tasks.py,sha256=v09S2pYGkKx_vBG7SWigJeuMhp0GsefKo3Td7ImrWb0,49039
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=pz4rScAVzJ1B13qXy2N0Oa3sfKDyR8X1UeslbR-rAb0,73173
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=tnFWCzkJa8w2jLtw-guwuqpOtXGyiVU7ZCDFiUZUqzY,3593
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.104.14.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
228
- dtlpy-1.104.14.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
229
- dtlpy-1.104.14.data/scripts/dlp.py,sha256=tEokRaDINISXnq8yNx_CBw1qM5uwjYiZoJOYGqWB3RU,4267
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=oAO7H7j7Y7czW0t25Gv1KwI2-ofqhZVkbCw9LbZCp4Y,17506
237
- dtlpy-1.104.14.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
238
- dtlpy-1.104.14.dist-info/METADATA,sha256=mi9gvTj2NQ8iLtxyNWolKjx2irfR01Yl49eZ6xQpNeM,3020
239
- dtlpy-1.104.14.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
240
- dtlpy-1.104.14.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
241
- dtlpy-1.104.14.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
242
- dtlpy-1.104.14.dist-info/RECORD,,
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,,