dtlpy 1.90.39__py3-none-any.whl → 1.92.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 +5 -2
- dtlpy/__version__.py +1 -1
- dtlpy/assets/lock_open.png +0 -0
- dtlpy/entities/__init__.py +1 -1
- dtlpy/entities/analytic.py +118 -98
- dtlpy/entities/annotation.py +22 -31
- dtlpy/entities/annotation_collection.py +19 -21
- dtlpy/entities/app.py +13 -3
- dtlpy/entities/assignment.py +6 -0
- dtlpy/entities/base_entity.py +0 -23
- dtlpy/entities/command.py +3 -2
- dtlpy/entities/dataset.py +53 -3
- dtlpy/entities/dpk.py +15 -0
- dtlpy/entities/execution.py +13 -1
- dtlpy/entities/feature_set.py +3 -0
- dtlpy/entities/filters.py +87 -8
- dtlpy/entities/integration.py +1 -1
- dtlpy/entities/item.py +41 -1
- dtlpy/entities/node.py +49 -3
- dtlpy/entities/ontology.py +62 -5
- dtlpy/entities/package_function.py +2 -0
- dtlpy/entities/package_module.py +13 -0
- dtlpy/entities/pipeline.py +20 -1
- dtlpy/entities/pipeline_execution.py +37 -6
- dtlpy/entities/prompt_item.py +240 -27
- dtlpy/entities/recipe.py +37 -0
- dtlpy/entities/service.py +33 -4
- dtlpy/ml/base_model_adapter.py +166 -18
- dtlpy/new_instance.py +80 -9
- dtlpy/repositories/apps.py +68 -22
- dtlpy/repositories/assignments.py +1 -1
- dtlpy/repositories/commands.py +10 -2
- dtlpy/repositories/datasets.py +143 -13
- dtlpy/repositories/dpks.py +34 -1
- dtlpy/repositories/executions.py +27 -30
- dtlpy/repositories/feature_sets.py +23 -3
- dtlpy/repositories/features.py +4 -1
- dtlpy/repositories/models.py +1 -1
- dtlpy/repositories/packages.py +6 -3
- dtlpy/repositories/pipeline_executions.py +58 -5
- dtlpy/repositories/services.py +28 -7
- dtlpy/repositories/tasks.py +8 -2
- dtlpy/repositories/uploader.py +5 -2
- dtlpy/services/api_client.py +74 -12
- {dtlpy-1.90.39.dist-info → dtlpy-1.92.18.dist-info}/METADATA +2 -2
- {dtlpy-1.90.39.dist-info → dtlpy-1.92.18.dist-info}/RECORD +54 -57
- tests/features/environment.py +67 -1
- dtlpy/callbacks/__init__.py +0 -16
- dtlpy/callbacks/piper_progress_reporter.py +0 -29
- dtlpy/callbacks/progress_viewer.py +0 -54
- {dtlpy-1.90.39.data → dtlpy-1.92.18.data}/scripts/dlp +0 -0
- {dtlpy-1.90.39.data → dtlpy-1.92.18.data}/scripts/dlp.bat +0 -0
- {dtlpy-1.90.39.data → dtlpy-1.92.18.data}/scripts/dlp.py +0 -0
- {dtlpy-1.90.39.dist-info → dtlpy-1.92.18.dist-info}/LICENSE +0 -0
- {dtlpy-1.90.39.dist-info → dtlpy-1.92.18.dist-info}/WHEEL +0 -0
- {dtlpy-1.90.39.dist-info → dtlpy-1.92.18.dist-info}/entry_points.txt +0 -0
- {dtlpy-1.90.39.dist-info → dtlpy-1.92.18.dist-info}/top_level.txt +0 -0
dtlpy/repositories/services.py
CHANGED
|
@@ -25,7 +25,7 @@ class Services:
|
|
|
25
25
|
def __init__(self,
|
|
26
26
|
client_api: ApiClient,
|
|
27
27
|
project: entities.Project = None,
|
|
28
|
-
package: entities.Package = None,
|
|
28
|
+
package: Union[entities.Package, entities.Dpk] = None,
|
|
29
29
|
project_id=None,
|
|
30
30
|
model_id=None,
|
|
31
31
|
model: entities.Model = None):
|
|
@@ -52,12 +52,12 @@ class Services:
|
|
|
52
52
|
raise exceptions.PlatformException(
|
|
53
53
|
error='2001',
|
|
54
54
|
message='Cannot perform action WITHOUT package entity in services repository. Please set a package')
|
|
55
|
-
assert isinstance(self._package, entities.Package)
|
|
55
|
+
assert (isinstance(self._package, entities.Package) or isinstance(self._package, entities.Dpk))
|
|
56
56
|
return self._package
|
|
57
57
|
|
|
58
58
|
@package.setter
|
|
59
|
-
def package(self, package: entities.Package):
|
|
60
|
-
if not isinstance(package, entities.Package):
|
|
59
|
+
def package(self, package: Union[entities.Package, entities.Dpk]):
|
|
60
|
+
if not isinstance(package, entities.Package) and not isinstance(package, entities.Dpk):
|
|
61
61
|
raise ValueError('Must input a valid package entity')
|
|
62
62
|
self._package = package
|
|
63
63
|
|
|
@@ -605,6 +605,7 @@ class Services:
|
|
|
605
605
|
on_reset: str = None,
|
|
606
606
|
max_attempts: int = None,
|
|
607
607
|
secrets=None,
|
|
608
|
+
integrations=None,
|
|
608
609
|
**kwargs
|
|
609
610
|
) -> entities.Service:
|
|
610
611
|
"""
|
|
@@ -631,6 +632,7 @@ class Services:
|
|
|
631
632
|
:param int max_attempts: Maximum execution retries in-case of a service reset
|
|
632
633
|
:param bool force: optional - terminate old replicas immediately
|
|
633
634
|
:param list secrets: list of the integrations ids
|
|
635
|
+
:param list integrations: list of the integrations
|
|
634
636
|
:param kwargs:
|
|
635
637
|
:return: Service object
|
|
636
638
|
:rtype: dtlpy.entities.service.Service
|
|
@@ -691,6 +693,11 @@ class Services:
|
|
|
691
693
|
secrets = [secrets]
|
|
692
694
|
payload['secrets'] = secrets
|
|
693
695
|
|
|
696
|
+
if integrations is not None:
|
|
697
|
+
if not isinstance(integrations, list):
|
|
698
|
+
integrations = [integrations]
|
|
699
|
+
payload['integrations'] = integrations
|
|
700
|
+
|
|
694
701
|
if runtime is not None:
|
|
695
702
|
if isinstance(runtime, entities.KubernetesRuntime):
|
|
696
703
|
runtime = runtime.to_json()
|
|
@@ -748,7 +755,7 @@ class Services:
|
|
|
748
755
|
)
|
|
749
756
|
|
|
750
757
|
@_api_reference.add(path='/services/{id}', method='delete')
|
|
751
|
-
def delete(self, service_name: str = None, service_id: str = None):
|
|
758
|
+
def delete(self, service_name: str = None, service_id: str = None, force=False):
|
|
752
759
|
"""
|
|
753
760
|
Delete Service object
|
|
754
761
|
|
|
@@ -756,6 +763,7 @@ class Services:
|
|
|
756
763
|
|
|
757
764
|
You must provide at least ONE of the following params: service_id, service_name.
|
|
758
765
|
|
|
766
|
+
:param force:
|
|
759
767
|
:param str service_name: by name
|
|
760
768
|
:param str service_id: by id
|
|
761
769
|
:return: True
|
|
@@ -774,10 +782,14 @@ class Services:
|
|
|
774
782
|
else:
|
|
775
783
|
service_id = self.get(service_name=service_name).id
|
|
776
784
|
|
|
785
|
+
path = "/services/{}".format(service_id)
|
|
786
|
+
if force:
|
|
787
|
+
path = '{}?force=true'.format(path)
|
|
788
|
+
|
|
777
789
|
# request
|
|
778
790
|
success, response = self._client_api.gen_request(
|
|
779
791
|
req_type="delete",
|
|
780
|
-
path=
|
|
792
|
+
path=path
|
|
781
793
|
)
|
|
782
794
|
if not success:
|
|
783
795
|
raise exceptions.PlatformException(response)
|
|
@@ -1168,6 +1180,7 @@ class Services:
|
|
|
1168
1180
|
on_reset: str = None,
|
|
1169
1181
|
force: bool = False,
|
|
1170
1182
|
secrets: list = None,
|
|
1183
|
+
integrations: list = None,
|
|
1171
1184
|
**kwargs) -> entities.Service:
|
|
1172
1185
|
"""
|
|
1173
1186
|
Deploy service.
|
|
@@ -1196,6 +1209,7 @@ class Services:
|
|
|
1196
1209
|
:param str on_reset: what happens on reset
|
|
1197
1210
|
:param bool force: optional - if true, terminate old replicas immediately
|
|
1198
1211
|
:param list secrets: list of the integrations ids
|
|
1212
|
+
:param list integrations: list of the integrations
|
|
1199
1213
|
:param kwargs: list of additional arguments
|
|
1200
1214
|
:return: Service object
|
|
1201
1215
|
:rtype: dtlpy.entities.service.Service
|
|
@@ -1218,6 +1232,8 @@ class Services:
|
|
|
1218
1232
|
)
|
|
1219
1233
|
)
|
|
1220
1234
|
"""
|
|
1235
|
+
if package is None and isinstance(package, entities.Dpk):
|
|
1236
|
+
raise exceptions.PlatformException('400', 'cannot deploy dpk package. Please install the app')
|
|
1221
1237
|
package = package if package is not None else self._package
|
|
1222
1238
|
if service_name is None:
|
|
1223
1239
|
get_name = False
|
|
@@ -1290,6 +1306,10 @@ class Services:
|
|
|
1290
1306
|
if not isinstance(secrets, list):
|
|
1291
1307
|
secrets = [secrets]
|
|
1292
1308
|
service.secrets = secrets
|
|
1309
|
+
if integrations is not None:
|
|
1310
|
+
if not isinstance(integrations, list):
|
|
1311
|
+
integrations = [integrations]
|
|
1312
|
+
service.integrations = integrations
|
|
1293
1313
|
service = self.update(service=service, force=force)
|
|
1294
1314
|
else:
|
|
1295
1315
|
service = self._create(service_name=service_name,
|
|
@@ -1312,7 +1332,8 @@ class Services:
|
|
|
1312
1332
|
drain_time=drain_time,
|
|
1313
1333
|
max_attempts=max_attempts,
|
|
1314
1334
|
on_reset=on_reset,
|
|
1315
|
-
secrets=secrets
|
|
1335
|
+
secrets=secrets,
|
|
1336
|
+
integrations=integrations,
|
|
1316
1337
|
)
|
|
1317
1338
|
if checkout:
|
|
1318
1339
|
self.checkout(service=service)
|
dtlpy/repositories/tasks.py
CHANGED
|
@@ -585,7 +585,8 @@ class Tasks:
|
|
|
585
585
|
consensus_task_type=None,
|
|
586
586
|
consensus_percentage=None,
|
|
587
587
|
consensus_assignees=None,
|
|
588
|
-
scoring=True
|
|
588
|
+
scoring=True,
|
|
589
|
+
enforce_video_conversion=True,
|
|
589
590
|
) -> entities.Task:
|
|
590
591
|
"""
|
|
591
592
|
Create a new Task (Annotation or QA).
|
|
@@ -619,6 +620,7 @@ class Tasks:
|
|
|
619
620
|
:param int consensus_percentage: percentage of items to be copied to multiple annotators (consensus items)
|
|
620
621
|
:param int consensus_assignees: the number of different annotators per item (number of copies per item)
|
|
621
622
|
:param bool scoring: create a scoring app in project
|
|
623
|
+
:param bool enforce_video_conversion: Enforce WEBM conversion on video items for frame-accurate annotations. WEBM Conversion will be executed as a project service and incurs compute costs. Service compute resources can be set according to planned workload.
|
|
622
624
|
:return: Task object
|
|
623
625
|
:rtype: dtlpy.entities.task.Task
|
|
624
626
|
|
|
@@ -628,7 +630,8 @@ class Tasks:
|
|
|
628
630
|
|
|
629
631
|
dataset.tasks.create(task= 'task_entity',
|
|
630
632
|
due_date = datetime.datetime(day= 1, month= 1, year= 2029).timestamp(),
|
|
631
|
-
assignee_ids =[ 'annotator1@dataloop.ai', 'annotator2@dataloop.ai']
|
|
633
|
+
assignee_ids =[ 'annotator1@dataloop.ai', 'annotator2@dataloop.ai'],
|
|
634
|
+
available_actions=[dl.ItemAction("discard"), dl.ItemAction("to-check")])
|
|
632
635
|
"""
|
|
633
636
|
|
|
634
637
|
if dataset is None and self._dataset is None:
|
|
@@ -706,6 +709,9 @@ class Tasks:
|
|
|
706
709
|
if task_parent_id is not None:
|
|
707
710
|
payload['spec']['parentTaskId'] = task_parent_id
|
|
708
711
|
|
|
712
|
+
if not enforce_video_conversion:
|
|
713
|
+
payload['disableWebm'] = not enforce_video_conversion
|
|
714
|
+
|
|
709
715
|
is_pulling = any([batch_size, max_batch_workload])
|
|
710
716
|
is_consensus = any([consensus_percentage, consensus_assignees, consensus_task_type])
|
|
711
717
|
if is_pulling and is_consensus:
|
dtlpy/repositories/uploader.py
CHANGED
|
@@ -480,8 +480,8 @@ class Uploader:
|
|
|
480
480
|
element.item_metadata = {}
|
|
481
481
|
with open(element.annotations_filepath) as ann_f:
|
|
482
482
|
item_metadata = json.load(ann_f)
|
|
483
|
-
if 'metadata' in item_metadata
|
|
484
|
-
element.item_metadata
|
|
483
|
+
if 'metadata' in item_metadata:
|
|
484
|
+
element.item_metadata = item_metadata['metadata']
|
|
485
485
|
item, action = await self.__single_async_upload(filepath=element.buffer,
|
|
486
486
|
mode=mode,
|
|
487
487
|
item_metadata=element.item_metadata,
|
|
@@ -522,6 +522,9 @@ class Uploader:
|
|
|
522
522
|
ref=item.id)
|
|
523
523
|
if pbar is not None:
|
|
524
524
|
pbar.update()
|
|
525
|
+
self.items_repository._client_api.callbacks.run_on_event(event=self.items_repository._client_api.callbacks.CallbackEvent.ITEMS_UPLOAD,
|
|
526
|
+
context={'item_id': item.id, 'dataset_id': item.dataset_id},
|
|
527
|
+
progress=round(pbar.n / pbar.total * 100, 0))
|
|
525
528
|
else:
|
|
526
529
|
if isinstance(element.buffer, str):
|
|
527
530
|
ref = element.buffer
|
dtlpy/services/api_client.py
CHANGED
|
@@ -13,6 +13,7 @@ import logging
|
|
|
13
13
|
import asyncio
|
|
14
14
|
import certifi
|
|
15
15
|
import base64
|
|
16
|
+
import enum
|
|
16
17
|
import time
|
|
17
18
|
import tqdm
|
|
18
19
|
import json
|
|
@@ -43,6 +44,12 @@ logger = logging.getLogger(name='dtlpy')
|
|
|
43
44
|
threadLock = threading.Lock()
|
|
44
45
|
|
|
45
46
|
|
|
47
|
+
def format_message(message):
|
|
48
|
+
if message:
|
|
49
|
+
return message.replace('\\n', '\n')
|
|
50
|
+
return message
|
|
51
|
+
|
|
52
|
+
|
|
46
53
|
class VerboseLoggingLevel:
|
|
47
54
|
DEBUG = "debug"
|
|
48
55
|
INFO = "info"
|
|
@@ -61,12 +68,39 @@ class PlatformError(Exception):
|
|
|
61
68
|
if hasattr(resp, 'status_code'):
|
|
62
69
|
msg += '<Response [{}]>'.format(resp.status_code)
|
|
63
70
|
if hasattr(resp, 'reason'):
|
|
64
|
-
msg += '<Reason [{}]>'.format(resp.reason)
|
|
71
|
+
msg += '<Reason [{}]>'.format(format_message(resp.reason))
|
|
65
72
|
elif hasattr(resp, 'text'):
|
|
66
|
-
msg += '<Reason [{}]>'.format(resp.text)
|
|
73
|
+
msg += '<Reason [{}]>'.format(format_message(resp.text))
|
|
67
74
|
super().__init__(msg)
|
|
68
75
|
|
|
69
76
|
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class Callbacks:
|
|
80
|
+
def __init__(self):
|
|
81
|
+
self._callbacks = {}
|
|
82
|
+
|
|
83
|
+
class CallbackEvent(str, enum.Enum):
|
|
84
|
+
DATASET_EXPORT = 'datasetExport'
|
|
85
|
+
ITEMS_UPLOAD = 'itemUpload'
|
|
86
|
+
|
|
87
|
+
def add(self, event, func):
|
|
88
|
+
|
|
89
|
+
if not callable(func):
|
|
90
|
+
raise ValueError(f"The provided callback for {event} is not callable")
|
|
91
|
+
if event not in list(self.CallbackEvent):
|
|
92
|
+
raise ValueError(f"Unknown event: {event!r}, allowed events are: {list(self.CallbackEvent)}")
|
|
93
|
+
self._callbacks[event] = func
|
|
94
|
+
|
|
95
|
+
def get(self, name):
|
|
96
|
+
return self._callbacks.get(name)
|
|
97
|
+
|
|
98
|
+
def run_on_event(self, event, context, progress):
|
|
99
|
+
callback = self.get(event)
|
|
100
|
+
if callback is not None:
|
|
101
|
+
callback(progress=progress, context=context)
|
|
102
|
+
|
|
103
|
+
|
|
70
104
|
class Verbose:
|
|
71
105
|
__DEFAULT_LOGGING_LEVEL = 'warning'
|
|
72
106
|
__DEFAULT_DISABLE_PROGRESS_BAR = False
|
|
@@ -397,6 +431,7 @@ class ApiClient:
|
|
|
397
431
|
self._environments = None
|
|
398
432
|
self._environment = None
|
|
399
433
|
self._verbose = None
|
|
434
|
+
self._callbacks = None
|
|
400
435
|
self._cache_state = None
|
|
401
436
|
self._attributes_mode = None
|
|
402
437
|
self._platform_settings = None
|
|
@@ -684,6 +719,21 @@ class ApiClient:
|
|
|
684
719
|
assert isinstance(self._sdk_cache, SDKCache)
|
|
685
720
|
return self._sdk_cache
|
|
686
721
|
|
|
722
|
+
@property
|
|
723
|
+
def callbacks(self):
|
|
724
|
+
if self._callbacks is None:
|
|
725
|
+
self._callbacks = Callbacks()
|
|
726
|
+
assert isinstance(self._callbacks, Callbacks)
|
|
727
|
+
return self._callbacks
|
|
728
|
+
|
|
729
|
+
def add_callback(self, event, func):
|
|
730
|
+
"""
|
|
731
|
+
function to add callback to the client
|
|
732
|
+
:param event: dl.CallbackEvent enum, name of the callback
|
|
733
|
+
:param func: function to call with 2 arguments: progress and context
|
|
734
|
+
"""
|
|
735
|
+
self.callbacks.add(event, func)
|
|
736
|
+
|
|
687
737
|
@property
|
|
688
738
|
def token(self):
|
|
689
739
|
_token = self._token
|
|
@@ -777,14 +827,14 @@ class ApiClient:
|
|
|
777
827
|
return information
|
|
778
828
|
|
|
779
829
|
@property
|
|
780
|
-
def
|
|
830
|
+
def base_gate_url(self):
|
|
781
831
|
if self.__gate_url_for_requests is None:
|
|
782
832
|
self.__gate_url_for_requests = self.environment
|
|
783
833
|
internal_requests_url = os.environ.get('INTERNAL_REQUESTS_URL', None)
|
|
784
834
|
if internal_requests_url is not None:
|
|
785
835
|
self.__gate_url_for_requests = internal_requests_url
|
|
786
836
|
return self.__gate_url_for_requests
|
|
787
|
-
|
|
837
|
+
|
|
788
838
|
def export_curl_request(self, req_type, path, headers=None, json_req=None, files=None, data=None):
|
|
789
839
|
curl, prepared = self._build_gen_request(req_type=req_type,
|
|
790
840
|
path=path,
|
|
@@ -801,7 +851,7 @@ class ApiClient:
|
|
|
801
851
|
|
|
802
852
|
# prepare request
|
|
803
853
|
req = requests.Request(method=req_type,
|
|
804
|
-
url=self.
|
|
854
|
+
url=self.base_gate_url + path,
|
|
805
855
|
json=json_req,
|
|
806
856
|
files=files,
|
|
807
857
|
data=data,
|
|
@@ -981,7 +1031,7 @@ class ApiClient:
|
|
|
981
1031
|
|
|
982
1032
|
# prepare request
|
|
983
1033
|
if is_dataloop:
|
|
984
|
-
full_url = self.
|
|
1034
|
+
full_url = self.base_gate_url + path
|
|
985
1035
|
headers_req = self._build_request_headers(headers=headers)
|
|
986
1036
|
else:
|
|
987
1037
|
full_url = path
|
|
@@ -1018,7 +1068,7 @@ class ApiClient:
|
|
|
1018
1068
|
timeout=timeout) as session:
|
|
1019
1069
|
try:
|
|
1020
1070
|
async with session._request(request=session._client.request,
|
|
1021
|
-
url=self.
|
|
1071
|
+
url=self.base_gate_url + path,
|
|
1022
1072
|
method=req_type,
|
|
1023
1073
|
json=json_req,
|
|
1024
1074
|
data=data,
|
|
@@ -1122,7 +1172,7 @@ class ApiClient:
|
|
|
1122
1172
|
def callback(bytes_read):
|
|
1123
1173
|
pass
|
|
1124
1174
|
|
|
1125
|
-
timeout = aiohttp.ClientTimeout(total=
|
|
1175
|
+
timeout = aiohttp.ClientTimeout(total=2 * 60)
|
|
1126
1176
|
async with aiohttp.ClientSession(headers=headers, timeout=timeout) as session:
|
|
1127
1177
|
try:
|
|
1128
1178
|
form = aiohttp.FormData({})
|
|
@@ -1135,7 +1185,7 @@ class ApiClient:
|
|
|
1135
1185
|
form.add_field('file', AsyncUploadStream(buffer=to_upload,
|
|
1136
1186
|
callback=callback,
|
|
1137
1187
|
name=uploaded_filename))
|
|
1138
|
-
url = '{}?mode={}'.format(self.
|
|
1188
|
+
url = '{}?mode={}'.format(self.base_gate_url + remote_url, mode)
|
|
1139
1189
|
|
|
1140
1190
|
# use SSL context
|
|
1141
1191
|
ssl_context = None
|
|
@@ -1218,7 +1268,7 @@ class ApiClient:
|
|
|
1218
1268
|
pool_connections=np.sum(list(self._thread_pools_names.values())))
|
|
1219
1269
|
self.session.mount('http://', adapter)
|
|
1220
1270
|
self.session.mount('https://', adapter)
|
|
1221
|
-
resp = self.session.send(request=prepared, stream=stream, verify=self.verify, timeout=
|
|
1271
|
+
resp = self.session.send(request=prepared, stream=stream, verify=self.verify, timeout=120)
|
|
1222
1272
|
|
|
1223
1273
|
with threadLock:
|
|
1224
1274
|
self.calls_counter.add()
|
|
@@ -1337,7 +1387,7 @@ class ApiClient:
|
|
|
1337
1387
|
if hasattr(resp, 'reason'):
|
|
1338
1388
|
msg += '[Reason: {val}]'.format(val=resp.reason)
|
|
1339
1389
|
if hasattr(resp, 'text'):
|
|
1340
|
-
msg += '[Text: {val}]'.format(val=resp.text)
|
|
1390
|
+
msg += '[Text: {val}]'.format(val=format_message(resp.text))
|
|
1341
1391
|
|
|
1342
1392
|
request_id = resp.headers.get('x-request-id', 'na')
|
|
1343
1393
|
logger.debug('--- [Request] Start ---')
|
|
@@ -1485,7 +1535,13 @@ class ApiClient:
|
|
|
1485
1535
|
:param token: a valid token
|
|
1486
1536
|
:return:
|
|
1487
1537
|
"""
|
|
1488
|
-
|
|
1538
|
+
current_token = self.token
|
|
1539
|
+
self.token = token
|
|
1540
|
+
success, response = self.gen_request(req_type='get', path='/users/me')
|
|
1541
|
+
if not response.ok:
|
|
1542
|
+
# switch back to before
|
|
1543
|
+
self.token = current_token
|
|
1544
|
+
raise ValueError(f"Invalid API key provided. Error: {response.text}")
|
|
1489
1545
|
|
|
1490
1546
|
def login_api_key(self, api_key):
|
|
1491
1547
|
"""
|
|
@@ -1493,7 +1549,13 @@ class ApiClient:
|
|
|
1493
1549
|
:param api_key: a valid API key
|
|
1494
1550
|
:return:
|
|
1495
1551
|
"""
|
|
1552
|
+
current_token = self.token
|
|
1496
1553
|
self.token = api_key
|
|
1554
|
+
success, response = self.gen_request(req_type='get', path='/users/me')
|
|
1555
|
+
if not response.ok:
|
|
1556
|
+
# switch back to before
|
|
1557
|
+
self.token = current_token
|
|
1558
|
+
raise ValueError(f"Invalid API key provided. Error: {response.text}")
|
|
1497
1559
|
|
|
1498
1560
|
@property
|
|
1499
1561
|
def login_domain(self):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dtlpy
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.92.18
|
|
4
4
|
Summary: SDK and CLI for Dataloop platform
|
|
5
5
|
Home-page: https://github.com/dataloop-ai/dtlpy
|
|
6
6
|
Author: Dataloop Team
|
|
@@ -23,7 +23,7 @@ Requires-Dist: tqdm (>=4.63)
|
|
|
23
23
|
Requires-Dist: certifi (>=2020.12.5)
|
|
24
24
|
Requires-Dist: webvtt-py (==0.4.3)
|
|
25
25
|
Requires-Dist: aiohttp (>=3.8)
|
|
26
|
-
Requires-Dist: requests-toolbelt (>=0.
|
|
26
|
+
Requires-Dist: requests-toolbelt (>=1.0.0)
|
|
27
27
|
Requires-Dist: requests (>=2.25.0)
|
|
28
28
|
Requires-Dist: numpy (>=1.16.2)
|
|
29
29
|
Requires-Dist: pandas (>=0.24.2)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
dtlpy/__init__.py,sha256=
|
|
2
|
-
dtlpy/__version__.py,sha256=
|
|
1
|
+
dtlpy/__init__.py,sha256=judUZGmYQMFrva_nip8O371rvJ1BZnoL0fbU_1TX9CI,20194
|
|
2
|
+
dtlpy/__version__.py,sha256=ZdVvFV5PIAe2nMsSSrNOuWmp5sG9C_eg0iLY3frYIgw,20
|
|
3
3
|
dtlpy/exceptions.py,sha256=EQCKs3pwhwZhgMByQN3D3LpWpdxwcKPEEt-bIaDwURM,2871
|
|
4
|
-
dtlpy/new_instance.py,sha256=
|
|
4
|
+
dtlpy/new_instance.py,sha256=I4Gc658s-yUD0-gEiC2pRDKaADZPdr1dm67K4mkx5xw,10065
|
|
5
5
|
dtlpy/assets/__init__.py,sha256=D_hAa6NM8Zoy32sF_9b7m0b7I-BQEyBFg8-9Tg2WOeo,976
|
|
6
|
-
dtlpy/assets/lock_open.png,sha256=
|
|
6
|
+
dtlpy/assets/lock_open.png,sha256=BH9uyf5uYvgZrDpDw9qCUnT3UbkXG8XbeRmWDpWlV4M,18215
|
|
7
7
|
dtlpy/assets/main.py,sha256=N1JUsx79qnXI7Hx22C8JOzHJdGHxvrXeTx5UZAxvJfE,1380
|
|
8
8
|
dtlpy/assets/main_partial.py,sha256=d8Be4Whg9Tb2VFiT85-57_L9IvxRipQXiZ83SxFs0Ro,267
|
|
9
9
|
dtlpy/assets/mock.json,sha256=aByh4XlsFQJM2pOjmd7bd9zT1LSOj5pfutZDHwt8c_8,149
|
|
@@ -37,9 +37,6 @@ dtlpy/caches/cache.py,sha256=IqNaueml6aKU3_WAQ3lFfJP3qyXsvflZnAvA6vgboeM,16917
|
|
|
37
37
|
dtlpy/caches/dl_cache.py,sha256=aaqB0THK6eNmQ54SC6egb6z8sJE3ciKQ5cIHrQHe4r8,5695
|
|
38
38
|
dtlpy/caches/filesystem_cache.py,sha256=OrBqyEucSVp7g33c6R1BR3ICbkgQnwYWEDhQ7OxHy2Y,2737
|
|
39
39
|
dtlpy/caches/redis_cache.py,sha256=bgJgxgAXFR_TxPDvlLS4TKumFds-ihNf668JbPYUfpc,2331
|
|
40
|
-
dtlpy/callbacks/__init__.py,sha256=j3QTgKnQSNiVasjlTVIVl7hRQX-qlw36F9Fu_PKmktc,715
|
|
41
|
-
dtlpy/callbacks/piper_progress_reporter.py,sha256=L9OK-n6zqBP0SFhq0lrMXuMjf4uWfy-12jqbL5cd9FQ,1075
|
|
42
|
-
dtlpy/callbacks/progress_viewer.py,sha256=ZZw8ljXVP2kpndLRxOhY09dOgUN7Luop-4TUuT5nSDc,2314
|
|
43
40
|
dtlpy/dlp/__init__.py,sha256=QG_BxSqeic0foFBmzIkpZEF4EvxOZamknj2f5Cb6T6Q,868
|
|
44
41
|
dtlpy/dlp/cli_utilities.py,sha256=Kzr-AKbRlXLdGKY2RTUNm0U_vKHxyMOB17TQegeDMdM,16037
|
|
45
42
|
dtlpy/dlp/command_executor.py,sha256=JKtRKTwrKfkXHa1VuFhPw15FuwexBPq_9ANAu2pSyXs,32113
|
|
@@ -47,49 +44,49 @@ dtlpy/dlp/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
|
|
|
47
44
|
dtlpy/dlp/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
|
|
48
45
|
dtlpy/dlp/dlp.py,sha256=YjNBjeCDTXJ7tj8qdiGZ8lFb8DtPZl-FvViyjxt9xF8,4278
|
|
49
46
|
dtlpy/dlp/parser.py,sha256=p-TFaiAU2c3QkI97TXzL2LDR3Eq0hGDFrTc9J2jWLh4,30551
|
|
50
|
-
dtlpy/entities/__init__.py,sha256=
|
|
51
|
-
dtlpy/entities/analytic.py,sha256=
|
|
52
|
-
dtlpy/entities/annotation.py,sha256=
|
|
53
|
-
dtlpy/entities/annotation_collection.py,sha256=
|
|
54
|
-
dtlpy/entities/app.py,sha256=
|
|
47
|
+
dtlpy/entities/__init__.py,sha256=lOu2d39xvp-gOi-BEtGriXSLgBOYx6vfAOGYCFBzorc,4522
|
|
48
|
+
dtlpy/entities/analytic.py,sha256=5MpYDKPVsZ1MIy20Ju515RWed6P667j4TLxsan2gyNM,11925
|
|
49
|
+
dtlpy/entities/annotation.py,sha256=yk-JQzgzXvnDLFrOkmcHQfEtsiPqZeIisv80ksNB-f8,66912
|
|
50
|
+
dtlpy/entities/annotation_collection.py,sha256=CEYSBHhhDkC0VJdHsBSrA6TgdKGMcKeI3tFM40UJwS8,29838
|
|
51
|
+
dtlpy/entities/app.py,sha256=wJV_CJmEhKLXskpeKkaHHvh0tuKL7oK18wCu6eIHPXo,6751
|
|
55
52
|
dtlpy/entities/app_module.py,sha256=0UiAbBX1q8iEImi3nY7ySWZZHoRRwu0qUXmyXmgVAc4,3645
|
|
56
53
|
dtlpy/entities/artifact.py,sha256=wtLtBuidOPbnba0ok40JyunCCIBGbAl4bP_ebK39Kk4,5711
|
|
57
|
-
dtlpy/entities/assignment.py,sha256=
|
|
58
|
-
dtlpy/entities/base_entity.py,sha256=
|
|
54
|
+
dtlpy/entities/assignment.py,sha256=Dc1QcfVf67GGcmDDi4ubESDuPkSgjXqdqjTBQ31faUM,14722
|
|
55
|
+
dtlpy/entities/base_entity.py,sha256=i83KrtAz6dX4t8JEiUimLI5ZRrN0VnoUWKG2Zz49N5w,6518
|
|
59
56
|
dtlpy/entities/bot.py,sha256=is3NUCnPg56HSjsHIvFcVkymValMqDV0uHRDC1Ib-ds,3819
|
|
60
57
|
dtlpy/entities/codebase.py,sha256=pwRkAq2GV0wvmzshg89IAmE-0I2Wsy_-QNOu8OV8uqc,8999
|
|
61
|
-
dtlpy/entities/command.py,sha256=
|
|
62
|
-
dtlpy/entities/dataset.py,sha256=
|
|
58
|
+
dtlpy/entities/command.py,sha256=ARu8ttk-C7_Ice7chRyTtyOtakBTF09FC04mEk73SO8,5010
|
|
59
|
+
dtlpy/entities/dataset.py,sha256=87o6FA9MYCIc0KBCUqQr_VsX-W2mGbJn64JvD-zp-EA,47354
|
|
63
60
|
dtlpy/entities/directory_tree.py,sha256=Rni6pLSWytR6yeUPgEdCCRfTg_cqLOdUc9uCqz9KT-Q,1186
|
|
64
|
-
dtlpy/entities/dpk.py,sha256=
|
|
61
|
+
dtlpy/entities/dpk.py,sha256=3iL-n8a8HoWqUusAepfs3v_kDP7b_H0I_D3YucO6vuE,17325
|
|
65
62
|
dtlpy/entities/driver.py,sha256=O_QdK1EaLjQyQkmvKsmkNgmvmMb1mPjKnJGxK43KrOA,7197
|
|
66
|
-
dtlpy/entities/execution.py,sha256=
|
|
63
|
+
dtlpy/entities/execution.py,sha256=WBiAws-6wZnQQ3y9wyvOeexA3OjxfaRdwDu5dSFYL1g,13420
|
|
67
64
|
dtlpy/entities/feature.py,sha256=9fFjD0W57anOVSAVU55ypxN_WTCsWTG03Wkc3cAAj78,3732
|
|
68
|
-
dtlpy/entities/feature_set.py,sha256=
|
|
69
|
-
dtlpy/entities/filters.py,sha256=
|
|
70
|
-
dtlpy/entities/integration.py,sha256=
|
|
71
|
-
dtlpy/entities/item.py,sha256=
|
|
65
|
+
dtlpy/entities/feature_set.py,sha256=niw4MkmrDbD_LWQu1X30uE6U4DCzmFhPTaYeZ6VZDB0,4443
|
|
66
|
+
dtlpy/entities/filters.py,sha256=Xkiu9IKR-MX2su6wVr5seQ4mKwFh0IFygtsVQkfoYSE,22348
|
|
67
|
+
dtlpy/entities/integration.py,sha256=CA5F1eQCGE_4c_Kry4nWRdeyjHctNnvexcDXg_M5HLU,5734
|
|
68
|
+
dtlpy/entities/item.py,sha256=3m9T5Y4xrfiNhgMQf_gWzwI3Ol_6U8LE_u5uWtims2M,29704
|
|
72
69
|
dtlpy/entities/label.py,sha256=ycDYavIgKhz806plIX-64c07_TeHpDa-V7LnfFVe4Rg,3869
|
|
73
70
|
dtlpy/entities/links.py,sha256=FAmEwHtsrqKet3c0UHH9u_gHgG6_OwF1-rl4xK7guME,2516
|
|
74
71
|
dtlpy/entities/message.py,sha256=ApJuaKEqxATpXjNYUjGdYPu3ibQzEMo8-LtJ_4xAcPI,5865
|
|
75
72
|
dtlpy/entities/model.py,sha256=GXfQoLa06GSsymBiRTqI2FYegLwyrc5S8lWMwGWxhjw,24959
|
|
76
|
-
dtlpy/entities/node.py,sha256=
|
|
77
|
-
dtlpy/entities/ontology.py,sha256=
|
|
73
|
+
dtlpy/entities/node.py,sha256=yPPYDLtNMc6vZbbf4FIffY86y7tkaTvYm42Jb7k3Ofk,39617
|
|
74
|
+
dtlpy/entities/ontology.py,sha256=ok4p3sLBc_SS5hs2gZr5-gbblrveM7qSIX4z67QSKeQ,31967
|
|
78
75
|
dtlpy/entities/organization.py,sha256=AMkx8hNIIIjnu5pYlNjckMRuKt6H3lnOAqtEynkr7wg,9893
|
|
79
76
|
dtlpy/entities/package.py,sha256=EA5cB3nFBlsbxVK-QroZILjol2bYSVGqCby-mOyJJjQ,26353
|
|
80
77
|
dtlpy/entities/package_defaults.py,sha256=wTD7Z7rGYjVy8AcUxTFEnkOkviiJaLVZYvduiUBKNZo,211
|
|
81
|
-
dtlpy/entities/package_function.py,sha256=
|
|
82
|
-
dtlpy/entities/package_module.py,sha256=
|
|
78
|
+
dtlpy/entities/package_function.py,sha256=M42Kvw9A8b6msAkv-wRNAQg_-UC2bejniCjeKDugudc,6314
|
|
79
|
+
dtlpy/entities/package_module.py,sha256=cOkIITATkzzCQpE0sdPiBUisAz8ImlPG2YGZ0K7SypA,5151
|
|
83
80
|
dtlpy/entities/package_slot.py,sha256=XBwCodQe618sQm0bmx46Npo94mEk-zUV7ZX0mDRcsD8,3946
|
|
84
81
|
dtlpy/entities/paged_entities.py,sha256=A6_D0CUJsN52dBG6yn-oHHzjuVDkBNejTG5r-KxWOxI,5848
|
|
85
|
-
dtlpy/entities/pipeline.py,sha256=
|
|
86
|
-
dtlpy/entities/pipeline_execution.py,sha256=
|
|
82
|
+
dtlpy/entities/pipeline.py,sha256=OrRybxEa29S4sKtl7RTdf6kRgnQi90n4wlN4OsMJJLk,20671
|
|
83
|
+
dtlpy/entities/pipeline_execution.py,sha256=XCXlBAHFYVL2HajE71hK-bPxI4gTwZvg5SKri4BgyRA,9928
|
|
87
84
|
dtlpy/entities/project.py,sha256=ZUx8zA3mr6N145M62R3UDPCCzO1vxfyWO6vjES-bO-g,14653
|
|
88
|
-
dtlpy/entities/prompt_item.py,sha256=
|
|
89
|
-
dtlpy/entities/recipe.py,sha256=
|
|
85
|
+
dtlpy/entities/prompt_item.py,sha256=6fswLddnVKPLyGElgUCVPIZUYAZ-U0eor3nxZqecKHY,12335
|
|
86
|
+
dtlpy/entities/recipe.py,sha256=Q1HtYgind3bEe-vnDZWhw6H-rcIAGhkGHPRWtLIkPSE,11917
|
|
90
87
|
dtlpy/entities/reflect_dict.py,sha256=2NaSAL-CO0T0FYRYFQlaSpbsoLT2Q18AqdHgQSLX5Y4,3273
|
|
91
88
|
dtlpy/entities/resource_execution.py,sha256=1HuVV__U4jAUOtOkWlWImnM3Yts8qxMSAkMA9sBhArY,5033
|
|
92
|
-
dtlpy/entities/service.py,sha256=
|
|
89
|
+
dtlpy/entities/service.py,sha256=OaEcKsGgapwWRIzBUU8wvJqd0h_mpY7ICugVjzV7pDA,30211
|
|
93
90
|
dtlpy/entities/setting.py,sha256=koydO8b0_bWVNklR2vpsXswxzBo8q83XtGk3wkma0MI,8522
|
|
94
91
|
dtlpy/entities/task.py,sha256=XHiEqZYFlrDCtmw1MXsysjoBLdIzAk7coMrVk8bNIiE,19534
|
|
95
92
|
dtlpy/entities/time_series.py,sha256=336jWNckjuSn0G29WJFetB7nBoFAKqs4VH9_IB4m4FE,4017
|
|
@@ -148,7 +145,7 @@ dtlpy/miscellaneous/list_print.py,sha256=leEg3RodgYfH5t_0JG8VuM8NiesR8sJLK_mRStt
|
|
|
148
145
|
dtlpy/miscellaneous/zipping.py,sha256=GMdPhAeHQXeMS5ClaiKWMJWVYQLBLAaJUWxvdYrL4Ro,5337
|
|
149
146
|
dtlpy/ml/__init__.py,sha256=vPkyXpc9kcWWZ_PxyPEOsjKBJdEbowLkZr8FZIb_OBM,799
|
|
150
147
|
dtlpy/ml/base_feature_extractor_adapter.py,sha256=iiEGYAx0Rdn4K46H_FlKrAv3ebTXHSxNVAmio0BxhaI,1178
|
|
151
|
-
dtlpy/ml/base_model_adapter.py,sha256=
|
|
148
|
+
dtlpy/ml/base_model_adapter.py,sha256=6HwWkMCsRD9TqmDviMa5glfpXbS4DRhKlXMFnFh4-tA,47828
|
|
152
149
|
dtlpy/ml/metrics.py,sha256=BG2E-1Mvjv2e2No9mIJKVmvzqBvLqytKcw3hA7wVUNc,20037
|
|
153
150
|
dtlpy/ml/predictions_utils.py,sha256=He_84U14oS2Ss7T_-Zj5GDiBZwS-GjMPURUh7u7DjF8,12484
|
|
154
151
|
dtlpy/ml/summary_writer.py,sha256=dehDi8zmGC1sAGyy_3cpSWGXoGQSiQd7bL_Thoo8yIs,2784
|
|
@@ -156,45 +153,45 @@ dtlpy/ml/train_utils.py,sha256=R-BHKRfqDoLLhFyLzsRFyJ4E-8iedj9s9oZqy3IO2rg,2404
|
|
|
156
153
|
dtlpy/repositories/__init__.py,sha256=_p6RafEniBXbeTAbz8efnIr4G4mCwV9x6LEkXhTRWUE,1949
|
|
157
154
|
dtlpy/repositories/analytics.py,sha256=dQPCYTPAIuyfVI_ppR49W7_GBj0033feIm9Gd7LW1V0,2966
|
|
158
155
|
dtlpy/repositories/annotations.py,sha256=E7iHo8UwDAhdulqh0lGr3fGQ-TSwZXXGsEXZA-WJ_NA,35780
|
|
159
|
-
dtlpy/repositories/apps.py,sha256=
|
|
156
|
+
dtlpy/repositories/apps.py,sha256=VamO007F1rW7gPdMqPE-pFMaqXz4S5Xm9pY3GD9ITIY,15555
|
|
160
157
|
dtlpy/repositories/artifacts.py,sha256=Ke2ustTNw-1eQ0onLsWY7gL2aChjXPAX5p1uQ_EzMbo,19081
|
|
161
|
-
dtlpy/repositories/assignments.py,sha256=
|
|
158
|
+
dtlpy/repositories/assignments.py,sha256=1VwJZ7ctQe1iaDDDpeYDgoj2G-TCgzolVLUEqUocd2w,25506
|
|
162
159
|
dtlpy/repositories/bots.py,sha256=q1SqH01JHloljKxknhHU09psV1vQx9lPhu3g8mBBeRg,8104
|
|
163
160
|
dtlpy/repositories/codebases.py,sha256=pvcZxdrq0-zWysVbdXjUOhnfcF6hJD8v5VclNZ-zhGA,24668
|
|
164
|
-
dtlpy/repositories/commands.py,sha256=
|
|
161
|
+
dtlpy/repositories/commands.py,sha256=8GJU2OQTH0grHFQE30l0UVqaPAwio4psk4VpiYklkFk,5589
|
|
165
162
|
dtlpy/repositories/compositions.py,sha256=H417BvlQAiWr5NH2eANFke6CfEO5o7DSvapYpf7v5Hk,2150
|
|
166
|
-
dtlpy/repositories/datasets.py,sha256=
|
|
163
|
+
dtlpy/repositories/datasets.py,sha256=Rauh-apKSKP7cWS99uhiZYZ-679qNpPm7HoMkMzyJ-s,51789
|
|
167
164
|
dtlpy/repositories/downloader.py,sha256=pNwL7Nid8xmOyYNiv4DB_WY4RoKlxQ-U9nG2V99Gyr8,41342
|
|
168
|
-
dtlpy/repositories/dpks.py,sha256=
|
|
165
|
+
dtlpy/repositories/dpks.py,sha256=b9i-K4HHBA-7T7AZdICFfMUWtqr9--igVwOq0TKyq7Y,16612
|
|
169
166
|
dtlpy/repositories/drivers.py,sha256=fF0UuHCyBzop8pHfryex23mf0kVFAkqzNdOmwBbaWxY,10204
|
|
170
|
-
dtlpy/repositories/executions.py,sha256=
|
|
171
|
-
dtlpy/repositories/feature_sets.py,sha256=
|
|
172
|
-
dtlpy/repositories/features.py,sha256=
|
|
167
|
+
dtlpy/repositories/executions.py,sha256=M84nhpFPPZq4fQeJ2m_sv6JT4NE2WDRMOXWr451J0bU,30403
|
|
168
|
+
dtlpy/repositories/feature_sets.py,sha256=UowMDAl_CRefRB5oZzubnsjU_OFgiPPdQXn8q2j4Kuw,9666
|
|
169
|
+
dtlpy/repositories/features.py,sha256=7xA2ihEuNgZD7HBQMMGLWpsS2V_3PgieKW2YAk1OeUU,9712
|
|
173
170
|
dtlpy/repositories/integrations.py,sha256=gNQmw5ykFtBaimdxUkzCXQqefZaM8yQPnxWZkIJK7ww,11666
|
|
174
171
|
dtlpy/repositories/items.py,sha256=DqJ3g9bc4OLMm9KqI-OebXbr-zcEiohO1wGZJ1uE2Lg,37874
|
|
175
172
|
dtlpy/repositories/messages.py,sha256=zYcoz8Us6j8Tb5Z7luJuvtO9xSRTuOCS7pl-ztt97Ac,3082
|
|
176
|
-
dtlpy/repositories/models.py,sha256=
|
|
173
|
+
dtlpy/repositories/models.py,sha256=o0S29Y7HF6RXV06N6MDXCozolzfK1X4JR-3YRODBBxo,34829
|
|
177
174
|
dtlpy/repositories/nodes.py,sha256=xXJm_YA0vDUn0dVvaGeq6ORM0vI3YXvfjuylvGRtkxo,3061
|
|
178
175
|
dtlpy/repositories/ontologies.py,sha256=unnMhD2isR9DVE5S8Fg6fSDf1ZZ5Xemxxufx4LEUT3w,19577
|
|
179
176
|
dtlpy/repositories/organizations.py,sha256=6ijUDFbsogfRul1g_vUB5AZOb41MRmV5NhNU7WLHt3A,22825
|
|
180
|
-
dtlpy/repositories/packages.py,sha256=
|
|
181
|
-
dtlpy/repositories/pipeline_executions.py,sha256=
|
|
177
|
+
dtlpy/repositories/packages.py,sha256=QhkXMZkpseCt0pDropJuqoHJL0RMa5plk8AN0V3w6Nk,86807
|
|
178
|
+
dtlpy/repositories/pipeline_executions.py,sha256=zQNRejj23r5q1cSp88KMoeOGUOUbbg3Yi-ER7qZfyF8,16781
|
|
182
179
|
dtlpy/repositories/pipelines.py,sha256=VDAOsGbgD1_AKdMrJl_qB3gxPs7f3pwUnPx0pT1iAWk,23977
|
|
183
180
|
dtlpy/repositories/projects.py,sha256=tZyFLqVs-8ggTIi5echlX7XdGOJGW4LzKuXke7jkRnw,22140
|
|
184
181
|
dtlpy/repositories/recipes.py,sha256=ZZDhHn9g28C99bsf0nFaIpVYn6f6Jisz9upkHEkeaYY,15843
|
|
185
182
|
dtlpy/repositories/resource_executions.py,sha256=PyzsbdJxz6jf17Gx13GZmqdu6tZo3TTVv-DypnJ_sY0,5374
|
|
186
183
|
dtlpy/repositories/schema.py,sha256=kTKDrbwm7BfQnBAK81LpAl9ChNFdyUweSLNazlJJhjk,3953
|
|
187
|
-
dtlpy/repositories/services.py,sha256=
|
|
184
|
+
dtlpy/repositories/services.py,sha256=8hu6CgIyGQHOOlBmZmmM-oY8i-adU_99lSN46FGvvkc,67421
|
|
188
185
|
dtlpy/repositories/settings.py,sha256=pvqNse0ANCdU3NSLJEzHco-PZq__OIsPSPVJveB9E4I,12296
|
|
189
|
-
dtlpy/repositories/tasks.py,sha256=
|
|
186
|
+
dtlpy/repositories/tasks.py,sha256=nA3rODvS8Q361xDmPXII-VPzktzoxbAApxTkzC5wv4M,48601
|
|
190
187
|
dtlpy/repositories/times_series.py,sha256=m-bKFEgiZ13yQNelDjBfeXMUy_HgsPD_JAHj1GVx9fU,11420
|
|
191
188
|
dtlpy/repositories/triggers.py,sha256=izdNyCN1gDc5uo7AXntso0HSMTDIzGFUp-dSEz8cn_U,21990
|
|
192
189
|
dtlpy/repositories/upload_element.py,sha256=4CDZRKLubanOP0ZyGwxAHTtl6GLzwAyRAIm-PLYt0ck,10140
|
|
193
|
-
dtlpy/repositories/uploader.py,sha256=
|
|
190
|
+
dtlpy/repositories/uploader.py,sha256=iOlDYWIMy_h1Rbd7Mfug1I0e93dBJ0SxqP_BOwqYQPQ,30697
|
|
194
191
|
dtlpy/repositories/webhooks.py,sha256=IIpxOJ-7KeQp1TY9aJZz-FuycSjAoYx0TDk8z86KAK8,9033
|
|
195
192
|
dtlpy/services/__init__.py,sha256=VfVJy2otIrDra6i7Sepjyez2ujiE6171ChQZp-YgxsM,904
|
|
196
193
|
dtlpy/services/aihttp_retry.py,sha256=tgntZsAY0dW9v08rkjX1T5BLNDdDd8svtgn7nH8DSGU,5022
|
|
197
|
-
dtlpy/services/api_client.py,sha256=
|
|
194
|
+
dtlpy/services/api_client.py,sha256=EG4Spm163N7Ig99tkubSYqEGQQBElK2jFtJGAek96OY,68145
|
|
198
195
|
dtlpy/services/api_reference.py,sha256=cW-B3eoi9Xs3AwI87_Kr6GV_E6HPoC73aETFaGz3A-0,1515
|
|
199
196
|
dtlpy/services/async_utils.py,sha256=lfpkTkRUvQoMTxaRZBHbPt5e43qdvpCGDe_-KcY2Jps,2810
|
|
200
197
|
dtlpy/services/calls_counter.py,sha256=gr0io5rIsO5-7Cgc8neA1vK8kUtYhgFPmDQ2jXtiZZs,1036
|
|
@@ -222,19 +219,19 @@ dtlpy/utilities/reports/report.py,sha256=3nEsNnIWmdPEsd21nN8vMMgaZVcPKn9iawKTTeO
|
|
|
222
219
|
dtlpy/utilities/videos/__init__.py,sha256=SV3w51vfPuGBxaMeNemx6qEMHw_C4lLpWNGXMvdsKSY,734
|
|
223
220
|
dtlpy/utilities/videos/video_player.py,sha256=LCxg0EZ_DeuwcT7U_r7MRC6Q19s0xdFb7x5Gk39PRms,24072
|
|
224
221
|
dtlpy/utilities/videos/videos.py,sha256=Dj916B4TQRIhI7HZVevl3foFrCsPp0eeWwvGbgX3-_A,21875
|
|
225
|
-
dtlpy-1.
|
|
226
|
-
dtlpy-1.
|
|
227
|
-
dtlpy-1.
|
|
222
|
+
dtlpy-1.92.18.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
|
|
223
|
+
dtlpy-1.92.18.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
|
|
224
|
+
dtlpy-1.92.18.data/scripts/dlp.py,sha256=tEokRaDINISXnq8yNx_CBw1qM5uwjYiZoJOYGqWB3RU,4267
|
|
228
225
|
tests/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
229
226
|
tests/assets/models_flow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
230
227
|
tests/assets/models_flow/failedmain.py,sha256=n8F4eu_u7JPrJ1zedbJPvv9e3lHb3ihoErqrBIcseEc,1847
|
|
231
228
|
tests/assets/models_flow/main.py,sha256=87O3-JaWcC6m_kA39sqPhX70_VCBzzbLWmX2YQFilJw,1873
|
|
232
229
|
tests/assets/models_flow/main_model.py,sha256=Hl_tv7Q6KaRL3yLkpUoLMRqu5-ab1QsUYPL6RPEoamw,2042
|
|
233
230
|
tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
234
|
-
tests/features/environment.py,sha256=
|
|
235
|
-
dtlpy-1.
|
|
236
|
-
dtlpy-1.
|
|
237
|
-
dtlpy-1.
|
|
238
|
-
dtlpy-1.
|
|
239
|
-
dtlpy-1.
|
|
240
|
-
dtlpy-1.
|
|
231
|
+
tests/features/environment.py,sha256=dyYLrhyaKFnobrz7jD-vgmmxjpL5HDwjQCbzOZa37dM,16261
|
|
232
|
+
dtlpy-1.92.18.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
233
|
+
dtlpy-1.92.18.dist-info/METADATA,sha256=7wSILtILaQxUkE01nn3j0a-IMSZ28H74JUoDiAITAEo,2976
|
|
234
|
+
dtlpy-1.92.18.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
|
235
|
+
dtlpy-1.92.18.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
|
|
236
|
+
dtlpy-1.92.18.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
|
|
237
|
+
dtlpy-1.92.18.dist-info/RECORD,,
|