dtlpy 1.109.20__py3-none-any.whl → 1.111.11__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 CHANGED
@@ -293,6 +293,8 @@ ANNOTATION_TYPE_POSE = AnnotationType.POSE
293
293
  ANNOTATION_TYPE_SEGMENTATION = AnnotationType.SEGMENTATION
294
294
  ANNOTATION_TYPE_SUBTITLE = AnnotationType.SUBTITLE
295
295
  ANNOTATION_TYPE_TEXT = AnnotationType.TEXT
296
+ ANNOTATION_TYPE_FREE_TEXT = AnnotationType.FREE_TEXT
297
+ ANNOTATION_TYPE_REF_IMAGE = AnnotationType.REF_IMAGE
296
298
 
297
299
  ITEM_STATUS_COMPLETED = ItemStatus.COMPLETED
298
300
  ITEM_STATUS_APPROVED = ItemStatus.APPROVED
dtlpy/__version__.py CHANGED
@@ -1 +1 @@
1
- version = '1.109.20'
1
+ version = '1.111.11'
@@ -84,7 +84,7 @@ class FileHistory(History):
84
84
  def write(t):
85
85
  f.write(t.encode('utf-8'))
86
86
 
87
- write('\n# %s\n' % datetime.datetime.utcnow())
87
+ write('\n# %s\n' % datetime.datetime.now(datetime.timezone.utc))
88
88
  for line in string.split('\n'):
89
89
  hide = any(field in line for field in self.to_hide)
90
90
  if not hide:
dtlpy/dlp/dlp.py CHANGED
@@ -27,7 +27,7 @@ logger.propagate = False
27
27
 
28
28
 
29
29
  def dlp_exit():
30
- print(datetime.datetime.utcnow())
30
+ print(datetime.datetime.now(datetime.timezone.utc))
31
31
  print("Goodbye ;)")
32
32
  sys.exit(0)
33
33
 
@@ -71,7 +71,7 @@ def main():
71
71
  else:
72
72
  command_executor.run(args=args)
73
73
  except exceptions.TokenExpired:
74
- print(datetime.datetime.utcnow())
74
+ print(datetime.datetime.now(datetime.timezone.utc))
75
75
  print("[ERROR] token expired, please login.")
76
76
  continue
77
77
  except SystemExit as e:
@@ -83,11 +83,11 @@ def main():
83
83
  sys.exit(0)
84
84
  # error
85
85
  else:
86
- print(datetime.datetime.utcnow())
86
+ print(datetime.datetime.now(datetime.timezone.utc))
87
87
  print('"{command}" is not a valid command'.format(command=text))
88
88
  continue
89
89
  except Exception as e:
90
- print(datetime.datetime.utcnow())
90
+ print(datetime.datetime.now(datetime.timezone.utc))
91
91
  if hasattr(e, 'message'):
92
92
  print(e.message)
93
93
  else:
@@ -102,11 +102,11 @@ def main():
102
102
  command_executor.run(args=args)
103
103
  sys.exit(0)
104
104
  except exceptions.TokenExpired:
105
- print(datetime.datetime.utcnow())
105
+ print(datetime.datetime.now(datetime.timezone.utc))
106
106
  print("[ERROR] token expired, please login.")
107
107
  sys.exit(1)
108
108
  except Exception as e:
109
- print(datetime.datetime.utcnow())
109
+ print(datetime.datetime.now(datetime.timezone.utc))
110
110
  print(traceback.format_exc())
111
111
  print(e)
112
112
  sys.exit(1)
@@ -123,6 +123,6 @@ if __name__ == "__main__":
123
123
  try:
124
124
  main()
125
125
  except Exception as err:
126
- print(datetime.datetime.utcnow())
126
+ print(datetime.datetime.now(datetime.timezone.utc))
127
127
  print("[ERROR]\t%s" % err)
128
128
  print("Dataloop.ai CLI. Type dlp --help for options")
@@ -47,6 +47,8 @@ class AnnotationType(str, Enum):
47
47
  GIS = "gis"
48
48
  SEMANTIC_3D = "ref_semantic_3d"
49
49
  POLYLINE_3D = "polyline_3d"
50
+ FREE_TEXT = "text"
51
+ REF_IMAGE = "ref_image"
50
52
 
51
53
 
52
54
  class ViewAnnotationOptions(str, Enum):
dtlpy/entities/compute.py CHANGED
@@ -216,6 +216,7 @@ class ComputeCluster:
216
216
  node_pools: Optional[List[NodePool]] = None,
217
217
  metadata: Optional[Dict] = None,
218
218
  authentication: Optional[Authentication] = None,
219
+ plugins: Optional[dict] = None
219
220
  ):
220
221
  self.name = name
221
222
  self.endpoint = endpoint
@@ -225,6 +226,7 @@ class ComputeCluster:
225
226
  self.metadata = metadata if metadata is not None else {}
226
227
  self.authentication = authentication if authentication is not None else Authentication(
227
228
  AuthenticationIntegration("", ""))
229
+ self.plugins = plugins
228
230
 
229
231
  @classmethod
230
232
  def from_json(cls, _json):
@@ -235,7 +237,8 @@ class ComputeCluster:
235
237
  provider=ClusterProvider(_json.get('provider')),
236
238
  node_pools=[NodePool.from_json(np) for np in _json.get('nodePools', list())],
237
239
  metadata=_json.get('metadata'),
238
- authentication=Authentication.from_json(_json.get('authentication', dict()))
240
+ authentication=Authentication.from_json(_json.get('authentication', dict())),
241
+ plugins=_json.get('plugins')
239
242
  )
240
243
 
241
244
  def to_json(self):
@@ -246,20 +249,22 @@ class ComputeCluster:
246
249
  'provider': self.provider.value,
247
250
  'nodePools': [np.to_json() for np in self.node_pools],
248
251
  'metadata': self.metadata,
249
- 'authentication': self.authentication.to_json()
252
+ 'authentication': self.authentication.to_json(),
253
+ 'plugins': self.plugins
250
254
  }
251
255
 
252
256
  @classmethod
253
257
  def from_setup_json(cls, devops_output, integration):
254
258
  node_pools = [NodePool.from_json(n) for n in devops_output['config']['nodePools']]
255
259
  return cls(
256
- devops_output['config']['name'],
257
- devops_output['config']['endpoint'],
258
- devops_output['config']['kubernetesVersion'],
259
- ClusterProvider(devops_output['config']['provider']),
260
- node_pools,
261
- {},
262
- Authentication(AuthenticationIntegration(integration.id, integration.type))
260
+ name=devops_output['config']['name'],
261
+ endpoint=devops_output['config']['endpoint'],
262
+ kubernetes_version=devops_output['config']['kubernetesVersion'],
263
+ provider=ClusterProvider(devops_output['config']['provider']),
264
+ node_pools=node_pools,
265
+ metadata={},
266
+ authentication=Authentication(AuthenticationIntegration(integration.id, integration.type)),
267
+ plugins=devops_output['config'].get('plugins')
263
268
  )
264
269
 
265
270
 
dtlpy/entities/filters.py CHANGED
@@ -332,7 +332,6 @@ class Filters:
332
332
  self._unique_fields = ['type']
333
333
  values = [annotation_type.value for annotation_type in entities.AnnotationType]
334
334
  values.remove(entities.AnnotationType.NOTE.value)
335
- values += ["text", "ref_image"] # Prompt Annotation Types
336
335
  self.add(field='type', values=values, operator=FiltersOperations.IN, method=FiltersMethod.AND)
337
336
 
338
337
  def __generate_query(self):
@@ -5,6 +5,7 @@ import enum
5
5
  import json
6
6
  import io
7
7
  import os
8
+ from typing import List, Optional
8
9
 
9
10
  from concurrent.futures import ThreadPoolExecutor
10
11
  from .. import entities, repositories
@@ -152,14 +153,17 @@ class PromptItem:
152
153
  self.assistant_prompts = list()
153
154
  # list of assistant (annotations) prompts in the prompt item
154
155
  # Dataloop Item
155
- self._messages = []
156
156
  self._item: entities.Item = item
157
+ self._messages = []
157
158
  self._annotations: entities.AnnotationCollection = None
158
159
  if item is not None:
160
+ if 'json' not in item.mimetype or item.system.get('shebang', dict()).get('dltype') != 'prompt':
161
+ raise ValueError('Expecting a json item with system.shebang.dltype = prompt')
159
162
  self._items = item.items
160
163
  self.fetch()
161
164
  else:
162
165
  self._items = repositories.Items(client_api=client_api)
166
+
163
167
  # to avoid broken stream of json files - DAT-75653
164
168
  self._items._client_api.default_headers['x-dl-sanitize'] = '0'
165
169
 
@@ -454,5 +458,43 @@ class PromptItem:
454
458
  """
455
459
  if self._item is not None:
456
460
  self._item._Item__update_item_binary(_json=self.to_json())
461
+ self._item = self._item.update()
457
462
  else:
458
463
  raise ValueError('Cannot update PromptItem without an item.')
464
+
465
+ # Properties
466
+ @property
467
+ def item(self) -> Optional['entities.Item']:
468
+ """
469
+ Get the underlying Item object.
470
+
471
+ :return: The Item object associated with this PromptItem, or None.
472
+ :rtype: Optional[dtlpy.entities.Item]
473
+ """
474
+ return self._item
475
+
476
+ @item.setter
477
+ def item(self, item: Optional['entities.Item']):
478
+ """
479
+ Set the underlying Item object.
480
+
481
+ :param item: The Item object to associate with this PromptItem, or None.
482
+ :type item: Optional[dtlpy.entities.Item]
483
+ """
484
+ if item is not None and not isinstance(item, entities.Item):
485
+ raise ValueError(f"Expected dtlpy.entities.Item or None, got {type(item)}")
486
+ self._item = item
487
+
488
+
489
+ @property
490
+ def metadata(self) -> dict:
491
+ """
492
+ Get the metadata from the underlying Item object.
493
+
494
+ :return: Metadata dictionary from the item, or empty dict if no item exists.
495
+ :rtype: dict
496
+ """
497
+ if self._item is not None:
498
+ return self._item.metadata
499
+ else:
500
+ raise ValueError('No item found, cannot get metadata, to set item use prompt_item.item = item')
@@ -76,7 +76,7 @@ class List(list, typing.MutableSequence[T]):
76
76
  str_timestamp = str(element['createdAt'])
77
77
  if len(str_timestamp) > 10:
78
78
  str_timestamp = str_timestamp[:10]
79
- element['createdAt'] = datetime.datetime.utcfromtimestamp(int(str_timestamp)).isoformat()
79
+ element['createdAt'] = datetime.datetime.fromtimestamp(int(str_timestamp), datetime.timezone.utc).isoformat()
80
80
  except Exception:
81
81
  pass
82
82
  df = pandas.DataFrame(to_print, columns=keys_list)
@@ -117,15 +117,14 @@ class Zipping:
117
117
 
118
118
  @staticmethod
119
119
  def unzip_directory(zip_filename, to_directory=None):
120
- zipdata = zipfile.ZipFile(zip_filename)
121
- zipinfos = zipdata.infolist()
122
-
123
- # iterate through each file
124
- for zipinfo in zipinfos:
125
- # encode the file names
126
- # zip package make decode by cp437 for file that have name that not ascii
127
- # this happen when the flag_bits be different than 0
128
- # so we encode the name back
129
- if not zipinfo.flag_bits:
130
- zipinfo.filename = zipinfo.filename.encode('cp437').decode('utf-8')
131
- zipdata.extract(zipinfo, to_directory)
120
+ with zipfile.ZipFile(zip_filename) as zipdata:
121
+ zipinfos = zipdata.infolist()
122
+ # iterate through each file
123
+ for zipinfo in zipinfos:
124
+ # encode the file names
125
+ # zip package make decode by cp437 for file that have name that not ascii
126
+ # this happen when the flag_bits be different than 0
127
+ # so we encode the name back
128
+ if not zipinfo.flag_bits:
129
+ zipinfo.filename = zipinfo.filename.encode('cp437').decode('utf-8')
130
+ zipdata.extract(zipinfo, to_directory)
@@ -313,20 +313,21 @@ class BaseModelAdapter(utilities.BaseServiceRunner):
313
313
  self.logger.debug("Downloading subset {!r} of {}".format(subset,
314
314
  self.model_entity.dataset.name))
315
315
 
316
- if self.model_entity.output_type is not None:
316
+ annotation_filters = entities.Filters(resource=entities.FiltersResource.ANNOTATION)
317
+
318
+
319
+ if self.model_entity.output_type is not None and self.model_entity.output_type != "embedding":
317
320
  if self.model_entity.output_type in [entities.AnnotationType.SEGMENTATION,
318
- entities.AnnotationType.POLYGON]:
321
+ entities.AnnotationType.POLYGON]:
319
322
  model_output_types = [entities.AnnotationType.SEGMENTATION, entities.AnnotationType.POLYGON]
320
323
  else:
321
324
  model_output_types = [self.model_entity.output_type]
322
- annotation_filters = entities.Filters(
325
+
326
+ annotation_filters.add(
323
327
  field=entities.FiltersKnownFields.TYPE,
324
328
  values=model_output_types,
325
- resource=entities.FiltersResource.ANNOTATION,
326
329
  operator=entities.FiltersOperations.IN
327
330
  )
328
- else:
329
- annotation_filters = entities.Filters(resource=entities.FiltersResource.ANNOTATION)
330
331
 
331
332
  if not self.configuration.get("include_model_annotations", False):
332
333
  annotation_filters.add(
@@ -467,7 +468,7 @@ class BaseModelAdapter(utilities.BaseServiceRunner):
467
468
  @entities.Package.decorators.function(display_name='Embed Items',
468
469
  inputs={'items': 'Item[]'},
469
470
  outputs={'items': 'Item[]', 'features': 'Json[]'})
470
- def embed_items(self, items: list, upload_features=None, batch_size=None, **kwargs):
471
+ def embed_items(self, items: list, upload_features=None, batch_size=None, progress:utilities.Progress=None, **kwargs):
471
472
  """
472
473
  Extract feature from an input list of items (or single) and return the items and the feature vector.
473
474
 
@@ -523,8 +524,9 @@ class BaseModelAdapter(utilities.BaseServiceRunner):
523
524
  "Uploading items' feature vectors for model {!r}.".format(self.model_entity.name))
524
525
  try:
525
526
  list(pool.map(partial(self._upload_model_features,
526
- feature_set.id,
527
- self.model_entity.project_id),
527
+ progress.logger if progress is not None else self.logger,
528
+ feature_set.id,
529
+ self.model_entity.project_id),
528
530
  batch_items,
529
531
  batch_vectors))
530
532
  except Exception as err:
@@ -541,6 +543,7 @@ class BaseModelAdapter(utilities.BaseServiceRunner):
541
543
  filters: entities.Filters = None,
542
544
  upload_features=None,
543
545
  batch_size=None,
546
+ progress:utilities.Progress=None,
544
547
  **kwargs):
545
548
  """
546
549
  Extract feature from all items given
@@ -569,6 +572,7 @@ class BaseModelAdapter(utilities.BaseServiceRunner):
569
572
  self.embed_items(items=items,
570
573
  upload_features=upload_features,
571
574
  batch_size=batch_size,
575
+ progress=progress,
572
576
  **kwargs)
573
577
  return True
574
578
 
@@ -764,7 +768,7 @@ class BaseModelAdapter(utilities.BaseServiceRunner):
764
768
  # =============
765
769
 
766
770
  @staticmethod
767
- def _upload_model_features(feature_set_id, project_id, item: entities.Item, vector):
771
+ def _upload_model_features(logger, feature_set_id, project_id, item: entities.Item, vector):
768
772
  try:
769
773
  if vector is not None:
770
774
  item.features.create(value=vector,
dtlpy/ml/train_utils.py CHANGED
@@ -28,8 +28,8 @@ def prepare_dataset(dataset: entities.Dataset,
28
28
  """
29
29
 
30
30
  project = dataset.project
31
- now = datetime.datetime.utcnow().isoformat(timespec='minutes', sep='T') # This serves as an id
32
- today = datetime.datetime.utcnow().strftime('%F')
31
+ now = datetime.datetime.now(datetime.timezone.utc).isoformat(timespec='minutes', sep='T') # This serves as an id
32
+ today = datetime.datetime.now(datetime.timezone.utc).strftime('%F')
33
33
 
34
34
  # CLONE
35
35
  clone_name = 'cloned-{ds_name}-{date_str}'.format(ds_name=dataset.name, date_str=today)
@@ -53,7 +53,8 @@ class Computes:
53
53
  features: Optional[Dict] = None,
54
54
  wait=True,
55
55
  status: entities.ComputeStatus = None,
56
- settings: entities.ComputeSettings = None
56
+ settings: entities.ComputeSettings = None,
57
+ metadata: dict = None
57
58
  ):
58
59
  """
59
60
  Create a new compute
@@ -68,10 +69,12 @@ class Computes:
68
69
  :param wait: Wait for compute creation
69
70
  :param status: Compute status
70
71
  :param settings: Compute settings
72
+ :param metadata: Compute metadata
71
73
  :return: Compute
72
74
  :rtype: dl.entities.compute.Compute
73
75
  """
74
-
76
+ if metadata is None:
77
+ metadata = {}
75
78
  shared_contexts_json = []
76
79
  for shared_context in shared_contexts:
77
80
  src_json = shared_context.to_json() if isinstance(shared_context, entities.ComputeContext) else shared_context
@@ -85,7 +88,8 @@ class Computes:
85
88
  'sharedContexts': shared_contexts_json,
86
89
  'cluster': cluster.to_json(),
87
90
  'status': status,
88
- "settings": settings.to_json() if isinstance(settings, entities.ComputeSettings) else settings
91
+ "settings": settings.to_json() if isinstance(settings, entities.ComputeSettings) else settings,
92
+ "metadata": metadata
89
93
  }
90
94
 
91
95
  # request
@@ -312,7 +316,8 @@ class Computes:
312
316
  cluster,
313
317
  ComputeType.KUBERNETES,
314
318
  status=config['config'].get('status', None),
315
- settings=config['config'].get('settings', None))
319
+ settings=config['config'].get('settings', None),
320
+ metadata=config['config'].get('metadata', None))
316
321
 
317
322
  return compute
318
323
 
@@ -762,7 +762,7 @@ class Models:
762
762
  """
763
763
  payload = dict()
764
764
  if service_config is not None:
765
- payload['serviceConfig'] = service_config
765
+ payload['serviceConfig'] = service_config if not service_config.get("serviceConfig") else service_config.get("serviceConfig")
766
766
  success, response = self._client_api.gen_request(req_type="post",
767
767
  path=f"/ml/models/{model_id}/deploy",
768
768
  json_req=payload)
@@ -1351,8 +1351,8 @@ class ApiClient:
1351
1351
  else:
1352
1352
  payload = jwt.decode(self.token, algorithms=['HS256'],
1353
1353
  options={'verify_signature': False}, verify=False)
1354
- d = datetime.datetime.utcnow()
1355
- epoch = datetime.datetime(1970, 1, 1)
1354
+ d = datetime.datetime.now(datetime.timezone.utc)
1355
+ epoch = datetime.datetime(1970, 1, 1, tzinfo=datetime.timezone.utc)
1356
1356
  now = (d - epoch).total_seconds()
1357
1357
  exp = payload['exp']
1358
1358
  if now < (exp - t):
@@ -106,7 +106,7 @@ class DataloopLogger(logging.handlers.BaseRotatingHandler):
106
106
  @staticmethod
107
107
  def get_log_filepath():
108
108
  log_path = DataloopLogger.get_log_path()
109
- log_filepath = os.path.join(log_path, '{}.log'.format(datetime.datetime.utcnow().strftime('%Y-%m-%d_%H-%M-%S')))
109
+ log_filepath = os.path.join(log_path, '{}.log'.format(datetime.datetime.now(datetime.timezone.utc).strftime('%Y-%m-%d_%H-%M-%S')))
110
110
  return log_filepath
111
111
 
112
112
  def doRollover(self):
@@ -214,7 +214,7 @@ class Reporter:
214
214
  os.mkdir(reports_dir)
215
215
  log_filepath = os.path.join(reports_dir,
216
216
  "log_{}_{}.json".format(self._resource,
217
- datetime.datetime.utcnow().strftime("%Y%m%d_%H%M%S")))
217
+ datetime.datetime.now(datetime.timezone.utc).strftime("%Y%m%d_%H%M%S")))
218
218
  errors_json = dict()
219
219
  if self.cache_mode == 'diskcache':
220
220
  err_cache = self._reports['errors']
@@ -27,7 +27,7 @@ logger.propagate = False
27
27
 
28
28
 
29
29
  def dlp_exit():
30
- print(datetime.datetime.utcnow())
30
+ print(datetime.datetime.now(datetime.timezone.utc))
31
31
  print("Goodbye ;)")
32
32
  sys.exit(0)
33
33
 
@@ -71,7 +71,7 @@ def main():
71
71
  else:
72
72
  command_executor.run(args=args)
73
73
  except exceptions.TokenExpired:
74
- print(datetime.datetime.utcnow())
74
+ print(datetime.datetime.now(datetime.timezone.utc))
75
75
  print("[ERROR] token expired, please login.")
76
76
  continue
77
77
  except SystemExit as e:
@@ -83,11 +83,11 @@ def main():
83
83
  sys.exit(0)
84
84
  # error
85
85
  else:
86
- print(datetime.datetime.utcnow())
86
+ print(datetime.datetime.now(datetime.timezone.utc))
87
87
  print('"{command}" is not a valid command'.format(command=text))
88
88
  continue
89
89
  except Exception as e:
90
- print(datetime.datetime.utcnow())
90
+ print(datetime.datetime.now(datetime.timezone.utc))
91
91
  if hasattr(e, 'message'):
92
92
  print(e.message)
93
93
  else:
@@ -102,11 +102,11 @@ def main():
102
102
  command_executor.run(args=args)
103
103
  sys.exit(0)
104
104
  except exceptions.TokenExpired:
105
- print(datetime.datetime.utcnow())
105
+ print(datetime.datetime.now(datetime.timezone.utc))
106
106
  print("[ERROR] token expired, please login.")
107
107
  sys.exit(1)
108
108
  except Exception as e:
109
- print(datetime.datetime.utcnow())
109
+ print(datetime.datetime.now(datetime.timezone.utc))
110
110
  print(traceback.format_exc())
111
111
  print(e)
112
112
  sys.exit(1)
@@ -123,6 +123,6 @@ if __name__ == "__main__":
123
123
  try:
124
124
  main()
125
125
  except Exception as err:
126
- print(datetime.datetime.utcnow())
126
+ print(datetime.datetime.now(datetime.timezone.utc))
127
127
  print("[ERROR]\t%s" % err)
128
128
  print("Dataloop.ai CLI. Type dlp --help for options")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dtlpy
3
- Version: 1.109.20
3
+ Version: 1.111.11
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
- dtlpy/__init__.py,sha256=n86boFpXWXPLjSXZMmWCageGjBumPjWxRv3srysrplk,20338
2
- dtlpy/__version__.py,sha256=fp3KHLm-IzBS08vIJp3uI5hng_NFpnnsBQfeFKxxwVw,21
1
+ dtlpy/__init__.py,sha256=-5fpi-yAwFdluh8QZ-sWXwNDCD97Q5BCgIs7pUDl04o,20444
2
+ dtlpy/__version__.py,sha256=KBp0kUjFeeHF5b3vE1pKBkiadaOJfs-ga44MCvxCu8U,21
3
3
  dtlpy/exceptions.py,sha256=EQCKs3pwhwZhgMByQN3D3LpWpdxwcKPEEt-bIaDwURM,2871
4
4
  dtlpy/new_instance.py,sha256=tUCzBGaSpm9GTjRuwOkFgo3A8vopUQ-baltdJss3XlI,9964
5
5
  dtlpy/assets/__init__.py,sha256=D_hAa6NM8Zoy32sF_9b7m0b7I-BQEyBFg8-9Tg2WOeo,976
@@ -37,15 +37,15 @@ dtlpy/caches/dl_cache.py,sha256=aaqB0THK6eNmQ54SC6egb6z8sJE3ciKQ5cIHrQHe4r8,5695
37
37
  dtlpy/caches/filesystem_cache.py,sha256=OrBqyEucSVp7g33c6R1BR3ICbkgQnwYWEDhQ7OxHy2Y,2737
38
38
  dtlpy/caches/redis_cache.py,sha256=bgJgxgAXFR_TxPDvlLS4TKumFds-ihNf668JbPYUfpc,2331
39
39
  dtlpy/dlp/__init__.py,sha256=QG_BxSqeic0foFBmzIkpZEF4EvxOZamknj2f5Cb6T6Q,868
40
- dtlpy/dlp/cli_utilities.py,sha256=Kzr-AKbRlXLdGKY2RTUNm0U_vKHxyMOB17TQegeDMdM,16037
40
+ dtlpy/dlp/cli_utilities.py,sha256=gZA9XIN5GG-xWJ6S1i6T17CDDCypDoev6CY-WHlogYg,16055
41
41
  dtlpy/dlp/command_executor.py,sha256=JKtRKTwrKfkXHa1VuFhPw15FuwexBPq_9ANAu2pSyXs,32113
42
42
  dtlpy/dlp/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
43
43
  dtlpy/dlp/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
44
- dtlpy/dlp/dlp.py,sha256=YjNBjeCDTXJ7tj8qdiGZ8lFb8DtPZl-FvViyjxt9xF8,4278
44
+ dtlpy/dlp/dlp.py,sha256=Zv9yoXwNAx4gkED-JiayN-ZkX2dPn4FB0SDx9qc7muo,4404
45
45
  dtlpy/dlp/parser.py,sha256=p-TFaiAU2c3QkI97TXzL2LDR3Eq0hGDFrTc9J2jWLh4,30551
46
46
  dtlpy/entities/__init__.py,sha256=quty3pkoJ9_8dRyZG2WnPj7Qpr4O05FxXpWsY_txz_M,4982
47
47
  dtlpy/entities/analytic.py,sha256=5MpYDKPVsZ1MIy20Ju515RWed6P667j4TLxsan2gyNM,11925
48
- dtlpy/entities/annotation.py,sha256=DYpVb4bNxwXnxXjh3zUa58qo2nSMaQnejiDwUZntn0E,66610
48
+ dtlpy/entities/annotation.py,sha256=0bF-N3ApbUaTWa_cIPNHMGxaWGG0q3lQos6fMDX5mCc,66661
49
49
  dtlpy/entities/annotation_collection.py,sha256=CEYSBHhhDkC0VJdHsBSrA6TgdKGMcKeI3tFM40UJwS8,29838
50
50
  dtlpy/entities/app.py,sha256=vQ7hSMnuRIpoZqZc2NwjGTtWiPTCgi47x_oOgGUB-Pk,6996
51
51
  dtlpy/entities/app_module.py,sha256=0UiAbBX1q8iEImi3nY7ySWZZHoRRwu0qUXmyXmgVAc4,3645
@@ -56,7 +56,7 @@ 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=5RMQYjOGLRF8JZd7QFAPyE8utsp4eZzLApI2dEAbaqo,5301
59
- dtlpy/entities/compute.py,sha256=IFMkHWVu8RyUZSZ24SuE-TnOP-3XzPT5eOEbYFJg76E,14207
59
+ dtlpy/entities/compute.py,sha256=U974uaXGCfr-TSHqPmyLeJWbwbO-3K082hS1Scapv8M,14497
60
60
  dtlpy/entities/dataset.py,sha256=GEvBOly1M8uU--apQZ-G-78DJZzFk178LmMhEANyi0A,53838
61
61
  dtlpy/entities/directory_tree.py,sha256=Rni6pLSWytR6yeUPgEdCCRfTg_cqLOdUc9uCqz9KT-Q,1186
62
62
  dtlpy/entities/dpk.py,sha256=XrK8X8p4Ag6LMjDrDpMstY-h_yTll_sMmKTZT6bLbWE,17923
@@ -64,7 +64,7 @@ dtlpy/entities/driver.py,sha256=O_QdK1EaLjQyQkmvKsmkNgmvmMb1mPjKnJGxK43KrOA,7197
64
64
  dtlpy/entities/execution.py,sha256=uQe535w9OcAoDiNWf96KcpFzUDEUU-DYsUalv5VziyM,13673
65
65
  dtlpy/entities/feature.py,sha256=9fFjD0W57anOVSAVU55ypxN_WTCsWTG03Wkc3cAAj78,3732
66
66
  dtlpy/entities/feature_set.py,sha256=niw4MkmrDbD_LWQu1X30uE6U4DCzmFhPTaYeZ6VZDB0,4443
67
- dtlpy/entities/filters.py,sha256=8nz3V5Ui4LemEIfSTp3uAHJAf_ZpwQrMSrfUL6AB7Zk,22719
67
+ dtlpy/entities/filters.py,sha256=Cdx3BzYa8kIfvW37Gmmwiu4eH4ytfWByu8TQOBvtR2o,22644
68
68
  dtlpy/entities/gis_item.py,sha256=Uk-wMBxwcHsImjz4qOjP-EyZAohbRzN43kMpCaVjCXU,3982
69
69
  dtlpy/entities/integration.py,sha256=Kdy1j6-cJLW8qNmnqCmdg36phi843YDrlMqcMyMfvYk,5875
70
70
  dtlpy/entities/item.py,sha256=WCIPHUmubIe0wva-YMm-LPQdn2S3_-Q151x49C9NEw8,34591
@@ -84,7 +84,7 @@ 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=qXDK2IWVKszm7gpqcgCE51SSf4IUTNFirq40qszBYw8,19566
87
+ dtlpy/entities/prompt_item.py,sha256=xROCKogJqEgxodXF-mQAJHbNuyoXA0ul55CKDX5a-2Q,21023
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
@@ -145,15 +145,15 @@ dtlpy/miscellaneous/__init__.py,sha256=twbvfsKdiNHNR-vUuy8nUlY3vuUVaSnm-wO83yQde
145
145
  dtlpy/miscellaneous/dict_differ.py,sha256=POJbKR0YyWPf5gFADFpIaNFj9gt2aVBTNof7GJNxTCw,3489
146
146
  dtlpy/miscellaneous/git_utils.py,sha256=CT_CCDsqDqu_bY3cLcOSU6k3Zr6w40t8GJULLUtAJ_U,7971
147
147
  dtlpy/miscellaneous/json_utils.py,sha256=0P4YTlL6o_L7AUrvAeqkqA46MZZK_hDdTrdnmI59y6g,428
148
- dtlpy/miscellaneous/list_print.py,sha256=leEg3RodgYfH5t_0JG8VuM8NiesR8sJLK_mRSttL5pY,4808
149
- dtlpy/miscellaneous/zipping.py,sha256=GMdPhAeHQXeMS5ClaiKWMJWVYQLBLAaJUWxvdYrL4Ro,5337
148
+ dtlpy/miscellaneous/list_print.py,sha256=fBGTMXFUwDG8DD4W6HyR8BTGtbTckLf4W09quNRJm5M,4828
149
+ dtlpy/miscellaneous/zipping.py,sha256=JplTc8UDFvO8WaD5vKuumVLN0lU_-GtHoE0doWKtmKg,5383
150
150
  dtlpy/ml/__init__.py,sha256=vPkyXpc9kcWWZ_PxyPEOsjKBJdEbowLkZr8FZIb_OBM,799
151
151
  dtlpy/ml/base_feature_extractor_adapter.py,sha256=iiEGYAx0Rdn4K46H_FlKrAv3ebTXHSxNVAmio0BxhaI,1178
152
- dtlpy/ml/base_model_adapter.py,sha256=WKpGO5-kLISwXmPy4Dc7e-nIGn3W-tbqJDnhE49WMKA,50930
152
+ dtlpy/ml/base_model_adapter.py,sha256=7L6nVzTFBfcywouq48baxHNlrFu2hZX2q7IRBYox8J4,51148
153
153
  dtlpy/ml/metrics.py,sha256=BG2E-1Mvjv2e2No9mIJKVmvzqBvLqytKcw3hA7wVUNc,20037
154
154
  dtlpy/ml/predictions_utils.py,sha256=He_84U14oS2Ss7T_-Zj5GDiBZwS-GjMPURUh7u7DjF8,12484
155
155
  dtlpy/ml/summary_writer.py,sha256=dehDi8zmGC1sAGyy_3cpSWGXoGQSiQd7bL_Thoo8yIs,2784
156
- dtlpy/ml/train_utils.py,sha256=R-BHKRfqDoLLhFyLzsRFyJ4E-8iedj9s9oZqy3IO2rg,2404
156
+ dtlpy/ml/train_utils.py,sha256=t607DfyGBRrUQZ9jPmPe4V9Udzfk0hPWuw4OvKZKAeo,2440
157
157
  dtlpy/repositories/__init__.py,sha256=D2YI3ZLlSx0OlgVr8y_E9rsj-IxCDOj0MB6QTlv2NSA,2061
158
158
  dtlpy/repositories/analytics.py,sha256=dQPCYTPAIuyfVI_ppR49W7_GBj0033feIm9Gd7LW1V0,2966
159
159
  dtlpy/repositories/annotations.py,sha256=idTKzanNt-ncB0eIKE5p6WclrVGNjceI2Y7dAzDFtzY,43595
@@ -165,7 +165,7 @@ dtlpy/repositories/codebases.py,sha256=pvcZxdrq0-zWysVbdXjUOhnfcF6hJD8v5VclNZ-zh
165
165
  dtlpy/repositories/collections.py,sha256=z-nkR33rq-MzkEff7DDSBlfsI_lkCDFwQZIlMaIT5rM,13514
166
166
  dtlpy/repositories/commands.py,sha256=MgXhXxbAzBa2QJM9Z5EsQZRaZ4fGBM17ALoldxi8xYA,5848
167
167
  dtlpy/repositories/compositions.py,sha256=H417BvlQAiWr5NH2eANFke6CfEO5o7DSvapYpf7v5Hk,2150
168
- dtlpy/repositories/computes.py,sha256=vHMvKVX8U-33nB5TR_Nfs9euGr9MbkiwTHuq4yZojM8,14134
168
+ dtlpy/repositories/computes.py,sha256=U_mBeMh-Rv1xaXGSd_3fyOX7n_0SmOTcjN-M_Ca1Go0,14360
169
169
  dtlpy/repositories/datasets.py,sha256=p0HBbTGrxAQ8h9tJsp1jRasPbwnMAtXQ4_sIef9_590,59358
170
170
  dtlpy/repositories/downloader.py,sha256=XJC9FhlXgHrA8Ae9bftrbs4YKFCcZoEYJAh6Bt6zGhU,45167
171
171
  dtlpy/repositories/dpks.py,sha256=dxZpGloZGH6MJG9ZFff5l3GlXw6i-52n9kxL-QiHosQ,18516
@@ -176,7 +176,7 @@ dtlpy/repositories/features.py,sha256=A_RqTJxzjTh-Wbm0uXaoTNyHSfCLbeiH38iB11p2if
176
176
  dtlpy/repositories/integrations.py,sha256=gSgaVp4MkcdrJMnXVr_fl4xrzhfJba8BFbBJTuJPwXc,18159
177
177
  dtlpy/repositories/items.py,sha256=S1OWZ6s8AbVXMiLtCfBBiYPMG8OLqdUhKMHuZWE3bnU,40029
178
178
  dtlpy/repositories/messages.py,sha256=QU0Psckg6CA_Tlw9AVxqa-Ay1fRM4n269sSIJkH9o7E,3066
179
- dtlpy/repositories/models.py,sha256=IekNMcnuKVaAVTJf2AJv6YvX5qCd9kkSl4ETPMWP4Zc,38213
179
+ dtlpy/repositories/models.py,sha256=uYVw319dMgVoXReb9VKl0b3v0_kgetROQaf56cvgwqs,38297
180
180
  dtlpy/repositories/nodes.py,sha256=xXJm_YA0vDUn0dVvaGeq6ORM0vI3YXvfjuylvGRtkxo,3061
181
181
  dtlpy/repositories/ontologies.py,sha256=unnMhD2isR9DVE5S8Fg6fSDf1ZZ5Xemxxufx4LEUT3w,19577
182
182
  dtlpy/repositories/organizations.py,sha256=6ijUDFbsogfRul1g_vUB5AZOb41MRmV5NhNU7WLHt3A,22825
@@ -198,16 +198,16 @@ dtlpy/repositories/uploader.py,sha256=Keu_1fgJPiBpUgBGrAfRErejUK_UvqLTNdwK-BmTPY
198
198
  dtlpy/repositories/webhooks.py,sha256=IIpxOJ-7KeQp1TY9aJZz-FuycSjAoYx0TDk8z86KAK8,9033
199
199
  dtlpy/services/__init__.py,sha256=VfVJy2otIrDra6i7Sepjyez2ujiE6171ChQZp-YgxsM,904
200
200
  dtlpy/services/aihttp_retry.py,sha256=tgntZsAY0dW9v08rkjX1T5BLNDdDd8svtgn7nH8DSGU,5022
201
- dtlpy/services/api_client.py,sha256=HPG326fG6h0m0_w0JIRhpN-GIXxyeZU5BU3MkN-4kw4,71416
201
+ dtlpy/services/api_client.py,sha256=G0NL5RvHnjB4ET2z1FmxOm2up4xgPkQgU13NTPbb1VI,71464
202
202
  dtlpy/services/api_reference.py,sha256=cW-B3eoi9Xs3AwI87_Kr6GV_E6HPoC73aETFaGz3A-0,1515
203
203
  dtlpy/services/async_utils.py,sha256=kaYHTPw0Lg8PeJJq8whPyzrBYkzD7offs5hsKRZXJm8,3960
204
204
  dtlpy/services/calls_counter.py,sha256=gr0io5rIsO5-7Cgc8neA1vK8kUtYhgFPmDQ2jXtiZZs,1036
205
205
  dtlpy/services/check_sdk.py,sha256=H4KL5xrmNGfR9fUSxTVUeBm_3YFGjkwUZpFnqhFBJyI,2617
206
206
  dtlpy/services/cookie.py,sha256=sSZR1QV4ienCcZ8lEK_Y4nZYBgAxO3kHrcBXFKGcmwQ,3694
207
- dtlpy/services/create_logger.py,sha256=WFQjuvCuwrZoftFaU9jQkmEcOrL1XD-NqsuBqb5_SN4,6332
207
+ dtlpy/services/create_logger.py,sha256=2dC39CCmc17H4LYRpY0bRIT4S50UTGNOBPYIqJnrsIU,6350
208
208
  dtlpy/services/events.py,sha256=mpcu8RusLPrBcJEbWR61uFb4FiU_dQv3xoa7uM-rTcY,3686
209
209
  dtlpy/services/logins.py,sha256=YMMi_C_A97ZNtIlREE30hpBRhULAZJtORiVL6OL0oPQ,8766
210
- dtlpy/services/reporter.py,sha256=4zi9-bshKAPHG2XMOXS39cFZ0mhqNc3Qa9uaMN7CSZ8,9122
210
+ dtlpy/services/reporter.py,sha256=i-hlvX6_olRTC4PbwyOq2kVjWghuUpyNUETVI-KSVpw,9140
211
211
  dtlpy/services/service_defaults.py,sha256=a7KoqkVmn2TXmM9gN9JRaVVtcG2b8JGIieVnaZeEaao,3860
212
212
  dtlpy/utilities/__init__.py,sha256=ncQD1O5lZ7L9n9rNRBivyqNVFDZyQcmqn-X-wyQhhIs,898
213
213
  dtlpy/utilities/base_package_runner.py,sha256=tux_XCiCoOhMPtFaQludzhj0ny6OTKhyoN1aXjPal54,8522
@@ -226,9 +226,9 @@ dtlpy/utilities/reports/report.py,sha256=3nEsNnIWmdPEsd21nN8vMMgaZVcPKn9iawKTTeO
226
226
  dtlpy/utilities/videos/__init__.py,sha256=SV3w51vfPuGBxaMeNemx6qEMHw_C4lLpWNGXMvdsKSY,734
227
227
  dtlpy/utilities/videos/video_player.py,sha256=LCxg0EZ_DeuwcT7U_r7MRC6Q19s0xdFb7x5Gk39PRms,24072
228
228
  dtlpy/utilities/videos/videos.py,sha256=Dj916B4TQRIhI7HZVevl3foFrCsPp0eeWwvGbgX3-_A,21875
229
- dtlpy-1.109.20.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
230
- dtlpy-1.109.20.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
231
- dtlpy-1.109.20.data/scripts/dlp.py,sha256=tEokRaDINISXnq8yNx_CBw1qM5uwjYiZoJOYGqWB3RU,4267
229
+ dtlpy-1.111.11.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
230
+ dtlpy-1.111.11.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
231
+ dtlpy-1.111.11.data/scripts/dlp.py,sha256=ZpfJvYE1_OTSorEYBphqTOutnHSb5TqOXh0y_mUCTJs,4393
232
232
  tests/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
233
233
  tests/assets/models_flow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
234
  tests/assets/models_flow/failedmain.py,sha256=n8F4eu_u7JPrJ1zedbJPvv9e3lHb3ihoErqrBIcseEc,1847
@@ -236,9 +236,9 @@ tests/assets/models_flow/main.py,sha256=vnDKyVZaae2RFpvwS22Hzi6Dt2LJerH4yQrmKtaT
236
236
  tests/assets/models_flow/main_model.py,sha256=Hl_tv7Q6KaRL3yLkpUoLMRqu5-ab1QsUYPL6RPEoamw,2042
237
237
  tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
238
  tests/features/environment.py,sha256=JcM956BxLBRvDqy6Kr1Nxd1FY_gxbE6XztZBVBMCGYM,18897
239
- dtlpy-1.109.20.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
240
- dtlpy-1.109.20.dist-info/METADATA,sha256=uFziss3AossrsPM6iQoTFlEtrYZkn41iZ0REb-H440Y,5470
241
- dtlpy-1.109.20.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
242
- dtlpy-1.109.20.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
243
- dtlpy-1.109.20.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
244
- dtlpy-1.109.20.dist-info/RECORD,,
239
+ dtlpy-1.111.11.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
240
+ dtlpy-1.111.11.dist-info/METADATA,sha256=QzXWZvBKXwMVg-SiV3_zuuoZz_Dvu2qWgddvxF4EvZ8,5470
241
+ dtlpy-1.111.11.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
242
+ dtlpy-1.111.11.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
243
+ dtlpy-1.111.11.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
244
+ dtlpy-1.111.11.dist-info/RECORD,,
File without changes