dtlpy 1.118.15__py3-none-any.whl → 1.119.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.
@@ -93,12 +93,22 @@ class Models:
93
93
  client_api: ApiClient,
94
94
  package: entities.Package = None,
95
95
  project: entities.Project = None,
96
- project_id: str = None):
96
+ project_id: str = None,
97
+ app: entities.App = None):
98
+ """
99
+ Initialize the Models repository.
100
+
101
+ :param client_api: The client API.
102
+ :param package: The package.
103
+ :param project: The project entity.
104
+ :param project_id: The project ID.
105
+ :param app: The app entity.
106
+ """
97
107
  self._client_api = client_api
98
108
  self._project = project
99
109
  self._package = package
100
110
  self._project_id = project_id
101
-
111
+ self._app = app
102
112
  if self._project is not None:
103
113
  self._project_id = self._project.id
104
114
 
@@ -112,9 +122,8 @@ class Models:
112
122
  projects = repositories.Projects(client_api=self._client_api)
113
123
  self._project = projects.get(project_id=self._project_id)
114
124
  if self._project is None:
115
- if self._package is not None:
116
- if self._package._project is not None:
117
- self._project = self._package._project
125
+ if self._app is not None and self._app.project is not None:
126
+ self._project = self.app.project
118
127
  if self._project is None:
119
128
  raise exceptions.PlatformException(
120
129
  error='2001',
@@ -138,6 +147,17 @@ class Models:
138
147
  ' Please use package.models or set a model')
139
148
  assert isinstance(self._package, entities.Package)
140
149
  return self._package
150
+
151
+ @property
152
+ def app(self) -> entities.App:
153
+ if self._app is None:
154
+ raise exceptions.PlatformException(
155
+ error='2001',
156
+ message='Cannot perform action WITHOUT App entity in {} repository.'.format(
157
+ self.__class__.__name__) +
158
+ ' Please use app.models or set a model')
159
+ assert isinstance(self._app, entities.App)
160
+ return self._app
141
161
 
142
162
  ###########
143
163
  # methods #
@@ -249,6 +269,8 @@ class Models:
249
269
  filters.add(field='projectId', values=self._project.id)
250
270
  if self._package is not None:
251
271
  filters.add(field='packageId', values=self._package.id)
272
+ if self._app is not None:
273
+ filters.add(field='app.id', values=self._app.id)
252
274
 
253
275
  # assert type filters
254
276
  if not isinstance(filters, entities.Filters):
@@ -375,18 +397,18 @@ class Models:
375
397
  model_artifacts: List[entities.Artifact] = None,
376
398
  project_id=None,
377
399
  tags: List[str] = None,
378
- package: entities.Package = None,
379
400
  configuration: dict = None,
380
401
  status: str = None,
381
402
  scope: entities.EntityScopeLevel = entities.EntityScopeLevel.PROJECT,
382
403
  version: str = '1.0.0',
383
- input_type=None,
384
- output_type=None,
404
+ input_type='image',
405
+ output_type=entities.AnnotationType.CLASSIFICATION,
385
406
  train_filter: entities.Filters = None,
386
407
  validation_filter: entities.Filters = None,
387
408
  annotations_train_filter: entities.Filters = None,
388
409
  annotations_validation_filter: entities.Filters = None,
389
- app: entities.App = None
410
+ app: entities.App = None,
411
+ dpk_model_name: str = None
390
412
  ) -> entities.Model:
391
413
  """
392
414
  Create a Model entity
@@ -399,7 +421,6 @@ class Models:
399
421
  :param model_artifacts: optional list of dl.Artifact. Can be ItemArtifact, LocaArtifact or LinkArtifact
400
422
  :param str project_id: project that owns the model
401
423
  :param list tags: list of string tags
402
- :param package: optional - Package object
403
424
  :param dict configuration: optional - model configuration - dict
404
425
  :param str status: `str` of the optional values of
405
426
  :param str scope: the scope level of the model dl.EntityScopeLevel
@@ -420,6 +441,21 @@ class Models:
420
441
  project.models.create(model_name='model_name', dataset_id='dataset_id', labels=['label1', 'label2'], train_filter={filter: {$and: [{dir: "/10K short videos"}]},page: 0,pageSize: 1000,resource: "items"}})
421
442
 
422
443
  """
444
+ if app is None and self._app is None:
445
+ raise exceptions.PlatformException("Must provide an app entity or set the app in the models repository")
446
+ if app is None:
447
+ app = self.app
448
+ dpk = app.dpk
449
+ model_to_create = None
450
+ for dpk_model in dpk.components.models:
451
+ if dpk_model_name == dpk_model['name']:
452
+ model_to_create = dpk_model
453
+ break
454
+ if model_to_create is None:
455
+ valid_model_names = [m['name'] for m in dpk.components.models]
456
+ raise exceptions.NotFound(f"Must provide a valid model name from the dpk {valid_model_names}")
457
+
458
+
423
459
 
424
460
  if ontology_id is not None:
425
461
  # take labels from ontology
@@ -427,87 +463,64 @@ class Models:
427
463
  labels = [label.tag for label in ontologies.get(ontology_id=ontology_id).labels]
428
464
 
429
465
  if labels is None:
430
- # dont have to have labels. can use an empty list
431
- labels = list()
432
-
433
- if input_type is None:
434
- input_type = 'image'
435
-
436
- if output_type is None:
437
- output_type = entities.AnnotationType.CLASSIFICATION
438
-
439
- if package is None and self._package is None:
440
- raise exceptions.PlatformException('Must provide a Package or create from package.models')
441
- elif package is None:
442
- package = self._package
466
+ labels = model_to_create.get('labels', list())
443
467
 
444
468
  # TODO need to remove the entire project id user interface - need to take it from dataset id (in BE)
445
469
  if project_id is None:
446
- if self._project is None:
470
+ if self._project is None and app.project_id is None:
447
471
  raise exceptions.PlatformException('Please provide project_id')
448
- project_id = self._project.id
449
- else:
450
- if project_id != self._project_id:
451
- if (isinstance(package, entities.Package) and not package.is_global) or \
452
- (isinstance(package, entities.Dpk) and not package.scope != 'public'):
453
- logger.warning(
454
- "Note! you are specified project_id {!r} which is different from repository context: {!r}".format(
455
- project_id, self._project_id))
472
+ project_id = self._project.id if self._project is not None else app.project_id
456
473
 
457
474
  if model_artifacts is None:
458
475
  model_artifacts = []
459
476
 
460
477
  if not isinstance(model_artifacts, list):
461
478
  raise ValueError('`model_artifacts` must be a list of dl.Artifact entities')
479
+
462
480
 
463
481
  # create payload for request
464
482
  payload = {
465
- 'packageId': package.id,
466
483
  'name': model_name,
484
+ 'scope': scope,
485
+ 'packageId': dpk.id,
486
+ 'outputType': output_type,
467
487
  'projectId': project_id,
468
488
  'datasetId': dataset_id,
469
489
  'labels': labels,
470
490
  'artifacts': [artifact.to_json(as_artifact=True) for artifact in model_artifacts],
471
- 'scope': scope,
472
491
  'version': version,
473
- 'inputType': input_type,
474
- 'outputType': output_type,
492
+ 'inputType': input_type
475
493
  }
476
494
 
477
495
  if app is not None:
478
- if not isinstance(package, entities.Dpk):
479
- raise ValueError('package must be a Dpk entity')
480
- if app.dpk_name != package.name or app.dpk_version != package.version:
481
- raise ValueError('App and package must be the same')
482
- component_name = None
483
- compute_config = None
484
- for model in package.components.models:
485
- if model['name'] == model_name:
486
- component_name = model['name']
487
- compute_config = model.get('computeConfigs', None)
488
- break
489
- if component_name is None:
490
- raise ValueError('Model name not found in package')
496
+ payload['moduleName'] = model_to_create['moduleName']
491
497
  payload['app'] = {
492
498
  "id": app.id,
493
- "componentName": component_name,
494
- "dpkName": package.name,
495
- "dpkVersion": package.version
499
+ "componentName": model_to_create['name'],
500
+ "dpkName": dpk.name,
501
+ "dpkVersion": dpk.version,
502
+ "dpkId": dpk.id
496
503
  }
497
- if compute_config is not None:
498
- payload['app']['computeConfig'] = compute_config
499
504
 
500
505
  if configuration is not None:
501
506
  payload['configuration'] = configuration
507
+ else:
508
+ payload['configuration'] = model_to_create.get('configuration', dict())
502
509
 
503
510
  if tags is not None:
504
511
  payload['tags'] = tags
512
+ else:
513
+ payload['tags'] = model_to_create.get('tags', list())
505
514
 
506
515
  if description is not None:
507
516
  payload['description'] = description
517
+ else:
518
+ payload['description'] = model_to_create.get('description', '')
508
519
 
509
520
  if status is not None:
510
521
  payload['status'] = status
522
+ else:
523
+ payload['status'] = model_to_create.get('status', entities.ModelStatus.PRE_TRAINED)
511
524
 
512
525
  if train_filter or validation_filter or annotations_train_filter or annotations_validation_filter:
513
526
  metadata = Models._build_model_metadata(
@@ -529,8 +542,7 @@ class Models:
529
542
 
530
543
  model = entities.Model.from_json(_json=response.json(),
531
544
  client_api=self._client_api,
532
- project=self._project,
533
- package=package)
545
+ project=self._project)
534
546
 
535
547
  return model
536
548
 
@@ -623,6 +623,7 @@ class Tasks:
623
623
  priority=entities.TaskPriority.MEDIUM,
624
624
  consensus_percentage=None,
625
625
  consensus_assignees=None,
626
+ scoring=False,
626
627
  limit=None,
627
628
  wait=True,
628
629
  enforce_video_conversion=True,
@@ -644,7 +645,7 @@ class Tasks:
644
645
  consensus_task_type=entities.ConsensusTaskType.QUALIFICATION,
645
646
  consensus_percentage=consensus_percentage,
646
647
  consensus_assignees=consensus_assignees,
647
- scoring=False,
648
+ scoring=scoring,
648
649
  limit=limit,
649
650
  wait=wait,
650
651
  enforce_video_conversion=enforce_video_conversion,
@@ -690,7 +691,7 @@ class Tasks:
690
691
  :param str consensus_task_type: consensus task type - "consensus", "qualification", or "honeypot"
691
692
  :param int consensus_percentage: percentage of items to be copied to multiple annotators (consensus items)
692
693
  :param int consensus_assignees: the number of different annotators per item (number of copies per item)
693
- :param bool scoring: create a scoring app in project
694
+ :param bool scoring: create a scoring app in project. Note: Scoring is no longer applied by default. Set scoring=True to enable it.
694
695
  :param int limit: the limit items that the task can include
695
696
  :param bool wait: wait until create task finish
696
697
  :param bool enforce_video_conversion: Enforce WEBM conversion on video items for frame-accurate annotations
@@ -726,6 +727,9 @@ class Tasks:
726
727
  if workload is None and assignee_ids is not None:
727
728
  workload = entities.Workload.generate(assignee_ids=assignee_ids)
728
729
 
730
+ if scoring is False:
731
+ logger.warning("Scoring is no longer applied by default. Set scoring=True to enable it.")
732
+
729
733
  # Handle metadata for consensus tasks
730
734
  if metadata is None:
731
735
  metadata = {}
@@ -1010,7 +1014,7 @@ class Tasks:
1010
1014
  :param entities.ConsensusTaskType consensus_task_type: consensus_task_type of the task options in entities.ConsensusTaskType
1011
1015
  :param int consensus_percentage: percentage of items to be copied to multiple annotators (consensus items)
1012
1016
  :param int consensus_assignees: the number of different annotators per item (number of copies per item)
1013
- :param bool scoring: create a scoring app in project
1017
+ :param bool scoring: create a scoring app in project. Note: Scoring is no longer applied by default for consensus tasks. Set scoring=True to enable it.
1014
1018
  :param bool enforce_video_conversion: Enforce WEBM conversion on video items for frame-accurate annotations. WEBM Conversion will be executed as a project service and incurs compute costs. Service compute resources can be set according to planned workload.
1015
1019
  :return: Task object
1016
1020
  :rtype: dtlpy.entities.task.Task
@@ -1071,6 +1075,9 @@ class Tasks:
1071
1075
  else:
1072
1076
  project_id = self.project.id
1073
1077
 
1078
+ if scoring is False:
1079
+ logger.warning("Scoring is no longer applied by default. Set scoring=True to enable it.")
1080
+
1074
1081
  if workload is None and assignee_ids is not None:
1075
1082
  workload = entities.Workload.generate(assignee_ids=assignee_ids)
1076
1083
 
@@ -378,10 +378,26 @@ class Uploader:
378
378
  return futures
379
379
 
380
380
  async def __single_external_sync(self, element):
381
- storage_id = element.buffer.split('//')[1]
381
+ # Path format: anything before last "://" is scheme (external, provider s3/gs, etc.). After it: bucket_name/path_to_file.
382
+ # API expects storageId as "bucket:key".
383
+ idx = element.buffer.rfind('://')
384
+ if idx == -1:
385
+ raise PlatformException(
386
+ error="400",
387
+ message="External path must contain '://'. Got: {}".format(element.buffer)
388
+ )
389
+ path_after_schemes = element.buffer[idx + 3:]
390
+ # Collapse consecutive slashes so "bucket///key/path1//path2" becomes "bucket/key/path1/path2"
391
+ path_normalized = '/'.join(segment for segment in path_after_schemes.split('/') if segment)
392
+ parts = path_normalized.split('/', 1)
393
+ if len(parts) != 2:
394
+ raise PlatformException(
395
+ error="400",
396
+ message="The part after '://' must be bucket_name/path_to_file (e.g. my-bucket/folder/file.jpg). Got after '://': '{}'".format(path_after_schemes)
397
+ )
382
398
  req_json = dict()
383
399
  req_json['filename'] = element.remote_filepath
384
- req_json['storageId'] = storage_id
400
+ req_json['storageId'] = f"{parts[0]}:{parts[1]}"
385
401
  success, response = self.items_repository._client_api.gen_request(req_type='post',
386
402
  path='/datasets/{}/imports'.format(
387
403
  self.items_repository.dataset.id),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dtlpy
3
- Version: 1.118.15
3
+ Version: 1.119.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,5 +1,5 @@
1
1
  dtlpy/__init__.py,sha256=p9qDLEQ01cTj0Xx8FkxJPHSmP7LMHMv8b5-ZWW1FPrU,20625
2
- dtlpy/__version__.py,sha256=a7Ac7-Ik18nb6w9v4mao9bbnPkOuHmEDapo3mrld8EI,21
2
+ dtlpy/__version__.py,sha256=qej6cp2wKzCmndfEOj-tsDZmtC4n6TJT13AH--NMCI0,20
3
3
  dtlpy/exceptions.py,sha256=EQCKs3pwhwZhgMByQN3D3LpWpdxwcKPEEt-bIaDwURM,2871
4
4
  dtlpy/new_instance.py,sha256=XegQav2hzPrPAUzuRFvUIGSPidoK-rbb02Q43NPsIpo,9982
5
5
  dtlpy/assets/__init__.py,sha256=D_hAa6NM8Zoy32sF_9b7m0b7I-BQEyBFg8-9Tg2WOeo,976
@@ -47,7 +47,7 @@ dtlpy/entities/__init__.py,sha256=tHndgUHZOaiXJdOY-NTvGoHcJ29EkGzz389sWQPWyaI,50
47
47
  dtlpy/entities/analytic.py,sha256=6bMG4FD7VIDr3ca8hJ25yd9IyAuzPdaN1lsV4VD7z2Q,13739
48
48
  dtlpy/entities/annotation.py,sha256=vE-y9FcBXS_ljHgoeXVQmcfxok-XNRnEaBhXPmBVJO0,66506
49
49
  dtlpy/entities/annotation_collection.py,sha256=CEYSBHhhDkC0VJdHsBSrA6TgdKGMcKeI3tFM40UJwS8,29838
50
- dtlpy/entities/app.py,sha256=zGqJYSpq7r6D4jauSCk5vt2lqlaolFSoDvSISLa0oyA,6997
50
+ dtlpy/entities/app.py,sha256=YgwAPJloMAkK_QMbfdJrZAoLKJMQzPu80Iw5ID9x6ys,7461
51
51
  dtlpy/entities/app_module.py,sha256=0UiAbBX1q8iEImi3nY7ySWZZHoRRwu0qUXmyXmgVAc4,3645
52
52
  dtlpy/entities/artifact.py,sha256=wtLtBuidOPbnba0ok40JyunCCIBGbAl4bP_ebK39Kk4,5711
53
53
  dtlpy/entities/assignment.py,sha256=Dc1QcfVf67GGcmDDi4ubESDuPkSgjXqdqjTBQ31faUM,14722
@@ -56,10 +56,10 @@ dtlpy/entities/bot.py,sha256=is3NUCnPg56HSjsHIvFcVkymValMqDV0uHRDC1Ib-ds,3819
56
56
  dtlpy/entities/codebase.py,sha256=7ZxEGhG_52mdZWfjg9ge6vkgLf3NDh1INZMkCHns-6Y,8864
57
57
  dtlpy/entities/collection.py,sha256=FPPPfIxOsBG1ujORPJVq8uXyF8vhIqC6N4EiI9SJzl0,1160
58
58
  dtlpy/entities/command.py,sha256=5RMQYjOGLRF8JZd7QFAPyE8utsp4eZzLApI2dEAbaqo,5301
59
- dtlpy/entities/compute.py,sha256=egdoRQCaJ2e5E3bA72n0nUmUfIjWBhD9sWr8nTWI3G8,15031
59
+ dtlpy/entities/compute.py,sha256=gdG5rbV4vS7a5oo6uIVLQM9Hm24gAafpKgjRVHmJM_o,8840
60
60
  dtlpy/entities/dataset.py,sha256=S_l3Bu2nmbqgN7eroNkRrXt7_2bI9V_1r0nZKTc_obY,55629
61
61
  dtlpy/entities/directory_tree.py,sha256=Rni6pLSWytR6yeUPgEdCCRfTg_cqLOdUc9uCqz9KT-Q,1186
62
- dtlpy/entities/dpk.py,sha256=XrK8X8p4Ag6LMjDrDpMstY-h_yTll_sMmKTZT6bLbWE,17923
62
+ dtlpy/entities/dpk.py,sha256=MR_TeuGpdboxjVU8Pbi6KXIFo3gtDjscVIc-7Wgvv6w,32081
63
63
  dtlpy/entities/driver.py,sha256=usyWqlM8KxQ-L9uCTSAmPXCu2dU4fordAN8uL0I2wRM,7720
64
64
  dtlpy/entities/execution.py,sha256=uQe535w9OcAoDiNWf96KcpFzUDEUU-DYsUalv5VziyM,13673
65
65
  dtlpy/entities/feature.py,sha256=9fFjD0W57anOVSAVU55ypxN_WTCsWTG03Wkc3cAAj78,3732
@@ -71,7 +71,7 @@ dtlpy/entities/item.py,sha256=JoF3vTlsBUXwsC7b5KCkvDOeGP7Iby--Ww4PJQ5_UF4,35586
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
- dtlpy/entities/model.py,sha256=YvkLjH4Gdk9vUcuWJ3KLJe6v9fY82692kzjqCuAAU4Y,27815
74
+ dtlpy/entities/model.py,sha256=CpuQJiwLkkW4ji6WyF1a1G6v1YJeH5wwoooO3lipgI4,27138
75
75
  dtlpy/entities/node.py,sha256=RiCqG659Pb1PZNMewR-F7eNbU5tt713fiZY9xW6-Pes,39199
76
76
  dtlpy/entities/ontology.py,sha256=qA8XOhHPiZ7fUK2QPBola2xA8SGEdzsgCy5oozgARwc,32534
77
77
  dtlpy/entities/organization.py,sha256=Zm-tTHV82PvYyTNetRRXqvmvzBCbXEwS-gAENf7Zny4,9874
@@ -88,7 +88,7 @@ dtlpy/entities/prompt_item.py,sha256=S_cgekiUsAK0OLP_XXbfvpNv7Zr5XT86jCB2w1yyyjQ
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=3E4pqn7Zg5pDaaagpyHfHuKK1uSDZ8-UbPrIzJfXuu4,33932
91
+ dtlpy/entities/service.py,sha256=PIU27o6cqRGmnVndKgNE8QzaqEkV4lKS3Wx8-TaGF4A,35565
92
92
  dtlpy/entities/service_driver.py,sha256=N3fL_xTPLu75UBFQZO5Plxx2kpED-UIILxTYbD58rzQ,3917
93
93
  dtlpy/entities/setting.py,sha256=uXagJHtcCR3nJYClR_AUGZjz_kx3TejPcUZ8ginHFIA,8561
94
94
  dtlpy/entities/task.py,sha256=ajVIkB-3Aqm9Udn87ITvIsGwduyCTtGeqV-FjSYtZKg,19605
@@ -157,8 +157,8 @@ dtlpy/ml/summary_writer.py,sha256=dehDi8zmGC1sAGyy_3cpSWGXoGQSiQd7bL_Thoo8yIs,27
157
157
  dtlpy/ml/train_utils.py,sha256=t607DfyGBRrUQZ9jPmPe4V9Udzfk0hPWuw4OvKZKAeo,2440
158
158
  dtlpy/repositories/__init__.py,sha256=D2YI3ZLlSx0OlgVr8y_E9rsj-IxCDOj0MB6QTlv2NSA,2061
159
159
  dtlpy/repositories/analytics.py,sha256=dQPCYTPAIuyfVI_ppR49W7_GBj0033feIm9Gd7LW1V0,2966
160
- dtlpy/repositories/annotations.py,sha256=ygN6JRa9jAod9kXDwksaScsTqzWCzegYsmF_i2be5xA,43442
161
- dtlpy/repositories/apps.py,sha256=miCYJNqte8TVFkBezE8yzueMsz593jNO9sSUfZRVV7M,15969
160
+ dtlpy/repositories/annotations.py,sha256=HIr9oWGXuDUifKSUtzUVMBUB3V8D8OCvzYv8VUI-b1I,43568
161
+ dtlpy/repositories/apps.py,sha256=L6ICkck6p0vDTh0k52G97mjL4VRQDVkgUdXONqleYlw,15968
162
162
  dtlpy/repositories/artifacts.py,sha256=Ke2ustTNw-1eQ0onLsWY7gL2aChjXPAX5p1uQ_EzMbo,19081
163
163
  dtlpy/repositories/assignments.py,sha256=1VwJZ7ctQe1iaDDDpeYDgoj2G-TCgzolVLUEqUocd2w,25506
164
164
  dtlpy/repositories/bots.py,sha256=q1SqH01JHloljKxknhHU09psV1vQx9lPhu3g8mBBeRg,8104
@@ -166,18 +166,18 @@ dtlpy/repositories/codebases.py,sha256=pvcZxdrq0-zWysVbdXjUOhnfcF6hJD8v5VclNZ-zh
166
166
  dtlpy/repositories/collections.py,sha256=lA4T7irQ_dtI_bcVxrHHikClcglp8ltsoPcLwHyAick,12947
167
167
  dtlpy/repositories/commands.py,sha256=aismmQOkZbpo9vN1fVYTHXrsJoQNrN7wiANUCiUWUmY,5717
168
168
  dtlpy/repositories/compositions.py,sha256=H417BvlQAiWr5NH2eANFke6CfEO5o7DSvapYpf7v5Hk,2150
169
- dtlpy/repositories/computes.py,sha256=K1a28vJn3tB-h_Xvl8blr-lOytfz3MvyzFzauCja8UA,16936
169
+ dtlpy/repositories/computes.py,sha256=LYYC9O3JtPVO8vMM16bYoqyCJdkav1oPheM99Eey3fg,16955
170
170
  dtlpy/repositories/datasets.py,sha256=1-ud7Ulc8z5IwQezjrW4C6V24xVUhR0U_dgix76zDYw,72778
171
171
  dtlpy/repositories/downloader.py,sha256=EkCscU8QHa6H0-t17laFZn49Up-wNHbFd2DxVIqX8Fc,56209
172
172
  dtlpy/repositories/dpks.py,sha256=Cu8pqFZr6MlrdidjysQT_X1hyKaL5YNUn81puOM5FX0,18508
173
173
  dtlpy/repositories/drivers.py,sha256=z9qu4I2lwa0aujkKxj0bvn71Zzs8U8byqSx8S9DAIQw,19553
174
174
  dtlpy/repositories/executions.py,sha256=BuFv7J6U2Q7om4OlC0q6tnk-1Vcw5m0adfR9a5Mj98Y,32361
175
- dtlpy/repositories/feature_sets.py,sha256=ueYIGQIz-XYbbiuQy0YnpqO3dqJKGwtbGK0H5ZgkaBs,13892
175
+ dtlpy/repositories/feature_sets.py,sha256=hsZ3TUh4BIrSwWqNhRAm6-NjhKWwNRYf-hC228mUURY,13892
176
176
  dtlpy/repositories/features.py,sha256=SNmECqKSfHlNgjjG_RlX-GAU3udYN9_ZYOe8mFNy010,10671
177
177
  dtlpy/repositories/integrations.py,sha256=Y5c37fQCaIkw1p5jPEbAqytgRVXuqe771eHC1hNDE7A,19491
178
178
  dtlpy/repositories/items.py,sha256=u2Vg0jOTZ9EhV1sPJdAeIUyfqBRv63Gl-IXaMlon8PM,40028
179
179
  dtlpy/repositories/messages.py,sha256=QU0Psckg6CA_Tlw9AVxqa-Ay1fRM4n269sSIJkH9o7E,3066
180
- dtlpy/repositories/models.py,sha256=K8mqmYM_kj3z727VDcdcnQC_XDw18bf48ujEV-deStU,46074
180
+ dtlpy/repositories/models.py,sha256=wx_0EBM_7uoUxlWKxN5ZuCNz0e5J1tgHpKf8f1G8CHI,46375
181
181
  dtlpy/repositories/nodes.py,sha256=xXJm_YA0vDUn0dVvaGeq6ORM0vI3YXvfjuylvGRtkxo,3061
182
182
  dtlpy/repositories/ontologies.py,sha256=unnMhD2isR9DVE5S8Fg6fSDf1ZZ5Xemxxufx4LEUT3w,19577
183
183
  dtlpy/repositories/organizations.py,sha256=6ijUDFbsogfRul1g_vUB5AZOb41MRmV5NhNU7WLHt3A,22825
@@ -191,11 +191,11 @@ dtlpy/repositories/schema.py,sha256=kTKDrbwm7BfQnBAK81LpAl9ChNFdyUweSLNazlJJhjk,
191
191
  dtlpy/repositories/service_drivers.py,sha256=rxbhLUtT7TCbkVxH4HJtFT9ywcikByPFdX7_4kiTiK0,6766
192
192
  dtlpy/repositories/services.py,sha256=LvZCE5_uxsK886sGCSaiZuaRnYbHFSrR2P4G_MlJopY,68856
193
193
  dtlpy/repositories/settings.py,sha256=HHYSGub5Y6cQ746pBfvlQndsgBj1UoNFupa2otgvsWI,11645
194
- dtlpy/repositories/tasks.py,sha256=ocEEXsLUAVolMbOfdSeeZEwupNH4FMZrjs-odjESSQ0,63361
194
+ dtlpy/repositories/tasks.py,sha256=W3fIGFVh3H7YqDOrP1qJoSox5psA7h_vNsdidiFH4wA,63828
195
195
  dtlpy/repositories/times_series.py,sha256=m-bKFEgiZ13yQNelDjBfeXMUy_HgsPD_JAHj1GVx9fU,11420
196
196
  dtlpy/repositories/triggers.py,sha256=izdNyCN1gDc5uo7AXntso0HSMTDIzGFUp-dSEz8cn_U,21990
197
197
  dtlpy/repositories/upload_element.py,sha256=R2KWIXmkp_dMAIr81tu3Y_VRfldj0ju8__V28ombkcg,10677
198
- dtlpy/repositories/uploader.py,sha256=I9mP-Ikj0zUOdMTf-7FN_huHWXYeWc8gzVRpfUPAXj8,32695
198
+ dtlpy/repositories/uploader.py,sha256=WrluhTcIZCyHjys9n8qU_if-p87b6d0VOMoiwgwJNsA,33646
199
199
  dtlpy/repositories/webhooks.py,sha256=IIpxOJ-7KeQp1TY9aJZz-FuycSjAoYx0TDk8z86KAK8,9033
200
200
  dtlpy/services/__init__.py,sha256=VfVJy2otIrDra6i7Sepjyez2ujiE6171ChQZp-YgxsM,904
201
201
  dtlpy/services/aihttp_retry.py,sha256=tgntZsAY0dW9v08rkjX1T5BLNDdDd8svtgn7nH8DSGU,5022
@@ -227,12 +227,12 @@ dtlpy/utilities/reports/report.py,sha256=3nEsNnIWmdPEsd21nN8vMMgaZVcPKn9iawKTTeO
227
227
  dtlpy/utilities/videos/__init__.py,sha256=SV3w51vfPuGBxaMeNemx6qEMHw_C4lLpWNGXMvdsKSY,734
228
228
  dtlpy/utilities/videos/video_player.py,sha256=LCxg0EZ_DeuwcT7U_r7MRC6Q19s0xdFb7x5Gk39PRms,24072
229
229
  dtlpy/utilities/videos/videos.py,sha256=4xbbrHDeJhyR8VXW5ojLEp1GGGwgMoRIRyGrXEX5wiA,22031
230
- dtlpy-1.118.15.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
231
- dtlpy-1.118.15.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
232
- dtlpy-1.118.15.data/scripts/dlp.py,sha256=ZpfJvYE1_OTSorEYBphqTOutnHSb5TqOXh0y_mUCTJs,4393
233
- dtlpy-1.118.15.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
234
- dtlpy-1.118.15.dist-info/METADATA,sha256=0HwM_snYfeLqcTpkwCaLMFNBZmuGZD6pJACYnAYTwug,5908
235
- dtlpy-1.118.15.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
236
- dtlpy-1.118.15.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
237
- dtlpy-1.118.15.dist-info/top_level.txt,sha256=MSr60TGZYlwXCKxlLoZCfILRZ6pU_3L-20d2SZvygyA,6
238
- dtlpy-1.118.15.dist-info/RECORD,,
230
+ dtlpy-1.119.5.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
231
+ dtlpy-1.119.5.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
232
+ dtlpy-1.119.5.data/scripts/dlp.py,sha256=ZpfJvYE1_OTSorEYBphqTOutnHSb5TqOXh0y_mUCTJs,4393
233
+ dtlpy-1.119.5.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
234
+ dtlpy-1.119.5.dist-info/METADATA,sha256=6UM0jCFcAsTGYByszQE6B5wJbzdFnb7u3_4NDaTMMKo,5907
235
+ dtlpy-1.119.5.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
236
+ dtlpy-1.119.5.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
237
+ dtlpy-1.119.5.dist-info/top_level.txt,sha256=MSr60TGZYlwXCKxlLoZCfILRZ6pU_3L-20d2SZvygyA,6
238
+ dtlpy-1.119.5.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.10.1)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes