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 +2 -0
- dtlpy/__version__.py +1 -1
- dtlpy/dlp/cli_utilities.py +1 -1
- dtlpy/dlp/dlp.py +7 -7
- dtlpy/entities/annotation.py +2 -0
- dtlpy/entities/compute.py +14 -9
- dtlpy/entities/filters.py +0 -1
- dtlpy/entities/prompt_item.py +43 -1
- dtlpy/miscellaneous/list_print.py +1 -1
- dtlpy/miscellaneous/zipping.py +11 -12
- dtlpy/ml/base_model_adapter.py +14 -10
- dtlpy/ml/train_utils.py +2 -2
- dtlpy/repositories/computes.py +9 -4
- dtlpy/repositories/models.py +1 -1
- dtlpy/services/api_client.py +2 -2
- dtlpy/services/create_logger.py +1 -1
- dtlpy/services/reporter.py +1 -1
- {dtlpy-1.109.20.data → dtlpy-1.111.11.data}/scripts/dlp.py +7 -7
- {dtlpy-1.109.20.dist-info → dtlpy-1.111.11.dist-info}/METADATA +1 -1
- {dtlpy-1.109.20.dist-info → dtlpy-1.111.11.dist-info}/RECORD +26 -26
- {dtlpy-1.109.20.data → dtlpy-1.111.11.data}/scripts/dlp +0 -0
- {dtlpy-1.109.20.data → dtlpy-1.111.11.data}/scripts/dlp.bat +0 -0
- {dtlpy-1.109.20.dist-info → dtlpy-1.111.11.dist-info}/LICENSE +0 -0
- {dtlpy-1.109.20.dist-info → dtlpy-1.111.11.dist-info}/WHEEL +0 -0
- {dtlpy-1.109.20.dist-info → dtlpy-1.111.11.dist-info}/entry_points.txt +0 -0
- {dtlpy-1.109.20.dist-info → dtlpy-1.111.11.dist-info}/top_level.txt +0 -0
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.
|
|
1
|
+
version = '1.111.11'
|
dtlpy/dlp/cli_utilities.py
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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")
|
dtlpy/entities/annotation.py
CHANGED
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):
|
dtlpy/entities/prompt_item.py
CHANGED
|
@@ -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.
|
|
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)
|
dtlpy/miscellaneous/zipping.py
CHANGED
|
@@ -117,15 +117,14 @@ class Zipping:
|
|
|
117
117
|
|
|
118
118
|
@staticmethod
|
|
119
119
|
def unzip_directory(zip_filename, to_directory=None):
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
zipinfo
|
|
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)
|
dtlpy/ml/base_model_adapter.py
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
527
|
-
|
|
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.
|
|
32
|
-
today = datetime.datetime.
|
|
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)
|
dtlpy/repositories/computes.py
CHANGED
|
@@ -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
|
|
dtlpy/repositories/models.py
CHANGED
|
@@ -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)
|
dtlpy/services/api_client.py
CHANGED
|
@@ -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.
|
|
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):
|
dtlpy/services/create_logger.py
CHANGED
|
@@ -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.
|
|
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):
|
dtlpy/services/reporter.py
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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,5 +1,5 @@
|
|
|
1
|
-
dtlpy/__init__.py,sha256
|
|
2
|
-
dtlpy/__version__.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
149
|
-
dtlpy/miscellaneous/zipping.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
230
|
-
dtlpy-1.
|
|
231
|
-
dtlpy-1.
|
|
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.
|
|
240
|
-
dtlpy-1.
|
|
241
|
-
dtlpy-1.
|
|
242
|
-
dtlpy-1.
|
|
243
|
-
dtlpy-1.
|
|
244
|
-
dtlpy-1.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|