dtlpy 1.86.13__py3-none-any.whl → 1.87.18__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 -2
- dtlpy/__version__.py +1 -1
- dtlpy/entities/annotation.py +10 -12
- dtlpy/entities/annotation_collection.py +0 -2
- dtlpy/entities/command.py +1 -1
- dtlpy/entities/dataset.py +4 -8
- dtlpy/entities/filters.py +12 -2
- dtlpy/entities/model.py +11 -2
- dtlpy/entities/node.py +6 -2
- dtlpy/entities/ontology.py +2 -2
- dtlpy/entities/package_function.py +3 -0
- dtlpy/entities/pipeline.py +7 -1
- dtlpy/entities/recipe.py +1 -1
- dtlpy/entities/service.py +22 -11
- dtlpy/entities/task.py +18 -1
- dtlpy/entities/trigger.py +7 -1
- dtlpy/ml/base_model_adapter.py +8 -10
- dtlpy/ml/train_utils.py +0 -1
- dtlpy/new_instance.py +5 -3
- dtlpy/repositories/artifacts.py +9 -15
- dtlpy/repositories/codebases.py +2 -14
- dtlpy/repositories/commands.py +6 -7
- dtlpy/repositories/datasets.py +73 -43
- dtlpy/repositories/downloader.py +1 -1
- dtlpy/repositories/models.py +7 -21
- dtlpy/repositories/packages.py +5 -4
- dtlpy/repositories/services.py +32 -5
- dtlpy/repositories/tasks.py +1 -1
- dtlpy/repositories/uploader.py +1 -1
- dtlpy/services/api_client.py +1 -1
- {dtlpy-1.86.13.dist-info → dtlpy-1.87.18.dist-info}/METADATA +1 -1
- {dtlpy-1.86.13.dist-info → dtlpy-1.87.18.dist-info}/RECORD +39 -39
- {dtlpy-1.86.13.data → dtlpy-1.87.18.data}/scripts/dlp +0 -0
- {dtlpy-1.86.13.data → dtlpy-1.87.18.data}/scripts/dlp.bat +0 -0
- {dtlpy-1.86.13.data → dtlpy-1.87.18.data}/scripts/dlp.py +0 -0
- {dtlpy-1.86.13.dist-info → dtlpy-1.87.18.dist-info}/LICENSE +0 -0
- {dtlpy-1.86.13.dist-info → dtlpy-1.87.18.dist-info}/WHEEL +0 -0
- {dtlpy-1.86.13.dist-info → dtlpy-1.87.18.dist-info}/entry_points.txt +0 -0
- {dtlpy-1.86.13.dist-info → dtlpy-1.87.18.dist-info}/top_level.txt +0 -0
dtlpy/repositories/commands.py
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import numpy as np
|
|
2
|
-
import warnings
|
|
3
2
|
import logging
|
|
4
3
|
import time
|
|
5
4
|
import tqdm
|
|
@@ -10,7 +9,7 @@ from ..services.api_client import ApiClient
|
|
|
10
9
|
|
|
11
10
|
logger = logging.getLogger(name='dtlpy')
|
|
12
11
|
|
|
13
|
-
MAX_SLEEP_TIME =
|
|
12
|
+
MAX_SLEEP_TIME = 30
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
class Commands:
|
|
@@ -71,15 +70,15 @@ class Commands:
|
|
|
71
70
|
return entities.Command.from_json(client_api=self._client_api,
|
|
72
71
|
_json=response.json())
|
|
73
72
|
|
|
74
|
-
def wait(self, command_id, timeout=0, step=None, url=None, backoff_factor=
|
|
73
|
+
def wait(self, command_id, timeout=0, step=None, url=None, backoff_factor=1):
|
|
75
74
|
"""
|
|
76
75
|
Wait for command to finish
|
|
77
76
|
|
|
78
77
|
backoff_factor: A backoff factor to apply between attempts after the second try
|
|
79
78
|
{backoff factor} * (2 ** ({number of total retries} - 1))
|
|
80
|
-
seconds. If the backoff_factor is
|
|
81
|
-
for [
|
|
82
|
-
than
|
|
79
|
+
seconds. If the backoff_factor is 1, then :func:`.sleep` will sleep
|
|
80
|
+
for [0s, 2s, 4s, ...] between retries. It will never be longer
|
|
81
|
+
than 30 sec
|
|
83
82
|
|
|
84
83
|
:param str command_id: Command id to wait to
|
|
85
84
|
:param int timeout: int, seconds to wait until TimeoutError is raised. if 0 - wait until done
|
|
@@ -103,7 +102,7 @@ class Commands:
|
|
|
103
102
|
if not command.in_progress():
|
|
104
103
|
break
|
|
105
104
|
elapsed = time.time() - start
|
|
106
|
-
sleep_time = np.min([timeout - elapsed, backoff_factor * (2 **
|
|
105
|
+
sleep_time = np.min([timeout - elapsed, backoff_factor * (2 ** num_tries), MAX_SLEEP_TIME])
|
|
107
106
|
num_tries += 1
|
|
108
107
|
logger.debug("Command {!r} is running for {:.2f}[s] and now Going to sleep {:.2f}[s]".format(command.id,
|
|
109
108
|
elapsed,
|
dtlpy/repositories/datasets.py
CHANGED
|
@@ -96,6 +96,21 @@ class Datasets:
|
|
|
96
96
|
filters.add(field='dir', values=folder_path + '*')
|
|
97
97
|
return filters
|
|
98
98
|
|
|
99
|
+
def _get_binaries_dataset(self):
|
|
100
|
+
filters = entities.Filters(resource=entities.FiltersResource.DATASET)
|
|
101
|
+
filters.add(field='name', values='Binaries')
|
|
102
|
+
filters.system_space = True
|
|
103
|
+
datasets = self.list(filters=filters)
|
|
104
|
+
if len(datasets) == 0:
|
|
105
|
+
# empty list
|
|
106
|
+
raise exceptions.PlatformException('404', 'Dataset not found. Name: "Binaries"')
|
|
107
|
+
# dataset = None
|
|
108
|
+
elif len(datasets) > 1:
|
|
109
|
+
raise exceptions.PlatformException('400', 'More than one dataset with same name.')
|
|
110
|
+
else:
|
|
111
|
+
dataset = datasets[0]
|
|
112
|
+
return dataset
|
|
113
|
+
|
|
99
114
|
@property
|
|
100
115
|
def platform_url(self):
|
|
101
116
|
return self._client_api._get_resource_url("projects/{}/datasets".format(self.project.id))
|
|
@@ -165,58 +180,78 @@ class Datasets:
|
|
|
165
180
|
self._client_api.state_io.put('dataset', dataset.to_json())
|
|
166
181
|
logger.info('Checked out to dataset {}'.format(dataset.name))
|
|
167
182
|
|
|
168
|
-
@_api_reference.add(path='/datasets', method='
|
|
169
|
-
def list(self, name=None, creator=None) -> miscellaneous.List[entities.Dataset]:
|
|
183
|
+
@_api_reference.add(path='/datasets/query', method='post')
|
|
184
|
+
def list(self, name=None, creator=None, filters: entities.Filters = None) -> miscellaneous.List[entities.Dataset]:
|
|
170
185
|
"""
|
|
171
186
|
List all datasets.
|
|
172
187
|
|
|
173
188
|
**Prerequisites**: You must be an *owner* or *developer* to use this method.
|
|
174
189
|
|
|
175
190
|
:param str name: list by name
|
|
176
|
-
:param str creator: list by
|
|
191
|
+
:param str creator: list by
|
|
192
|
+
:param dtlpy.entities.filters.Filters filters: Filters entity containing filters parameters
|
|
177
193
|
:return: List of datasets
|
|
178
194
|
:rtype: list
|
|
179
195
|
|
|
180
196
|
**Example**:
|
|
181
197
|
|
|
182
198
|
.. code-block:: python
|
|
183
|
-
|
|
184
|
-
|
|
199
|
+
filters = dl.Filters(resource='datasets')
|
|
200
|
+
filters.add(field='readonly', values=False)
|
|
201
|
+
datasets = project.datasets.list(filters=filters)
|
|
185
202
|
"""
|
|
186
|
-
|
|
203
|
+
if filters is None:
|
|
204
|
+
filters = entities.Filters(resource=entities.FiltersResource.DATASET)
|
|
205
|
+
# assert type filters
|
|
206
|
+
elif not isinstance(filters, entities.Filters):
|
|
207
|
+
raise exceptions.PlatformException(error='400',
|
|
208
|
+
message='Unknown filters type: {!r}'.format(type(filters)))
|
|
209
|
+
if filters.resource != entities.FiltersResource.DATASET:
|
|
210
|
+
raise exceptions.PlatformException(
|
|
211
|
+
error='400',
|
|
212
|
+
message='Filters resource must to be FiltersResource.DATASET. Got: {!r}'.format(filters.resource))
|
|
187
213
|
|
|
188
|
-
|
|
189
|
-
'name': name,
|
|
190
|
-
'creator': creator
|
|
191
|
-
}
|
|
214
|
+
url = '/datasets/query'
|
|
192
215
|
|
|
216
|
+
if name is not None:
|
|
217
|
+
filters.add(field='name', values=name)
|
|
218
|
+
if creator is not None:
|
|
219
|
+
filters.add(field='creator', values=creator)
|
|
193
220
|
if self._project is not None:
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
jobs
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
221
|
+
filters.context = {"projects": [self._project.id]}
|
|
222
|
+
filters.page_size = 1000
|
|
223
|
+
filters.page = 0
|
|
224
|
+
datasets = list()
|
|
225
|
+
while True:
|
|
226
|
+
success, response = self._client_api.gen_request(req_type='POST',
|
|
227
|
+
json_req=filters.prepare(),
|
|
228
|
+
path=url,
|
|
229
|
+
headers={'user_query': filters._user_query})
|
|
230
|
+
if success:
|
|
231
|
+
pool = self._client_api.thread_pools('entity.create')
|
|
232
|
+
datasets_json = response.json()['items']
|
|
233
|
+
jobs = [None for _ in range(len(datasets_json))]
|
|
234
|
+
# return triggers list
|
|
235
|
+
for i_dataset, dataset in enumerate(datasets_json):
|
|
236
|
+
jobs[i_dataset] = pool.submit(entities.Dataset._protected_from_json,
|
|
237
|
+
**{'client_api': self._client_api,
|
|
238
|
+
'_json': dataset,
|
|
239
|
+
'datasets': self,
|
|
240
|
+
'project': self.project})
|
|
241
|
+
|
|
242
|
+
# get all results
|
|
243
|
+
results = [j.result() for j in jobs]
|
|
244
|
+
# log errors
|
|
245
|
+
_ = [logger.warning(r[1]) for r in results if r[0] is False]
|
|
246
|
+
# return good jobs
|
|
247
|
+
datasets.extend([r[1] for r in results if r[0] is True])
|
|
248
|
+
if response.json()['hasNextPage'] is True:
|
|
249
|
+
filters.page += 1
|
|
250
|
+
else:
|
|
251
|
+
break
|
|
252
|
+
else:
|
|
253
|
+
raise exceptions.PlatformException(response)
|
|
254
|
+
datasets = miscellaneous.List(datasets)
|
|
220
255
|
return datasets
|
|
221
256
|
|
|
222
257
|
@_api_reference.add(path='/datasets/{id}', method='get')
|
|
@@ -953,10 +988,5 @@ class Datasets:
|
|
|
953
988
|
|
|
954
989
|
project.datasets.set_readonly(dataset='dataset_entity', state=True)
|
|
955
990
|
"""
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
self.update(dataset=dataset,
|
|
959
|
-
patch=patch)
|
|
960
|
-
dataset._readonly = state
|
|
961
|
-
else:
|
|
962
|
-
logger.warning('Dataset is already "readonly={}". Nothing was done'.format(state))
|
|
991
|
+
import warnings
|
|
992
|
+
warnings.warn("`readonly` flag on dataset is deprecated, doing nothing.", DeprecationWarning)
|
dtlpy/repositories/downloader.py
CHANGED
dtlpy/repositories/models.py
CHANGED
|
@@ -267,7 +267,7 @@ class Models:
|
|
|
267
267
|
def create(
|
|
268
268
|
self,
|
|
269
269
|
model_name: str,
|
|
270
|
-
dataset_id: str,
|
|
270
|
+
dataset_id: str = None,
|
|
271
271
|
labels: list = None,
|
|
272
272
|
ontology_id: str = None,
|
|
273
273
|
description: str = None,
|
|
@@ -329,22 +329,22 @@ class Models:
|
|
|
329
329
|
if output_type is None:
|
|
330
330
|
output_type = entities.AnnotationType.CLASSIFICATION
|
|
331
331
|
|
|
332
|
+
if package is None and self._package is None:
|
|
333
|
+
raise exceptions.PlatformException('Must provide a Package or create from package.models')
|
|
334
|
+
elif package is None:
|
|
335
|
+
package = self._package
|
|
336
|
+
|
|
332
337
|
# TODO need to remove the entire project id user interface - need to take it from dataset id (in BE)
|
|
333
338
|
if project_id is None:
|
|
334
339
|
if self._project is None:
|
|
335
340
|
raise exceptions.PlatformException('Please provide project_id')
|
|
336
341
|
project_id = self._project.id
|
|
337
342
|
else:
|
|
338
|
-
if project_id != self._project_id:
|
|
343
|
+
if project_id != self._project_id and not package.is_global:
|
|
339
344
|
logger.warning(
|
|
340
345
|
"Note! you are specified project_id {!r} which is different from repository context: {!r}".format(
|
|
341
346
|
project_id, self._project_id))
|
|
342
347
|
|
|
343
|
-
if package is None and self._package is None:
|
|
344
|
-
raise exceptions.PlatformException('Must provide a Package or create from package.models')
|
|
345
|
-
elif package is None:
|
|
346
|
-
package = self._package
|
|
347
|
-
|
|
348
348
|
if model_artifacts is None:
|
|
349
349
|
model_artifacts = []
|
|
350
350
|
|
|
@@ -396,15 +396,6 @@ class Models:
|
|
|
396
396
|
project=self._project,
|
|
397
397
|
package=package)
|
|
398
398
|
|
|
399
|
-
if dataset_id is None:
|
|
400
|
-
logger.warning(
|
|
401
|
-
"Model {!r} was created without a dataset. This may cause unexpected errors.".format(model.id))
|
|
402
|
-
else:
|
|
403
|
-
if model.dataset.readonly is False:
|
|
404
|
-
logger.warning(
|
|
405
|
-
"Model is using an unlocked dataset {!r}. Make it readonly for training reproducibility".format(
|
|
406
|
-
model.dataset.name))
|
|
407
|
-
|
|
408
399
|
return model
|
|
409
400
|
|
|
410
401
|
def clone(self,
|
|
@@ -488,11 +479,6 @@ class Models:
|
|
|
488
479
|
project=self._project,
|
|
489
480
|
package=from_model._package)
|
|
490
481
|
|
|
491
|
-
if new_model._dataset is not None and new_model._dataset.readonly is False:
|
|
492
|
-
logger.warning(
|
|
493
|
-
"Model is using an unlocked dataset {!r}. Make it readonly for training reproducibility".format(
|
|
494
|
-
new_model.dataset.name))
|
|
495
|
-
|
|
496
482
|
return new_model
|
|
497
483
|
|
|
498
484
|
@property
|
dtlpy/repositories/packages.py
CHANGED
|
@@ -513,17 +513,18 @@ class Packages:
|
|
|
513
513
|
|
|
514
514
|
# get package json
|
|
515
515
|
package_from_json = dict()
|
|
516
|
-
|
|
516
|
+
path_files = os.listdir(src_path) if src_path is not None else []
|
|
517
|
+
if assets.paths.PACKAGE_FILENAME in path_files:
|
|
517
518
|
with open(os.path.join(src_path, assets.paths.PACKAGE_FILENAME), 'r') as f:
|
|
518
519
|
package_from_json = json.load(f)
|
|
519
520
|
|
|
520
521
|
if requirements is not None and not isinstance(requirements, list):
|
|
521
522
|
requirements = [requirements]
|
|
522
523
|
|
|
523
|
-
if requirements and assets.paths.REQUIREMENTS_FILENAME in
|
|
524
|
+
if requirements and assets.paths.REQUIREMENTS_FILENAME in path_files:
|
|
524
525
|
logger.warning('Have both requirements param and requirements file will overwrite the requirements file')
|
|
525
526
|
|
|
526
|
-
if not requirements and assets.paths.REQUIREMENTS_FILENAME in
|
|
527
|
+
if not requirements and assets.paths.REQUIREMENTS_FILENAME in path_files:
|
|
527
528
|
req_path = os.path.join(src_path, assets.paths.REQUIREMENTS_FILENAME)
|
|
528
529
|
req_from_file = self.build_requirements(filepath=req_path)
|
|
529
530
|
requirements = req_from_file
|
|
@@ -709,7 +710,7 @@ class Packages:
|
|
|
709
710
|
client_api=self._client_api,
|
|
710
711
|
project=project_to_deploy)
|
|
711
712
|
|
|
712
|
-
@_api_reference.add(path='/packages/{
|
|
713
|
+
@_api_reference.add(path='/packages/{id}', method='delete')
|
|
713
714
|
def delete(self, package: entities.Package = None, package_name=None, package_id=None):
|
|
714
715
|
"""
|
|
715
716
|
Delete a Package object.
|
dtlpy/repositories/services.py
CHANGED
|
@@ -26,10 +26,17 @@ class Services:
|
|
|
26
26
|
client_api: ApiClient,
|
|
27
27
|
project: entities.Project = None,
|
|
28
28
|
package: entities.Package = None,
|
|
29
|
-
project_id=None
|
|
29
|
+
project_id=None,
|
|
30
|
+
model_id=None,
|
|
31
|
+
model: entities.Model = None):
|
|
30
32
|
self._client_api = client_api
|
|
31
33
|
self._package = package
|
|
32
34
|
self._project = project
|
|
35
|
+
self._model = model
|
|
36
|
+
if model_id is None:
|
|
37
|
+
if model is not None:
|
|
38
|
+
model_id = model.id
|
|
39
|
+
self._model_id = model_id
|
|
33
40
|
if project_id is None:
|
|
34
41
|
if project is not None:
|
|
35
42
|
project_id = project.id
|
|
@@ -77,6 +84,26 @@ class Services:
|
|
|
77
84
|
if not isinstance(project, entities.Project):
|
|
78
85
|
raise ValueError('Must input a valid Project entity')
|
|
79
86
|
self._project = project
|
|
87
|
+
self._project_id = project.id
|
|
88
|
+
|
|
89
|
+
@property
|
|
90
|
+
def model(self) -> entities.Model:
|
|
91
|
+
if self._model is None:
|
|
92
|
+
if self._model_id is not None:
|
|
93
|
+
self._model = self.project.models.get(model_id=self._model_id)
|
|
94
|
+
else:
|
|
95
|
+
raise exceptions.PlatformException(
|
|
96
|
+
error='2001',
|
|
97
|
+
message='Cannot perform action WITHOUT model entity in services repository. Please set a model')
|
|
98
|
+
assert isinstance(self._model, entities.Model)
|
|
99
|
+
return self._model
|
|
100
|
+
|
|
101
|
+
@model.setter
|
|
102
|
+
def model(self, model: entities.Model):
|
|
103
|
+
if not isinstance(model, entities.Model):
|
|
104
|
+
raise ValueError('Must input a valid model entity')
|
|
105
|
+
self._model = model
|
|
106
|
+
self._model_id = model.id
|
|
80
107
|
|
|
81
108
|
@property
|
|
82
109
|
def platform_url(self):
|
|
@@ -324,10 +351,10 @@ class Services:
|
|
|
324
351
|
raise exceptions.PlatformException(
|
|
325
352
|
error='400',
|
|
326
353
|
message='Filters resource must to be FiltersResource.SERVICE. Got: {!r}'.format(filters.resource))
|
|
327
|
-
if self.
|
|
328
|
-
filters.add(field='projectId', values=self._project.id)
|
|
329
|
-
elif self._project_id is not None:
|
|
354
|
+
if self._project_id is not None:
|
|
330
355
|
filters.add(field='projectId', values=self._project_id)
|
|
356
|
+
if self._model_id is not None:
|
|
357
|
+
filters.add(field='metadata.ml.modelId', values=self._model_id)
|
|
331
358
|
if self._package is not None:
|
|
332
359
|
filters.add(field='packageId', values=self._package.id)
|
|
333
360
|
|
|
@@ -1472,7 +1499,7 @@ class Services:
|
|
|
1472
1499
|
path=url,
|
|
1473
1500
|
json_req=payload)
|
|
1474
1501
|
|
|
1475
|
-
def __polling_wait(self, organization, pod_type, backoff_factor=
|
|
1502
|
+
def __polling_wait(self, organization, pod_type, backoff_factor=1):
|
|
1476
1503
|
fs_url_path = '/services/fs-cache?mode={}'.format('get')
|
|
1477
1504
|
i = 1
|
|
1478
1505
|
while True:
|
dtlpy/repositories/tasks.py
CHANGED
|
@@ -881,7 +881,7 @@ class Tasks:
|
|
|
881
881
|
client_api=self._client_api)
|
|
882
882
|
if not wait:
|
|
883
883
|
return command
|
|
884
|
-
backoff_factor =
|
|
884
|
+
backoff_factor = 2
|
|
885
885
|
if command.type == 'BulkAddToTaskSetting':
|
|
886
886
|
backoff_factor = 8
|
|
887
887
|
command = command.wait(timeout=0, backoff_factor=backoff_factor)
|
dtlpy/repositories/uploader.py
CHANGED
dtlpy/services/api_client.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
dtlpy/__init__.py,sha256=
|
|
2
|
-
dtlpy/__version__.py,sha256=
|
|
1
|
+
dtlpy/__init__.py,sha256=T_6RQvFl0hF5gmKdFBBNDHg0RcLJFd31KthBJlYEXa4,20063
|
|
2
|
+
dtlpy/__version__.py,sha256=49Xc4KU8IhbrpGsUDcvj5etDsYp1n8Z2uEkCkDHSfbo,20
|
|
3
3
|
dtlpy/exceptions.py,sha256=EQCKs3pwhwZhgMByQN3D3LpWpdxwcKPEEt-bIaDwURM,2871
|
|
4
|
-
dtlpy/new_instance.py,sha256=
|
|
4
|
+
dtlpy/new_instance.py,sha256=_-F1NTJgGCCHnW68eIexwq7leLGTCHcPxodbw9mfasI,5555
|
|
5
5
|
dtlpy/assets/__init__.py,sha256=D_hAa6NM8Zoy32sF_9b7m0b7I-BQEyBFg8-9Tg2WOeo,976
|
|
6
6
|
dtlpy/assets/lock_open.png,sha256=vXHune4YF__fINPQ2l61G2zI3BeJPX_z5gkwzUNFAxs,24081
|
|
7
7
|
dtlpy/assets/main.py,sha256=N1JUsx79qnXI7Hx22C8JOzHJdGHxvrXeTx5UZAxvJfE,1380
|
|
@@ -49,8 +49,8 @@ dtlpy/dlp/dlp.py,sha256=YjNBjeCDTXJ7tj8qdiGZ8lFb8DtPZl-FvViyjxt9xF8,4278
|
|
|
49
49
|
dtlpy/dlp/parser.py,sha256=dU8hwomLdBs5MdCUsm574eipgo0Q4SJuvXPrc3KtlwY,30551
|
|
50
50
|
dtlpy/entities/__init__.py,sha256=83j8Jxcfx-mcNVZly7qMAuWtTMJFSxnm_ub-q-qt5iA,4396
|
|
51
51
|
dtlpy/entities/analytic.py,sha256=5eAavh_NmvSWsD7uzon2vQn08chbc-dh1nlJc0awkQI,11374
|
|
52
|
-
dtlpy/entities/annotation.py,sha256=
|
|
53
|
-
dtlpy/entities/annotation_collection.py,sha256=
|
|
52
|
+
dtlpy/entities/annotation.py,sha256=s-g39sdUFafhsbGN1Taf2DSqoKbyRtWc0TVNhPpEAwA,67515
|
|
53
|
+
dtlpy/entities/annotation_collection.py,sha256=Uh7pnyhAv4epMApHRtIdWRG_ro9U6p7yNV7Lnjzdzqk,29979
|
|
54
54
|
dtlpy/entities/app.py,sha256=IuNNH-S1YGwOUZJGRPA7lZyTcb5ZhJoua4P5tdO7rCU,4850
|
|
55
55
|
dtlpy/entities/app_module.py,sha256=0UiAbBX1q8iEImi3nY7ySWZZHoRRwu0qUXmyXmgVAc4,3645
|
|
56
56
|
dtlpy/entities/artifact.py,sha256=wtLtBuidOPbnba0ok40JyunCCIBGbAl4bP_ebK39Kk4,5711
|
|
@@ -58,42 +58,42 @@ dtlpy/entities/assignment.py,sha256=LTUxE2ZB5iZSbSeoroHe5P7Kv6E_K2b5cdY-7TZ4HFE,
|
|
|
58
58
|
dtlpy/entities/base_entity.py,sha256=i8VzoXdkkJbUJD7U7U-bkbQKiUWkRwZZhl-mQT5WUsc,7578
|
|
59
59
|
dtlpy/entities/bot.py,sha256=is3NUCnPg56HSjsHIvFcVkymValMqDV0uHRDC1Ib-ds,3819
|
|
60
60
|
dtlpy/entities/codebase.py,sha256=pwRkAq2GV0wvmzshg89IAmE-0I2Wsy_-QNOu8OV8uqc,8999
|
|
61
|
-
dtlpy/entities/command.py,sha256=
|
|
62
|
-
dtlpy/entities/dataset.py,sha256=
|
|
61
|
+
dtlpy/entities/command.py,sha256=dv7w0GfTqq4OeLUoAUElYCdOrvE2Lp9Cx-XdA9N4314,4976
|
|
62
|
+
dtlpy/entities/dataset.py,sha256=6n_0TeH4A8Je-ZUwX1Vc2GFJO9k8HU67n_j2hHWcFi4,44831
|
|
63
63
|
dtlpy/entities/directory_tree.py,sha256=Rni6pLSWytR6yeUPgEdCCRfTg_cqLOdUc9uCqz9KT-Q,1186
|
|
64
64
|
dtlpy/entities/dpk.py,sha256=l-wz4h9xB3ag1qgDTpUOJIzpKVBdjMdeVhXtvk2jW88,12620
|
|
65
65
|
dtlpy/entities/driver.py,sha256=O_QdK1EaLjQyQkmvKsmkNgmvmMb1mPjKnJGxK43KrOA,7197
|
|
66
66
|
dtlpy/entities/execution.py,sha256=xZxfF3tYtf7tJ_GKzwSoEkF1zhlnWmbBzLoVXrNl8DE,12800
|
|
67
67
|
dtlpy/entities/feature.py,sha256=9fFjD0W57anOVSAVU55ypxN_WTCsWTG03Wkc3cAAj78,3732
|
|
68
68
|
dtlpy/entities/feature_set.py,sha256=lKbaLLklYC8dZGCDzQa8T-LSYpUygqLwlC_jhHtOfLw,4326
|
|
69
|
-
dtlpy/entities/filters.py,sha256=
|
|
69
|
+
dtlpy/entities/filters.py,sha256=HV06ipH6APG1r4PnlUVvlIMSoR76kbk7Nywz8-kcwpM,18826
|
|
70
70
|
dtlpy/entities/integration.py,sha256=BaqdMbI4OqRVpB_GX1pHfNYgDO8OBfV06wKRNFR1ohI,5482
|
|
71
71
|
dtlpy/entities/item.py,sha256=JGdBa8RDPWnVOdqRdKoz-T3o8rCOsLbKFdhs0KQDa6o,28369
|
|
72
72
|
dtlpy/entities/label.py,sha256=ycDYavIgKhz806plIX-64c07_TeHpDa-V7LnfFVe4Rg,3869
|
|
73
73
|
dtlpy/entities/links.py,sha256=FAmEwHtsrqKet3c0UHH9u_gHgG6_OwF1-rl4xK7guME,2516
|
|
74
74
|
dtlpy/entities/message.py,sha256=ApJuaKEqxATpXjNYUjGdYPu3ibQzEMo8-LtJ_4xAcPI,5865
|
|
75
|
-
dtlpy/entities/model.py,sha256=
|
|
76
|
-
dtlpy/entities/node.py,sha256=
|
|
77
|
-
dtlpy/entities/ontology.py,sha256=
|
|
75
|
+
dtlpy/entities/model.py,sha256=SProbsv3FVyd_eld3bc3mD-RinldD6Gq797UueEz_EM,24144
|
|
76
|
+
dtlpy/entities/node.py,sha256=jpf_aQRoBxD6XEZ3xjpgTPp8Iuj6Z4mAQbK7RC0Larw,37463
|
|
77
|
+
dtlpy/entities/ontology.py,sha256=hpex7wLJ2JXMFq3lxLfN49LPz4M3GJIjqD-7HL5hOEw,29265
|
|
78
78
|
dtlpy/entities/organization.py,sha256=AMkx8hNIIIjnu5pYlNjckMRuKt6H3lnOAqtEynkr7wg,9893
|
|
79
79
|
dtlpy/entities/package.py,sha256=EA5cB3nFBlsbxVK-QroZILjol2bYSVGqCby-mOyJJjQ,26353
|
|
80
80
|
dtlpy/entities/package_defaults.py,sha256=wTD7Z7rGYjVy8AcUxTFEnkOkviiJaLVZYvduiUBKNZo,211
|
|
81
|
-
dtlpy/entities/package_function.py,sha256=
|
|
81
|
+
dtlpy/entities/package_function.py,sha256=kQsfW-LOTAVd8oDm-F0iWLvKsFmAXSp5ZoBrXPvISRE,6067
|
|
82
82
|
dtlpy/entities/package_module.py,sha256=MBaJ5j8eCERsP-s1SIO8_daTU1gEqcaDSpUBu_gUTAk,4035
|
|
83
83
|
dtlpy/entities/package_slot.py,sha256=XBwCodQe618sQm0bmx46Npo94mEk-zUV7ZX0mDRcsD8,3946
|
|
84
84
|
dtlpy/entities/paged_entities.py,sha256=A6_D0CUJsN52dBG6yn-oHHzjuVDkBNejTG5r-KxWOxI,5848
|
|
85
|
-
dtlpy/entities/pipeline.py,sha256
|
|
85
|
+
dtlpy/entities/pipeline.py,sha256=-_Y50J3bFSfRbZVcqgg4H__x35Jp6fK6aX27o4jL1QQ,20070
|
|
86
86
|
dtlpy/entities/pipeline_execution.py,sha256=2FKZhvcksWFYjTBQxnLtpRVy2PFGNkkt0EipWMan1JA,8907
|
|
87
87
|
dtlpy/entities/project.py,sha256=ZUx8zA3mr6N145M62R3UDPCCzO1vxfyWO6vjES-bO-g,14653
|
|
88
88
|
dtlpy/entities/prompt_item.py,sha256=42U1gp9CmasMUPjr6JdEXNGfek_lDn8_2M2Xb1GPeSw,2469
|
|
89
|
-
dtlpy/entities/recipe.py,sha256=
|
|
89
|
+
dtlpy/entities/recipe.py,sha256=m8EDczbNcEY5H8xyyendX5q1ECSC1qrpRmwDQrW221g,10193
|
|
90
90
|
dtlpy/entities/reflect_dict.py,sha256=2NaSAL-CO0T0FYRYFQlaSpbsoLT2Q18AqdHgQSLX5Y4,3273
|
|
91
91
|
dtlpy/entities/resource_execution.py,sha256=1HuVV__U4jAUOtOkWlWImnM3Yts8qxMSAkMA9sBhArY,5033
|
|
92
|
-
dtlpy/entities/service.py,sha256=
|
|
92
|
+
dtlpy/entities/service.py,sha256=RP5tn0llzEr5wiuiV1H_ljWtgUdkRQDpaRsh1QnbkMo,28467
|
|
93
93
|
dtlpy/entities/setting.py,sha256=F8QvHQKgeX5wM4jujYHpxgbpk28ukfUjLvBE9-rHoI8,8500
|
|
94
|
-
dtlpy/entities/task.py,sha256=
|
|
94
|
+
dtlpy/entities/task.py,sha256=XHiEqZYFlrDCtmw1MXsysjoBLdIzAk7coMrVk8bNIiE,19534
|
|
95
95
|
dtlpy/entities/time_series.py,sha256=336jWNckjuSn0G29WJFetB7nBoFAKqs4VH9_IB4m4FE,4017
|
|
96
|
-
dtlpy/entities/trigger.py,sha256=
|
|
96
|
+
dtlpy/entities/trigger.py,sha256=zh3wYUY2-zATh_7ous0Ck87Yojo9r9PAVQrkcESxoko,14266
|
|
97
97
|
dtlpy/entities/user.py,sha256=hqEzwN6rl1oUTpKOV5eXvw9Z7dtpsiC4TAPSNBmkqcM,3865
|
|
98
98
|
dtlpy/entities/webhook.py,sha256=6R06MgLxabvKySInGlSJmaf0AVmAMe3vKusWhqONRyU,3539
|
|
99
99
|
dtlpy/entities/annotation_definitions/__init__.py,sha256=Y_L9JGbRoQQKkoPMCUnLotbytgYK6244WtR8sySmINQ,636
|
|
@@ -147,23 +147,23 @@ dtlpy/miscellaneous/json_utils.py,sha256=0P4YTlL6o_L7AUrvAeqkqA46MZZK_hDdTrdnmI5
|
|
|
147
147
|
dtlpy/miscellaneous/list_print.py,sha256=leEg3RodgYfH5t_0JG8VuM8NiesR8sJLK_mRSttL5pY,4808
|
|
148
148
|
dtlpy/miscellaneous/zipping.py,sha256=GMdPhAeHQXeMS5ClaiKWMJWVYQLBLAaJUWxvdYrL4Ro,5337
|
|
149
149
|
dtlpy/ml/__init__.py,sha256=vPkyXpc9kcWWZ_PxyPEOsjKBJdEbowLkZr8FZIb_OBM,799
|
|
150
|
-
dtlpy/ml/base_model_adapter.py,sha256=
|
|
150
|
+
dtlpy/ml/base_model_adapter.py,sha256=5sD5qtMhm_eRLgnnQJT9A9q0L4MpLkzyZtLN_MS3QC0,38767
|
|
151
151
|
dtlpy/ml/metrics.py,sha256=BG2E-1Mvjv2e2No9mIJKVmvzqBvLqytKcw3hA7wVUNc,20037
|
|
152
152
|
dtlpy/ml/predictions_utils.py,sha256=He_84U14oS2Ss7T_-Zj5GDiBZwS-GjMPURUh7u7DjF8,12484
|
|
153
153
|
dtlpy/ml/summary_writer.py,sha256=dehDi8zmGC1sAGyy_3cpSWGXoGQSiQd7bL_Thoo8yIs,2784
|
|
154
|
-
dtlpy/ml/train_utils.py,sha256=
|
|
154
|
+
dtlpy/ml/train_utils.py,sha256=R-BHKRfqDoLLhFyLzsRFyJ4E-8iedj9s9oZqy3IO2rg,2404
|
|
155
155
|
dtlpy/repositories/__init__.py,sha256=RskGSdPzJwsukYEIgs_7MW_1tqVx6hTPQ2WUhQ5PA5w,1922
|
|
156
156
|
dtlpy/repositories/analytics.py,sha256=dQPCYTPAIuyfVI_ppR49W7_GBj0033feIm9Gd7LW1V0,2966
|
|
157
157
|
dtlpy/repositories/annotations.py,sha256=E7iHo8UwDAhdulqh0lGr3fGQ-TSwZXXGsEXZA-WJ_NA,35780
|
|
158
158
|
dtlpy/repositories/apps.py,sha256=EBMP1ZHmQ1Xa18lNnty8NJkByc6Con3X32S8GyeHcw0,10482
|
|
159
|
-
dtlpy/repositories/artifacts.py,sha256=
|
|
159
|
+
dtlpy/repositories/artifacts.py,sha256=Ke2ustTNw-1eQ0onLsWY7gL2aChjXPAX5p1uQ_EzMbo,19081
|
|
160
160
|
dtlpy/repositories/assignments.py,sha256=M1vlixBdAjwStqCG1MQjHsj3dH15KT0Rb5UTDtyDpEQ,25464
|
|
161
161
|
dtlpy/repositories/bots.py,sha256=q1SqH01JHloljKxknhHU09psV1vQx9lPhu3g8mBBeRg,8104
|
|
162
|
-
dtlpy/repositories/codebases.py,sha256=
|
|
163
|
-
dtlpy/repositories/commands.py,sha256=
|
|
162
|
+
dtlpy/repositories/codebases.py,sha256=fKxwXy8sNm5dSqhKPT0382uDg081oMnIh15QtI_Npe8,24528
|
|
163
|
+
dtlpy/repositories/commands.py,sha256=jJnHctZEloRH6Zxf1yFwpgWrv449EU_40QOexKwKlkw,5203
|
|
164
164
|
dtlpy/repositories/compositions.py,sha256=H417BvlQAiWr5NH2eANFke6CfEO5o7DSvapYpf7v5Hk,2150
|
|
165
|
-
dtlpy/repositories/datasets.py,sha256=
|
|
166
|
-
dtlpy/repositories/downloader.py,sha256=
|
|
165
|
+
dtlpy/repositories/datasets.py,sha256=GjJLh5masXCdyuj8jTxvvLIvhxJuXtc0o4pn-Sfjr4A,45084
|
|
166
|
+
dtlpy/repositories/downloader.py,sha256=pNwL7Nid8xmOyYNiv4DB_WY4RoKlxQ-U9nG2V99Gyr8,41342
|
|
167
167
|
dtlpy/repositories/dpks.py,sha256=4Cw-avBe1HmVP5I-YSeJOhbRBGcxYUZHD7e-S87DeQI,13793
|
|
168
168
|
dtlpy/repositories/drivers.py,sha256=fF0UuHCyBzop8pHfryex23mf0kVFAkqzNdOmwBbaWxY,10204
|
|
169
169
|
dtlpy/repositories/executions.py,sha256=LexiO2KaTNMpjkDKIxQ5NHRU3huTfvdDZPKAOqUCdSs,30314
|
|
@@ -172,27 +172,27 @@ dtlpy/repositories/features.py,sha256=PhsGA8MpWB4JiwKHivYawB61ex1NnbYDmShQee5LsX
|
|
|
172
172
|
dtlpy/repositories/integrations.py,sha256=oT5N3CMmOtMTrhwJhC_j9GjG0OmHzTcoUDoWDPfszFs,11575
|
|
173
173
|
dtlpy/repositories/items.py,sha256=DqJ3g9bc4OLMm9KqI-OebXbr-zcEiohO1wGZJ1uE2Lg,37874
|
|
174
174
|
dtlpy/repositories/messages.py,sha256=zYcoz8Us6j8Tb5Z7luJuvtO9xSRTuOCS7pl-ztt97Ac,3082
|
|
175
|
-
dtlpy/repositories/models.py,sha256=
|
|
175
|
+
dtlpy/repositories/models.py,sha256=K3MUpSCypkTqfEfDR4ykKMuuTfkWrl2vwioPhZNr13c,32771
|
|
176
176
|
dtlpy/repositories/nodes.py,sha256=xXJm_YA0vDUn0dVvaGeq6ORM0vI3YXvfjuylvGRtkxo,3061
|
|
177
177
|
dtlpy/repositories/ontologies.py,sha256=unnMhD2isR9DVE5S8Fg6fSDf1ZZ5Xemxxufx4LEUT3w,19577
|
|
178
178
|
dtlpy/repositories/organizations.py,sha256=6ijUDFbsogfRul1g_vUB5AZOb41MRmV5NhNU7WLHt3A,22825
|
|
179
|
-
dtlpy/repositories/packages.py,sha256=
|
|
179
|
+
dtlpy/repositories/packages.py,sha256=MTVhlcCq2vycUUvEZZdSqSmvf3FuCoQaxcysq0Qh6ok,86610
|
|
180
180
|
dtlpy/repositories/pipeline_executions.py,sha256=j5t_PtAHm1s9AIqgBHmnrxC6Z1YqTrI53eYLWWlcMlU,14312
|
|
181
181
|
dtlpy/repositories/pipelines.py,sha256=VDAOsGbgD1_AKdMrJl_qB3gxPs7f3pwUnPx0pT1iAWk,23977
|
|
182
182
|
dtlpy/repositories/projects.py,sha256=tZyFLqVs-8ggTIi5echlX7XdGOJGW4LzKuXke7jkRnw,22140
|
|
183
183
|
dtlpy/repositories/recipes.py,sha256=kPsN6htcEzdO4JLq3cidzSnZUdx8RDVW2fvNFXdPKWk,15756
|
|
184
184
|
dtlpy/repositories/resource_executions.py,sha256=PyzsbdJxz6jf17Gx13GZmqdu6tZo3TTVv-DypnJ_sY0,5374
|
|
185
|
-
dtlpy/repositories/services.py,sha256=
|
|
185
|
+
dtlpy/repositories/services.py,sha256=oOatkm_F3C1JMUYvNu8dNRgORvk0_VITck02e29jWEA,66217
|
|
186
186
|
dtlpy/repositories/settings.py,sha256=pvqNse0ANCdU3NSLJEzHco-PZq__OIsPSPVJveB9E4I,12296
|
|
187
|
-
dtlpy/repositories/tasks.py,sha256=
|
|
187
|
+
dtlpy/repositories/tasks.py,sha256=bbk0l0EZzFFEN_TjHBqDh6GNVum3yF902gdjO0iEFhk,48076
|
|
188
188
|
dtlpy/repositories/times_series.py,sha256=m-bKFEgiZ13yQNelDjBfeXMUy_HgsPD_JAHj1GVx9fU,11420
|
|
189
189
|
dtlpy/repositories/triggers.py,sha256=izdNyCN1gDc5uo7AXntso0HSMTDIzGFUp-dSEz8cn_U,21990
|
|
190
190
|
dtlpy/repositories/upload_element.py,sha256=4CDZRKLubanOP0ZyGwxAHTtl6GLzwAyRAIm-PLYt0ck,10140
|
|
191
|
-
dtlpy/repositories/uploader.py,sha256=
|
|
191
|
+
dtlpy/repositories/uploader.py,sha256=PzEq4yHsxJT1lv_wYGS-gh7Wmu37TA-14ww_r-6HBrc,30337
|
|
192
192
|
dtlpy/repositories/webhooks.py,sha256=IIpxOJ-7KeQp1TY9aJZz-FuycSjAoYx0TDk8z86KAK8,9033
|
|
193
193
|
dtlpy/services/__init__.py,sha256=VfVJy2otIrDra6i7Sepjyez2ujiE6171ChQZp-YgxsM,904
|
|
194
194
|
dtlpy/services/aihttp_retry.py,sha256=tgntZsAY0dW9v08rkjX1T5BLNDdDd8svtgn7nH8DSGU,5022
|
|
195
|
-
dtlpy/services/api_client.py,sha256=
|
|
195
|
+
dtlpy/services/api_client.py,sha256=Ew3neG7P8giK3CwFXYWMJnbRAYbGFA2K_jIVavUqnB8,65848
|
|
196
196
|
dtlpy/services/api_reference.py,sha256=cW-B3eoi9Xs3AwI87_Kr6GV_E6HPoC73aETFaGz3A-0,1515
|
|
197
197
|
dtlpy/services/async_utils.py,sha256=lfpkTkRUvQoMTxaRZBHbPt5e43qdvpCGDe_-KcY2Jps,2810
|
|
198
198
|
dtlpy/services/calls_counter.py,sha256=gr0io5rIsO5-7Cgc8neA1vK8kUtYhgFPmDQ2jXtiZZs,1036
|
|
@@ -220,14 +220,14 @@ dtlpy/utilities/reports/report.py,sha256=3nEsNnIWmdPEsd21nN8vMMgaZVcPKn9iawKTTeO
|
|
|
220
220
|
dtlpy/utilities/videos/__init__.py,sha256=SV3w51vfPuGBxaMeNemx6qEMHw_C4lLpWNGXMvdsKSY,734
|
|
221
221
|
dtlpy/utilities/videos/video_player.py,sha256=LCxg0EZ_DeuwcT7U_r7MRC6Q19s0xdFb7x5Gk39PRms,24072
|
|
222
222
|
dtlpy/utilities/videos/videos.py,sha256=Dj916B4TQRIhI7HZVevl3foFrCsPp0eeWwvGbgX3-_A,21875
|
|
223
|
-
dtlpy-1.
|
|
224
|
-
dtlpy-1.
|
|
225
|
-
dtlpy-1.
|
|
223
|
+
dtlpy-1.87.18.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
|
|
224
|
+
dtlpy-1.87.18.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
|
|
225
|
+
dtlpy-1.87.18.data/scripts/dlp.py,sha256=tEokRaDINISXnq8yNx_CBw1qM5uwjYiZoJOYGqWB3RU,4267
|
|
226
226
|
tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
227
227
|
tests/features/environment.py,sha256=U3LVKfWcgRXWvG2mBy57uojhKpqbwFykPvae40Ac4ZY,13706
|
|
228
|
-
dtlpy-1.
|
|
229
|
-
dtlpy-1.
|
|
230
|
-
dtlpy-1.
|
|
231
|
-
dtlpy-1.
|
|
232
|
-
dtlpy-1.
|
|
233
|
-
dtlpy-1.
|
|
228
|
+
dtlpy-1.87.18.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
229
|
+
dtlpy-1.87.18.dist-info/METADATA,sha256=ZGQRogBnEO5C7CsXRozVW4UchUthzfPw0P7LDZVpQNo,3026
|
|
230
|
+
dtlpy-1.87.18.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
|
231
|
+
dtlpy-1.87.18.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
|
|
232
|
+
dtlpy-1.87.18.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
|
|
233
|
+
dtlpy-1.87.18.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|