dtlpy 1.105.6__py3-none-any.whl → 1.106.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dtlpy/__init__.py +0 -8
- dtlpy/__version__.py +1 -1
- dtlpy/entities/annotation.py +11 -0
- dtlpy/entities/annotation_definitions/box.py +5 -62
- dtlpy/entities/compute.py +1 -0
- dtlpy/entities/dataset.py +43 -11
- dtlpy/entities/item.py +16 -3
- dtlpy/entities/prompt_item.py +9 -0
- dtlpy/entities/service.py +0 -6
- dtlpy/new_instance.py +0 -3
- dtlpy/repositories/annotations.py +26 -0
- dtlpy/repositories/datasets.py +45 -9
- dtlpy/repositories/downloader.py +10 -3
- dtlpy/repositories/integrations.py +104 -11
- dtlpy/repositories/items.py +40 -2
- dtlpy/repositories/projects.py +0 -8
- dtlpy/repositories/settings.py +0 -13
- dtlpy/repositories/tasks.py +33 -0
- dtlpy/services/api_client.py +0 -53
- dtlpy/services/check_sdk.py +0 -26
- {dtlpy-1.105.6.dist-info → dtlpy-1.106.5.dist-info}/METADATA +1 -1
- {dtlpy-1.105.6.dist-info → dtlpy-1.106.5.dist-info}/RECORD +29 -29
- {dtlpy-1.105.6.data → dtlpy-1.106.5.data}/scripts/dlp +0 -0
- {dtlpy-1.105.6.data → dtlpy-1.106.5.data}/scripts/dlp.bat +0 -0
- {dtlpy-1.105.6.data → dtlpy-1.106.5.data}/scripts/dlp.py +0 -0
- {dtlpy-1.105.6.dist-info → dtlpy-1.106.5.dist-info}/LICENSE +0 -0
- {dtlpy-1.105.6.dist-info → dtlpy-1.106.5.dist-info}/WHEEL +0 -0
- {dtlpy-1.105.6.dist-info → dtlpy-1.106.5.dist-info}/entry_points.txt +0 -0
- {dtlpy-1.105.6.dist-info → dtlpy-1.106.5.dist-info}/top_level.txt +0 -0
dtlpy/__init__.py
CHANGED
|
@@ -176,11 +176,6 @@ try:
|
|
|
176
176
|
except Exception:
|
|
177
177
|
logger.debug("Failed to check SDK! Continue without")
|
|
178
178
|
|
|
179
|
-
try:
|
|
180
|
-
check_sdk.resolve_platform_settings(client_api=client_api, settings=settings)
|
|
181
|
-
except Exception:
|
|
182
|
-
pass
|
|
183
|
-
|
|
184
179
|
verbose = client_api.verbose
|
|
185
180
|
login = client_api.login
|
|
186
181
|
logout = client_api.logout
|
|
@@ -195,7 +190,6 @@ info = client_api.info
|
|
|
195
190
|
cache_state = client_api.cache_state
|
|
196
191
|
attributes_mode = client_api.attributes_mode
|
|
197
192
|
sdk_cache = client_api.sdk_cache
|
|
198
|
-
platform_settings = client_api.platform_settings
|
|
199
193
|
|
|
200
194
|
|
|
201
195
|
def get_secret(secret):
|
|
@@ -329,8 +323,6 @@ INSTANCE_CATALOG_HIGHMEM_XS = InstanceCatalog.HIGHMEM_XS
|
|
|
329
323
|
INSTANCE_CATALOG_HIGHMEM_S = InstanceCatalog.HIGHMEM_S
|
|
330
324
|
INSTANCE_CATALOG_HIGHMEM_M = InstanceCatalog.HIGHMEM_M
|
|
331
325
|
INSTANCE_CATALOG_HIGHMEM_L = InstanceCatalog.HIGHMEM_L
|
|
332
|
-
INSTANCE_CATALOG_GPU_K80_S = InstanceCatalog.GPU_K80_S
|
|
333
|
-
INSTANCE_CATALOG_GPU_K80_M = InstanceCatalog.GPU_K80_M
|
|
334
326
|
INSTANCE_CATALOG_GPU_T4_S = InstanceCatalog.GPU_T4_S
|
|
335
327
|
INSTANCE_CATALOG_GPU_T4_M = InstanceCatalog.GPU_T4_M
|
|
336
328
|
|
dtlpy/__version__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.
|
|
1
|
+
version = '1.106.5'
|
dtlpy/entities/annotation.py
CHANGED
|
@@ -1634,6 +1634,17 @@ class Annotation(entities.BaseEntity):
|
|
|
1634
1634
|
|
|
1635
1635
|
return _json
|
|
1636
1636
|
|
|
1637
|
+
def task_scores(self, task_id: str, page_offset: int = None, page_size: int = None):
|
|
1638
|
+
"""
|
|
1639
|
+
Get the scores of the annotation in a specific task.
|
|
1640
|
+
:param task_id: The ID of the task.
|
|
1641
|
+
:param page_offset: The page offset.
|
|
1642
|
+
:param page_size: The page size.
|
|
1643
|
+
:return: page of scores
|
|
1644
|
+
"""
|
|
1645
|
+
return self.annotations.task_scores(annotation_id=self.id ,task_id=task_id, page_offset=page_offset, page_size=page_size)
|
|
1646
|
+
|
|
1647
|
+
|
|
1637
1648
|
|
|
1638
1649
|
@attr.s
|
|
1639
1650
|
class FrameAnnotation(entities.BaseEntity):
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import copy
|
|
2
|
-
|
|
3
1
|
import numpy as np
|
|
4
2
|
from . import BaseAnnotationDefinition
|
|
5
3
|
from .polygon import Polygon
|
|
6
|
-
import warnings
|
|
7
4
|
|
|
8
5
|
|
|
9
6
|
class Box(BaseAnnotationDefinition):
|
|
@@ -45,72 +42,21 @@ class Box(BaseAnnotationDefinition):
|
|
|
45
42
|
self.bottom_left = [left, bottom]
|
|
46
43
|
self.bottom_right = [right, bottom]
|
|
47
44
|
self.label = label
|
|
48
|
-
self._four_points = self._rotate_around_point() if self.is_rotated else [self.top_left,
|
|
49
|
-
self.bottom_left,
|
|
50
|
-
self.bottom_right,
|
|
51
|
-
self.top_right]
|
|
52
|
-
|
|
53
|
-
@property
|
|
54
|
-
def is_rotated(self):
|
|
55
|
-
return self.angle is not None and self.angle != 0
|
|
56
45
|
|
|
57
46
|
@property
|
|
58
47
|
def x(self):
|
|
59
|
-
if self._box_points_setting():
|
|
60
|
-
return [x_point[0] for x_point in self._four_points]
|
|
61
48
|
return [self.left, self.right]
|
|
62
49
|
|
|
63
50
|
@property
|
|
64
51
|
def y(self):
|
|
65
|
-
if self._box_points_setting():
|
|
66
|
-
return [y_point[1] for y_point in self._four_points]
|
|
67
52
|
return [self.top, self.bottom]
|
|
68
53
|
|
|
69
54
|
@property
|
|
70
55
|
def geo(self):
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
[self.left, self.top],
|
|
76
|
-
[self.right, self.bottom]
|
|
77
|
-
]
|
|
78
|
-
return res
|
|
79
|
-
|
|
80
|
-
def _box_points_setting(self):
|
|
81
|
-
res = False
|
|
82
|
-
if self._annotation and self._annotation.item:
|
|
83
|
-
item = self._annotation.item
|
|
84
|
-
project_id = item.project_id if item.project_id else item.project.id
|
|
85
|
-
settings_dict = item._client_api.platform_settings.settings.get('4ptBox', None)
|
|
86
|
-
if settings_dict is not None:
|
|
87
|
-
if project_id in settings_dict:
|
|
88
|
-
res = settings_dict.get(project_id, None)
|
|
89
|
-
elif '*' in settings_dict:
|
|
90
|
-
res = settings_dict.get('*', None)
|
|
91
|
-
return res
|
|
92
|
-
|
|
93
|
-
def _rotate_points(self, points):
|
|
94
|
-
angle = np.radians(self.angle)
|
|
95
|
-
rotation_matrix = np.asarray([[np.cos(angle), -np.sin(angle)],
|
|
96
|
-
[np.sin(angle), np.cos(angle)]])
|
|
97
|
-
pts2 = np.asarray([rotation_matrix.dot(pt)[:2] for pt in points])
|
|
98
|
-
return pts2
|
|
99
|
-
|
|
100
|
-
def _translate(self, points, translate_x, translate_y=None):
|
|
101
|
-
translation_matrix = np.asarray([[1, 0, translate_x],
|
|
102
|
-
[0, 1, translate_y],
|
|
103
|
-
[0, 0, 1]])
|
|
104
|
-
pts2 = np.asarray([translation_matrix.dot(list(pt) + [1])[:2] for pt in points])
|
|
105
|
-
return pts2
|
|
106
|
-
|
|
107
|
-
def _rotate_around_point(self):
|
|
108
|
-
points = copy.deepcopy(self.four_points)
|
|
109
|
-
center = [((self.left + self.right) / 2), ((self.top + self.bottom) / 2)]
|
|
110
|
-
centerized = self._translate(points, -center[0], -center[1])
|
|
111
|
-
rotated = self._rotate_points(centerized)
|
|
112
|
-
moved = self._translate(rotated, center[0], center[1])
|
|
113
|
-
return moved
|
|
56
|
+
return [
|
|
57
|
+
[self.left, self.top],
|
|
58
|
+
[self.right, self.bottom]
|
|
59
|
+
]
|
|
114
60
|
|
|
115
61
|
@property
|
|
116
62
|
def four_points(self):
|
|
@@ -140,10 +86,7 @@ class Box(BaseAnnotationDefinition):
|
|
|
140
86
|
thickness = 2
|
|
141
87
|
|
|
142
88
|
# draw annotation
|
|
143
|
-
|
|
144
|
-
points = self._rotate_around_point()
|
|
145
|
-
else:
|
|
146
|
-
points = self.four_points
|
|
89
|
+
points = self.four_points
|
|
147
90
|
|
|
148
91
|
# create image to draw on
|
|
149
92
|
if alpha != 1:
|
dtlpy/entities/compute.py
CHANGED
dtlpy/entities/dataset.py
CHANGED
|
@@ -516,6 +516,23 @@ class Dataset(entities.BaseEntity):
|
|
|
516
516
|
return self.datasets.update(dataset=self,
|
|
517
517
|
system_metadata=system_metadata)
|
|
518
518
|
|
|
519
|
+
def unlock(self):
|
|
520
|
+
"""
|
|
521
|
+
Unlock dataset
|
|
522
|
+
|
|
523
|
+
**Prerequisites**: You must be an *owner* or *developer* to use this method.
|
|
524
|
+
|
|
525
|
+
:return: Dataset object
|
|
526
|
+
:rtype: dtlpy.entities.dataset.Dataset
|
|
527
|
+
|
|
528
|
+
**Example**:
|
|
529
|
+
|
|
530
|
+
.. code-block:: python
|
|
531
|
+
|
|
532
|
+
dataset = dataset.unlock()
|
|
533
|
+
"""
|
|
534
|
+
return self.datasets.unlock(dataset=self)
|
|
535
|
+
|
|
519
536
|
def set_readonly(self, state: bool):
|
|
520
537
|
"""
|
|
521
538
|
Set dataset readonly mode
|
|
@@ -607,7 +624,8 @@ class Dataset(entities.BaseEntity):
|
|
|
607
624
|
export_png_files=False,
|
|
608
625
|
filter_output_annotations=False,
|
|
609
626
|
alpha=1,
|
|
610
|
-
export_version=ExportVersion.V1
|
|
627
|
+
export_version=ExportVersion.V1,
|
|
628
|
+
dataset_lock=False
|
|
611
629
|
):
|
|
612
630
|
"""
|
|
613
631
|
Download dataset by filters.
|
|
@@ -621,6 +639,7 @@ class Dataset(entities.BaseEntity):
|
|
|
621
639
|
:param list(dtlpy.entities.annotation.ViewAnnotationOptions) annotation_options: download annotations options: list(dl.ViewAnnotationOptions)
|
|
622
640
|
:param dtlpy.entities.filters.Filters annotation_filters: Filters entity to filter annotations for download
|
|
623
641
|
:param bool overwrite: optional - default = False
|
|
642
|
+
:param bool dataset_lock: optional - default = False
|
|
624
643
|
:param int thickness: optional - line thickness, if -1 annotation will be filled, default =1
|
|
625
644
|
:param bool with_text: optional - add text to annotations, default = False
|
|
626
645
|
:param str remote_path: DEPRECATED and ignored
|
|
@@ -642,7 +661,8 @@ class Dataset(entities.BaseEntity):
|
|
|
642
661
|
overwrite=False,
|
|
643
662
|
thickness=1,
|
|
644
663
|
with_text=False,
|
|
645
|
-
alpha=1
|
|
664
|
+
alpha=1,
|
|
665
|
+
dataset_lock=False
|
|
646
666
|
)
|
|
647
667
|
"""
|
|
648
668
|
|
|
@@ -660,7 +680,8 @@ class Dataset(entities.BaseEntity):
|
|
|
660
680
|
export_png_files=export_png_files,
|
|
661
681
|
filter_output_annotations=filter_output_annotations,
|
|
662
682
|
alpha=alpha,
|
|
663
|
-
export_version=export_version
|
|
683
|
+
export_version=export_version,
|
|
684
|
+
dataset_lock=dataset_lock
|
|
664
685
|
)
|
|
665
686
|
|
|
666
687
|
def export(self,
|
|
@@ -671,7 +692,8 @@ class Dataset(entities.BaseEntity):
|
|
|
671
692
|
include_feature_vectors: bool = False,
|
|
672
693
|
include_annotations: bool = False,
|
|
673
694
|
export_type: ExportType = ExportType.JSON,
|
|
674
|
-
timeout: int = 0
|
|
695
|
+
timeout: int = 0,
|
|
696
|
+
dataset_lock: bool = False):
|
|
675
697
|
"""
|
|
676
698
|
Export dataset items and annotations.
|
|
677
699
|
|
|
@@ -685,6 +707,7 @@ class Dataset(entities.BaseEntity):
|
|
|
685
707
|
:param dtlpy.entities.filters.Filters feature_vector_filters: Filters entity
|
|
686
708
|
:param bool include_feature_vectors: Include item feature vectors in the export
|
|
687
709
|
:param bool include_annotations: Include item annotations in the export
|
|
710
|
+
:param bool dataset_lock: Make dataset readonly during the export
|
|
688
711
|
:param entities.ExportType export_type: Type of export ('json' or 'zip')
|
|
689
712
|
:param int timeout: Maximum time in seconds to wait for the export to complete
|
|
690
713
|
:return: Exported item
|
|
@@ -708,7 +731,8 @@ class Dataset(entities.BaseEntity):
|
|
|
708
731
|
include_feature_vectors=include_feature_vectors,
|
|
709
732
|
include_annotations=include_annotations,
|
|
710
733
|
export_type=export_type,
|
|
711
|
-
timeout=timeout
|
|
734
|
+
timeout=timeout,
|
|
735
|
+
dataset_lock=dataset_lock)
|
|
712
736
|
|
|
713
737
|
def upload_annotations(self,
|
|
714
738
|
local_path,
|
|
@@ -942,7 +966,8 @@ class Dataset(entities.BaseEntity):
|
|
|
942
966
|
with_text=False,
|
|
943
967
|
without_relative_path=None,
|
|
944
968
|
alpha=1,
|
|
945
|
-
export_version=ExportVersion.V1
|
|
969
|
+
export_version=ExportVersion.V1,
|
|
970
|
+
dataset_lock=False
|
|
946
971
|
):
|
|
947
972
|
"""
|
|
948
973
|
Download dataset by filters.
|
|
@@ -957,6 +982,7 @@ class Dataset(entities.BaseEntity):
|
|
|
957
982
|
:param list annotation_options: type of download annotations: list(dl.ViewAnnotationOptions)
|
|
958
983
|
:param dtlpy.entities.filters.Filters annotation_filters: Filters entity to filter annotations for download
|
|
959
984
|
:param bool overwrite: optional - default = False to overwrite the existing files
|
|
985
|
+
:param bool dataset_lock: optional - default = False to make dataset readonly during the download
|
|
960
986
|
:param bool to_items_folder: Create 'items' folder and download items to it
|
|
961
987
|
:param int thickness: optional - line thickness, if -1 annotation will be filled, default =1
|
|
962
988
|
:param bool with_text: optional - add text to annotations, default = False
|
|
@@ -974,7 +1000,8 @@ class Dataset(entities.BaseEntity):
|
|
|
974
1000
|
overwrite=False,
|
|
975
1001
|
thickness=1,
|
|
976
1002
|
with_text=False,
|
|
977
|
-
alpha=1
|
|
1003
|
+
alpha=1,
|
|
1004
|
+
dataset_lock=False,
|
|
978
1005
|
)
|
|
979
1006
|
"""
|
|
980
1007
|
return self.items.download(filters=filters,
|
|
@@ -988,7 +1015,8 @@ class Dataset(entities.BaseEntity):
|
|
|
988
1015
|
with_text=with_text,
|
|
989
1016
|
without_relative_path=without_relative_path,
|
|
990
1017
|
alpha=alpha,
|
|
991
|
-
export_version=export_version
|
|
1018
|
+
export_version=export_version,
|
|
1019
|
+
dataset_lock=dataset_lock)
|
|
992
1020
|
|
|
993
1021
|
def download_folder(
|
|
994
1022
|
self,
|
|
@@ -1004,7 +1032,8 @@ class Dataset(entities.BaseEntity):
|
|
|
1004
1032
|
with_text=False,
|
|
1005
1033
|
without_relative_path=None,
|
|
1006
1034
|
alpha=1,
|
|
1007
|
-
export_version=ExportVersion.V1
|
|
1035
|
+
export_version=ExportVersion.V1,
|
|
1036
|
+
dataset_lock=False
|
|
1008
1037
|
):
|
|
1009
1038
|
"""
|
|
1010
1039
|
Download dataset folder.
|
|
@@ -1019,6 +1048,7 @@ class Dataset(entities.BaseEntity):
|
|
|
1019
1048
|
:param list annotation_options: type of download annotations: list(dl.ViewAnnotationOptions)
|
|
1020
1049
|
:param dtlpy.entities.filters.Filters annotation_filters: Filters entity to filter annotations for download
|
|
1021
1050
|
:param bool overwrite: optional - default = False to overwrite the existing files
|
|
1051
|
+
:param bool dataset_lock: optional - default = False to make the dataset readonly during the download
|
|
1022
1052
|
:param bool to_items_folder: Create 'items' folder and download items to it
|
|
1023
1053
|
:param int thickness: optional - line thickness, if -1 annotation will be filled, default =1
|
|
1024
1054
|
:param bool with_text: optional - add text to annotations, default = False
|
|
@@ -1038,7 +1068,8 @@ class Dataset(entities.BaseEntity):
|
|
|
1038
1068
|
thickness=1,
|
|
1039
1069
|
with_text=False,
|
|
1040
1070
|
alpha=1,
|
|
1041
|
-
save_locally=True
|
|
1071
|
+
save_locally=True,
|
|
1072
|
+
dataset_lock=False
|
|
1042
1073
|
)
|
|
1043
1074
|
"""
|
|
1044
1075
|
filters = self.datasets._bulid_folder_filter(folder_path=folder_path, filters=filters)
|
|
@@ -1053,7 +1084,8 @@ class Dataset(entities.BaseEntity):
|
|
|
1053
1084
|
with_text=with_text,
|
|
1054
1085
|
without_relative_path=without_relative_path,
|
|
1055
1086
|
alpha=alpha,
|
|
1056
|
-
export_version=export_version
|
|
1087
|
+
export_version=export_version,
|
|
1088
|
+
dataset_lock=dataset_lock)
|
|
1057
1089
|
|
|
1058
1090
|
def delete_labels(self, label_names):
|
|
1059
1091
|
"""
|
dtlpy/entities/item.py
CHANGED
|
@@ -453,7 +453,8 @@ class Item(entities.BaseEntity):
|
|
|
453
453
|
with_text=False,
|
|
454
454
|
annotation_filters=None,
|
|
455
455
|
alpha=1,
|
|
456
|
-
export_version=ExportVersion.V1
|
|
456
|
+
export_version=ExportVersion.V1,
|
|
457
|
+
dataset_lock=False
|
|
457
458
|
):
|
|
458
459
|
"""
|
|
459
460
|
Download dataset by filters.
|
|
@@ -467,6 +468,7 @@ class Item(entities.BaseEntity):
|
|
|
467
468
|
:param list annotation_options: download annotations options: list(dl.ViewAnnotationOptions)
|
|
468
469
|
:param dtlpy.entities.filters.Filters annotation_filters: Filters entity to filter annotations for download
|
|
469
470
|
:param bool overwrite: optional - default = False
|
|
471
|
+
:param bool dataset_lock: optional - default = False
|
|
470
472
|
:param bool to_items_folder: Create 'items' folder and download items to it
|
|
471
473
|
:param int thickness: optional - line thickness, if -1 annotation will be filled, default =1
|
|
472
474
|
:param bool with_text: optional - add text to annotations, default = False
|
|
@@ -485,7 +487,8 @@ class Item(entities.BaseEntity):
|
|
|
485
487
|
thickness=1,
|
|
486
488
|
with_text=False,
|
|
487
489
|
alpha=1,
|
|
488
|
-
save_locally=True
|
|
490
|
+
save_locally=True,
|
|
491
|
+
dataset_lock=False
|
|
489
492
|
)
|
|
490
493
|
"""
|
|
491
494
|
# if dir - concatenate local path and item name
|
|
@@ -519,7 +522,8 @@ class Item(entities.BaseEntity):
|
|
|
519
522
|
alpha=alpha,
|
|
520
523
|
with_text=with_text,
|
|
521
524
|
export_version=export_version,
|
|
522
|
-
filters=filters
|
|
525
|
+
filters=filters,
|
|
526
|
+
dataset_lock=dataset_lock)
|
|
523
527
|
|
|
524
528
|
def delete(self):
|
|
525
529
|
"""
|
|
@@ -824,6 +828,15 @@ class Item(entities.BaseEntity):
|
|
|
824
828
|
filters.add(field='metadata.system.collections', values=None)
|
|
825
829
|
filters.add(field='datasetId', values=self._dataset.id)
|
|
826
830
|
return self._dataset.items.list(filters=filters)
|
|
831
|
+
|
|
832
|
+
def task_scores(self, task_id: str, page_offset: int = None, page_size: int = None):
|
|
833
|
+
"""
|
|
834
|
+
Get the scores of the item in a specific task.
|
|
835
|
+
:param task_id: The ID of the task.
|
|
836
|
+
:return: page of scores
|
|
837
|
+
"""
|
|
838
|
+
return self.items.task_scores(item_id=self.id, task_id=task_id, page_offset=page_offset, page_size=page_size)
|
|
839
|
+
|
|
827
840
|
|
|
828
841
|
class ModalityTypeEnum(str, Enum):
|
|
829
842
|
"""
|
dtlpy/entities/prompt_item.py
CHANGED
|
@@ -447,3 +447,12 @@ class PromptItem:
|
|
|
447
447
|
# update the annotation with the new text
|
|
448
448
|
annotation.annotation_definition.text = existing_prompt_element['value']
|
|
449
449
|
self._item.annotations.update(annotation)
|
|
450
|
+
|
|
451
|
+
def update(self):
|
|
452
|
+
"""
|
|
453
|
+
Update the prompt item in the platform.
|
|
454
|
+
"""
|
|
455
|
+
if self._item is not None:
|
|
456
|
+
self._item._Item__update_item_binary(_json=self.to_json())
|
|
457
|
+
else:
|
|
458
|
+
raise ValueError('Cannot update PromptItem without an item.')
|
dtlpy/entities/service.py
CHANGED
|
@@ -89,10 +89,6 @@ class InstanceCatalog(str, Enum):
|
|
|
89
89
|
- highmem pod with medium size
|
|
90
90
|
* - HIGHMEM_L
|
|
91
91
|
- highmem pod with large size
|
|
92
|
-
* - GPU_K80_S
|
|
93
|
-
- GPU NVIDIA K80 pod with small size
|
|
94
|
-
* - GPU_K80_M
|
|
95
|
-
- GPU NVIDIA K80 pod with medium size
|
|
96
92
|
* - GPU_T4_S
|
|
97
93
|
- GPU NVIDIA T4 pod with regular memory
|
|
98
94
|
* - GPU_T4_M
|
|
@@ -106,8 +102,6 @@ class InstanceCatalog(str, Enum):
|
|
|
106
102
|
HIGHMEM_S = "highmem-s"
|
|
107
103
|
HIGHMEM_M = "highmem-m"
|
|
108
104
|
HIGHMEM_L = "highmem-l"
|
|
109
|
-
GPU_K80_S = "gpu-k80-s"
|
|
110
|
-
GPU_K80_M = "gpu-k80-m"
|
|
111
105
|
GPU_T4_S = "gpu-t4"
|
|
112
106
|
GPU_T4_M = "gpu-t4-m"
|
|
113
107
|
|
dtlpy/new_instance.py
CHANGED
|
@@ -104,7 +104,6 @@ class Dtlpy:
|
|
|
104
104
|
self.cache_state = self.client_api.cache_state
|
|
105
105
|
self.attributes_mode = self.client_api.attributes_mode
|
|
106
106
|
self.sdk_cache = self.client_api.sdk_cache
|
|
107
|
-
self.platform_settings = self.client_api.platform_settings
|
|
108
107
|
|
|
109
108
|
def __del__(self):
|
|
110
109
|
for name, pool in self.client_api._thread_pools.items():
|
|
@@ -243,8 +242,6 @@ class Dtlpy:
|
|
|
243
242
|
HIGHMEM_S = 'highmem-s'
|
|
244
243
|
HIGHMEM_M = 'highmem-m'
|
|
245
244
|
HIGHMEM_L = 'highmem-l'
|
|
246
|
-
GPU_K80_S = "gpu-k80-s"
|
|
247
|
-
GPU_K80_M = "gpu-k80-m"
|
|
248
245
|
GPU_T4_S = "gpu-t4-s"
|
|
249
246
|
GPU_T4_M = "gpu-t4-m"
|
|
250
247
|
|
|
@@ -885,6 +885,32 @@ class Annotations:
|
|
|
885
885
|
"""
|
|
886
886
|
return entities.AnnotationCollection(item=self.item)
|
|
887
887
|
|
|
888
|
+
def task_scores(self, annotation_id: str, task_id: str, page_offset: int = 0, page_size: int = 100):
|
|
889
|
+
"""
|
|
890
|
+
Get annotation scores in a task
|
|
891
|
+
|
|
892
|
+
**Prerequisites**: You must be able to read the task
|
|
893
|
+
|
|
894
|
+
:param str annotation_id: The id of the annotation
|
|
895
|
+
:param str task_id: The id of the task
|
|
896
|
+
:param int page_offset: starting page
|
|
897
|
+
:param int page_size: size of page
|
|
898
|
+
:return: json response
|
|
899
|
+
:rtype: dict
|
|
900
|
+
"""
|
|
901
|
+
if annotation_id is None:
|
|
902
|
+
raise exceptions.PlatformException('400', 'annotation_id must be provided')
|
|
903
|
+
if task_id is None:
|
|
904
|
+
raise exceptions.PlatformException('400', 'task_id must be provided')
|
|
905
|
+
|
|
906
|
+
success, response = self._client_api.gen_request(req_type='get',
|
|
907
|
+
path='/scores/tasks/{}/annotations/{}?page={}&pageSize={}'
|
|
908
|
+
.format(task_id, annotation_id, page_offset, page_size))
|
|
909
|
+
if success:
|
|
910
|
+
return response.json()
|
|
911
|
+
else:
|
|
912
|
+
raise exceptions.PlatformException(response)
|
|
913
|
+
|
|
888
914
|
##################
|
|
889
915
|
# async function #
|
|
890
916
|
##################
|
dtlpy/repositories/datasets.py
CHANGED
|
@@ -127,8 +127,8 @@ class Datasets:
|
|
|
127
127
|
return dataset_id
|
|
128
128
|
|
|
129
129
|
@staticmethod
|
|
130
|
-
def _build_payload(filters, include_feature_vectors, include_annotations,
|
|
131
|
-
feature_vector_filters):
|
|
130
|
+
def _build_payload(filters, include_feature_vectors, include_annotations,
|
|
131
|
+
export_type, annotation_filters, feature_vector_filters, dataset_lock):
|
|
132
132
|
valid_list = [e.value for e in entities.ExportType]
|
|
133
133
|
valid_types = ', '.join(valid_list)
|
|
134
134
|
if export_type not in ['json', 'zip']:
|
|
@@ -157,6 +157,8 @@ class Datasets:
|
|
|
157
157
|
if annotation_filters is not None:
|
|
158
158
|
payload['annotationsQuery'] = annotation_filters.prepare()['filter']
|
|
159
159
|
payload['annotations']['filter'] = True
|
|
160
|
+
if dataset_lock:
|
|
161
|
+
payload['datasetLock'] = dataset_lock
|
|
160
162
|
|
|
161
163
|
return payload
|
|
162
164
|
|
|
@@ -471,6 +473,32 @@ class Datasets:
|
|
|
471
473
|
return dataset
|
|
472
474
|
else:
|
|
473
475
|
raise exceptions.PlatformException(response)
|
|
476
|
+
|
|
477
|
+
@_api_reference.add(path='/datasets/{id}/unlock', method='patch')
|
|
478
|
+
def unlock(self, dataset: entities.Dataset ) -> entities.Dataset:
|
|
479
|
+
"""
|
|
480
|
+
Unlock dataset.
|
|
481
|
+
|
|
482
|
+
**Prerequisites**: You must be an *owner* or *developer* to use this method.
|
|
483
|
+
|
|
484
|
+
:param dtlpy.entities.dataset.Dataset dataset: dataset object
|
|
485
|
+
:return: Dataset object
|
|
486
|
+
:rtype: dtlpy.entities.dataset.Dataset
|
|
487
|
+
|
|
488
|
+
**Example**:
|
|
489
|
+
|
|
490
|
+
.. code-block:: python
|
|
491
|
+
|
|
492
|
+
dataset = project.datasets.unlock(dataset='dataset_entity')
|
|
493
|
+
"""
|
|
494
|
+
url_path = '/datasets/{}/unlock'.format(dataset.id)
|
|
495
|
+
|
|
496
|
+
success, response = self._client_api.gen_request(req_type='patch', path=url_path)
|
|
497
|
+
if success:
|
|
498
|
+
logger.info('Dataset was unlocked successfully')
|
|
499
|
+
return dataset
|
|
500
|
+
else:
|
|
501
|
+
raise exceptions.PlatformException(response)
|
|
474
502
|
|
|
475
503
|
@_api_reference.add(path='/datasets/{id}/directoryTree', method='get')
|
|
476
504
|
def directory_tree(self,
|
|
@@ -602,7 +630,8 @@ class Datasets:
|
|
|
602
630
|
include_feature_vectors: bool = False,
|
|
603
631
|
include_annotations: bool = False,
|
|
604
632
|
export_type: entities.ExportType = entities.ExportType.JSON,
|
|
605
|
-
timeout: int = 0
|
|
633
|
+
timeout: int = 0,
|
|
634
|
+
dataset_lock: bool = False):
|
|
606
635
|
"""
|
|
607
636
|
Export dataset items and annotations.
|
|
608
637
|
|
|
@@ -619,6 +648,7 @@ class Datasets:
|
|
|
619
648
|
:param dtlpy.entities.filters.Filters feature_vector_filters: Filters entity to filter feature vectors for export
|
|
620
649
|
:param bool include_feature_vectors: Include item feature vectors in the export
|
|
621
650
|
:param bool include_annotations: Include item annotations in the export
|
|
651
|
+
:param bool dataset_lock: Make dataset readonly during the export
|
|
622
652
|
:param entities.ExportType export_type: Type of export ('json' or 'zip')
|
|
623
653
|
:param int timeout: Maximum time in seconds to wait for the export to complete
|
|
624
654
|
:return: Exported item
|
|
@@ -632,11 +662,12 @@ class Datasets:
|
|
|
632
662
|
filters=filters,
|
|
633
663
|
include_feature_vectors=True,
|
|
634
664
|
include_annotations=True,
|
|
635
|
-
export_type=dl.ExportType.JSON
|
|
665
|
+
export_type=dl.ExportType.JSON,
|
|
666
|
+
dataset_lock=True)
|
|
636
667
|
"""
|
|
637
668
|
dataset_id = self._resolve_dataset_id(dataset, dataset_name, dataset_id)
|
|
638
|
-
payload = self._build_payload(filters, include_feature_vectors, include_annotations,
|
|
639
|
-
|
|
669
|
+
payload = self._build_payload(filters, include_feature_vectors, include_annotations,
|
|
670
|
+
export_type, annotation_filters, feature_vector_filters, dataset_lock)
|
|
640
671
|
|
|
641
672
|
success, response = self._client_api.gen_request(req_type='post', path=f'/datasets/{dataset_id}/export',
|
|
642
673
|
json_req=payload)
|
|
@@ -900,7 +931,8 @@ class Datasets:
|
|
|
900
931
|
export_png_files: bool = False,
|
|
901
932
|
filter_output_annotations: bool = False,
|
|
902
933
|
alpha: float = None,
|
|
903
|
-
export_version=entities.ExportVersion.V1
|
|
934
|
+
export_version=entities.ExportVersion.V1,
|
|
935
|
+
dataset_lock: bool = False
|
|
904
936
|
) -> str:
|
|
905
937
|
"""
|
|
906
938
|
Download dataset's annotations by filters.
|
|
@@ -917,6 +949,7 @@ class Datasets:
|
|
|
917
949
|
:param list annotation_options: type of download annotations: list(dl.ViewAnnotationOptions)
|
|
918
950
|
:param dtlpy.entities.filters.Filters annotation_filters: Filters entity to filter annotations for download
|
|
919
951
|
:param bool overwrite: optional - default = False to overwrite the existing files
|
|
952
|
+
:param bool dataset_loc: optional - default = False to make the dataset readonly
|
|
920
953
|
:param int thickness: optional - line thickness, if -1 annotation will be filled, default =1
|
|
921
954
|
:param bool with_text: optional - add text to annotations, default = False
|
|
922
955
|
:param str remote_path: DEPRECATED and ignored
|
|
@@ -926,6 +959,7 @@ class Datasets:
|
|
|
926
959
|
:param float alpha: opacity value [0 1], default 1
|
|
927
960
|
:param str export_version: exported items will have original extension in filename, `V1` - no original extension in filenames
|
|
928
961
|
:return: local_path of the directory where all the downloaded item
|
|
962
|
+
:param bool dataset_lock: optional - default = False
|
|
929
963
|
:rtype: str
|
|
930
964
|
|
|
931
965
|
**Example**:
|
|
@@ -938,7 +972,8 @@ class Datasets:
|
|
|
938
972
|
overwrite=False,
|
|
939
973
|
thickness=1,
|
|
940
974
|
with_text=False,
|
|
941
|
-
alpha=1
|
|
975
|
+
alpha=1,
|
|
976
|
+
dataset_lock=False
|
|
942
977
|
)
|
|
943
978
|
"""
|
|
944
979
|
if annotation_options is None:
|
|
@@ -998,7 +1033,8 @@ class Datasets:
|
|
|
998
1033
|
include_annotations_in_output=include_annotations_in_output,
|
|
999
1034
|
export_png_files=export_png_files,
|
|
1000
1035
|
filter_output_annotations=filter_output_annotations,
|
|
1001
|
-
export_version=export_version
|
|
1036
|
+
export_version=export_version,
|
|
1037
|
+
dataset_lock=dataset_lock
|
|
1002
1038
|
)
|
|
1003
1039
|
if annotation_options:
|
|
1004
1040
|
pages = dataset.items.list(filters=filters)
|
dtlpy/repositories/downloader.py
CHANGED
|
@@ -46,7 +46,8 @@ class Downloader:
|
|
|
46
46
|
export_png_files=False,
|
|
47
47
|
filter_output_annotations=False,
|
|
48
48
|
alpha=1,
|
|
49
|
-
export_version=entities.ExportVersion.V1
|
|
49
|
+
export_version=entities.ExportVersion.V1,
|
|
50
|
+
dataset_lock=False
|
|
50
51
|
):
|
|
51
52
|
"""
|
|
52
53
|
Download dataset by filters.
|
|
@@ -72,6 +73,7 @@ class Downloader:
|
|
|
72
73
|
:param filter_output_annotations: default - False, given an export by filter - determine if to filter out annotations
|
|
73
74
|
:param alpha: opacity value [0 1], default 1
|
|
74
75
|
:param str export_version: exported items will have original extension in filename, `V1` - no original extension in filenames
|
|
76
|
+
:param bool dataset_lock: optional - default = False
|
|
75
77
|
:return: Output (list)
|
|
76
78
|
"""
|
|
77
79
|
|
|
@@ -195,7 +197,8 @@ class Downloader:
|
|
|
195
197
|
'include_annotations_in_output': include_annotations_in_output,
|
|
196
198
|
'export_png_files': export_png_files,
|
|
197
199
|
'filter_output_annotations': filter_output_annotations,
|
|
198
|
-
'export_version': export_version
|
|
200
|
+
'export_version': export_version,
|
|
201
|
+
'dataset_lock': dataset_lock
|
|
199
202
|
})
|
|
200
203
|
###############
|
|
201
204
|
# downloading #
|
|
@@ -361,7 +364,8 @@ class Downloader:
|
|
|
361
364
|
include_annotations_in_output=True,
|
|
362
365
|
export_png_files=False,
|
|
363
366
|
filter_output_annotations=False,
|
|
364
|
-
export_version=entities.ExportVersion.V1
|
|
367
|
+
export_version=entities.ExportVersion.V1,
|
|
368
|
+
dataset_lock=False
|
|
365
369
|
):
|
|
366
370
|
"""
|
|
367
371
|
Download annotations json for entire dataset
|
|
@@ -375,6 +379,7 @@ class Downloader:
|
|
|
375
379
|
:param export_png_files: default - if True, semantic annotations should be exported as png files
|
|
376
380
|
:param filter_output_annotations: default - False, given an export by filter - determine if to filter out annotations
|
|
377
381
|
:param str export_version: exported items will have original extension in filename, `V1` - no original extension in filenames
|
|
382
|
+
:param bool dataset_lock: optional - default = False
|
|
378
383
|
:return:
|
|
379
384
|
"""
|
|
380
385
|
local_path = os.path.join(local_path, "json")
|
|
@@ -397,6 +402,8 @@ class Downloader:
|
|
|
397
402
|
if annotation_filters is not None:
|
|
398
403
|
payload['annotationsQuery'] = annotation_filters.prepare()
|
|
399
404
|
payload['annotations']['filter'] = filter_output_annotations
|
|
405
|
+
if dataset_lock:
|
|
406
|
+
payload['datasetLock'] = dataset_lock
|
|
400
407
|
|
|
401
408
|
success, response = dataset._client_api.gen_request(req_type='post',
|
|
402
409
|
path='/datasets/{}/export'.format(dataset.id),
|
|
@@ -304,7 +304,8 @@ class Integrations:
|
|
|
304
304
|
available_integrations = miscellaneous.List(response.json())
|
|
305
305
|
return available_integrations
|
|
306
306
|
|
|
307
|
-
|
|
307
|
+
@staticmethod
|
|
308
|
+
def generate_gar_options(service_account: str, location: str, email: str = None) -> dict:
|
|
308
309
|
"""
|
|
309
310
|
Generates a Google Artifact Registry JSON configuration and returns it as a base64-encoded string.
|
|
310
311
|
|
|
@@ -320,27 +321,119 @@ class Integrations:
|
|
|
320
321
|
Returns:
|
|
321
322
|
str: A base64-encoded string representation of the repository JSON configuration.
|
|
322
323
|
"""
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
324
|
+
return IntegrationUtils.generate_gar_options(service_account=service_account, location=location, email=email)
|
|
325
|
+
|
|
326
|
+
@staticmethod
|
|
327
|
+
def generate_docker_hub_options(username: str, password: str, email: str = None) -> dict:
|
|
328
|
+
"""
|
|
329
|
+
Generates a Docker Hub JSON configuration and returns it as a base64-encoded string.
|
|
330
|
+
|
|
331
|
+
Parameters:
|
|
332
|
+
username (str): The Docker Hub username.
|
|
333
|
+
password (str): The Docker Hub password.
|
|
334
|
+
email (str): Optional - Docker Hub email.
|
|
335
|
+
|
|
336
|
+
Returns:
|
|
337
|
+
str: A base64-encoded string representation of the repository JSON configuration.
|
|
338
|
+
"""
|
|
339
|
+
return IntegrationUtils.generate_docker_hub_options(username=username, password=password, email=email)
|
|
340
|
+
|
|
341
|
+
@staticmethod
|
|
342
|
+
def generate_ecr_options(access_key_id: str, secret_access_key: str, account: str, region: str) -> dict:
|
|
343
|
+
"""
|
|
344
|
+
Generates an Amazon Elastic Container Registry (ECR) JSON configuration and returns it as a base64-encoded string.
|
|
330
345
|
|
|
346
|
+
Parameters:
|
|
347
|
+
access_key_id (str): The AWS access key ID.
|
|
348
|
+
secret_access_key (str): The AWS secret access key.
|
|
349
|
+
account (str): The AWS account ID.
|
|
350
|
+
region (str): The AWS region.
|
|
351
|
+
|
|
352
|
+
Returns:
|
|
353
|
+
str: A base64-encoded string representation of the repository JSON configuration.
|
|
354
|
+
"""
|
|
355
|
+
return IntegrationUtils.generate_ecr_options(
|
|
356
|
+
access_key_id=access_key_id,
|
|
357
|
+
secret_access_key=secret_access_key,
|
|
358
|
+
account=account,
|
|
359
|
+
region=region
|
|
360
|
+
)
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
class IntegrationUtils:
|
|
364
|
+
|
|
365
|
+
@staticmethod
|
|
366
|
+
def encode(st: str):
|
|
367
|
+
return str(base64.b64encode(bytes(st, 'utf-8')))[2:-1]
|
|
368
|
+
|
|
369
|
+
@staticmethod
|
|
370
|
+
def generate_json_key_options(location: str, username: str, password: str, auth: str, email: str = None):
|
|
331
371
|
encoded_pass = {
|
|
332
372
|
"auths": {
|
|
333
373
|
f"{location}": {
|
|
334
|
-
"username":
|
|
335
|
-
"password":
|
|
374
|
+
"username": username,
|
|
375
|
+
"password": password,
|
|
336
376
|
"auth": auth
|
|
337
377
|
}
|
|
338
378
|
}
|
|
339
379
|
}
|
|
340
380
|
|
|
381
|
+
if email:
|
|
382
|
+
encoded_pass['auths'][f'{location}']['email'] = email
|
|
383
|
+
|
|
341
384
|
return {
|
|
342
385
|
"name": "_json_key",
|
|
343
386
|
"spec": {
|
|
344
|
-
"password":
|
|
387
|
+
"password": IntegrationUtils.encode(json.dumps(encoded_pass))
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
@staticmethod
|
|
392
|
+
def generate_gar_options(service_account: str, location: str, email: str = None) -> dict:
|
|
393
|
+
|
|
394
|
+
if not service_account:
|
|
395
|
+
raise ValueError('Missing Service Account')
|
|
396
|
+
if not location:
|
|
397
|
+
raise ValueError('Missing Location')
|
|
398
|
+
|
|
399
|
+
username = "_json_key"
|
|
400
|
+
cred = f"{username}:{service_account}"
|
|
401
|
+
auth = IntegrationUtils.encode(cred)
|
|
402
|
+
|
|
403
|
+
return IntegrationUtils.generate_json_key_options(
|
|
404
|
+
location=location,
|
|
405
|
+
username=username,
|
|
406
|
+
password=service_account,
|
|
407
|
+
auth=auth,
|
|
408
|
+
email=email
|
|
409
|
+
)
|
|
410
|
+
|
|
411
|
+
@staticmethod
|
|
412
|
+
def generate_docker_hub_options(username: str, password: str, email: str = None) -> dict:
|
|
413
|
+
|
|
414
|
+
if not username:
|
|
415
|
+
raise ValueError('Missing Username')
|
|
416
|
+
if not password:
|
|
417
|
+
raise ValueError('Missing Password')
|
|
418
|
+
|
|
419
|
+
auth = IntegrationUtils.encode('{}:{}'.format(username, password))
|
|
420
|
+
|
|
421
|
+
return IntegrationUtils.generate_json_key_options(
|
|
422
|
+
location='docker.io',
|
|
423
|
+
username=username,
|
|
424
|
+
password=password,
|
|
425
|
+
auth=auth,
|
|
426
|
+
email=email
|
|
427
|
+
)
|
|
428
|
+
|
|
429
|
+
@staticmethod
|
|
430
|
+
def generate_ecr_options(access_key_id: str, secret_access_key: str, account: str, region: str) -> dict:
|
|
431
|
+
return {
|
|
432
|
+
"name": "AWS",
|
|
433
|
+
"spec": {
|
|
434
|
+
"accessKeyId": access_key_id,
|
|
435
|
+
"secretAccessKey": secret_access_key,
|
|
436
|
+
"account": account,
|
|
437
|
+
"region": region,
|
|
345
438
|
}
|
|
346
439
|
}
|
dtlpy/repositories/items.py
CHANGED
|
@@ -527,7 +527,8 @@ class Items:
|
|
|
527
527
|
export_png_files: bool = False,
|
|
528
528
|
filter_output_annotations: bool = False,
|
|
529
529
|
alpha: float = 1,
|
|
530
|
-
export_version=entities.ExportVersion.V1
|
|
530
|
+
export_version=entities.ExportVersion.V1,
|
|
531
|
+
dataset_lock: bool = False
|
|
531
532
|
):
|
|
532
533
|
"""
|
|
533
534
|
Download dataset items by filters.
|
|
@@ -547,6 +548,7 @@ class Items:
|
|
|
547
548
|
:param list annotation_options: download annotations options: list(dl.ViewAnnotationOptions)
|
|
548
549
|
:param dtlpy.entities.filters.Filters annotation_filters: Filters entity to filter annotations for download
|
|
549
550
|
:param bool overwrite: optional - default = False
|
|
551
|
+
:param bool dataset_lock: optional - default = False
|
|
550
552
|
:param bool to_items_folder: Create 'items' folder and download items to it
|
|
551
553
|
:param int thickness: optional - line thickness, if -1 annotation will be filled, default =1
|
|
552
554
|
:param bool with_text: optional - add text to annotations, default = False
|
|
@@ -593,7 +595,8 @@ class Items:
|
|
|
593
595
|
include_annotations_in_output=include_annotations_in_output,
|
|
594
596
|
export_png_files=export_png_files,
|
|
595
597
|
filter_output_annotations=filter_output_annotations,
|
|
596
|
-
export_version=export_version
|
|
598
|
+
export_version=export_version,
|
|
599
|
+
dataset_lock=dataset_lock
|
|
597
600
|
)
|
|
598
601
|
|
|
599
602
|
def upload(
|
|
@@ -869,3 +872,38 @@ class Items:
|
|
|
869
872
|
raise exceptions.PlatformException(response)
|
|
870
873
|
|
|
871
874
|
return success
|
|
875
|
+
|
|
876
|
+
def task_scores(self, item_id: str, task_id: str, page_offset: int = 0, page_size: int = 100):
|
|
877
|
+
"""
|
|
878
|
+
Get item score
|
|
879
|
+
|
|
880
|
+
**Prerequisites**: You must be able to read the task
|
|
881
|
+
|
|
882
|
+
:param str item_id: item id
|
|
883
|
+
:param str task_id: task id
|
|
884
|
+
:param int page_offset: start page
|
|
885
|
+
:param int page_size: page size
|
|
886
|
+
:return: page of item scores
|
|
887
|
+
|
|
888
|
+
**Example**:
|
|
889
|
+
|
|
890
|
+
.. code-block:: python
|
|
891
|
+
|
|
892
|
+
dataset.items.item_score(item_id='item_id', task_id='task_id')
|
|
893
|
+
|
|
894
|
+
"""
|
|
895
|
+
|
|
896
|
+
if item_id is None:
|
|
897
|
+
raise exceptions.PlatformException('400', 'Must provide item id')
|
|
898
|
+
|
|
899
|
+
if task_id is None:
|
|
900
|
+
raise exceptions.PlatformException('400', 'Must provide task id')
|
|
901
|
+
|
|
902
|
+
success, response = self._client_api.gen_request(req_type="get",
|
|
903
|
+
path="/scores/tasks/{}/items/{}?page={}&pageSize={}"
|
|
904
|
+
.format(task_id, item_id, page_offset, page_size))
|
|
905
|
+
if success:
|
|
906
|
+
return response.json()
|
|
907
|
+
else:
|
|
908
|
+
raise exceptions.PlatformException(response)
|
|
909
|
+
|
dtlpy/repositories/projects.py
CHANGED
|
@@ -432,14 +432,6 @@ class Projects:
|
|
|
432
432
|
assert isinstance(project, entities.Project)
|
|
433
433
|
if checkout:
|
|
434
434
|
self.checkout(project=project)
|
|
435
|
-
if project.id not in self._client_api.platform_settings.working_projects:
|
|
436
|
-
self._client_api.platform_settings.add_project(project.id)
|
|
437
|
-
try:
|
|
438
|
-
settings_list = project.settings.resolve(user_email=self._client_api.info()['user_email'],
|
|
439
|
-
project_id=project.id)
|
|
440
|
-
self._client_api.platform_settings.add_bulk(settings_list)
|
|
441
|
-
except:
|
|
442
|
-
logger.warning("failed to add project settings")
|
|
443
435
|
return project
|
|
444
436
|
|
|
445
437
|
@_api_reference.add(path='/projects/{projectId}', method='delete')
|
dtlpy/repositories/settings.py
CHANGED
|
@@ -112,12 +112,6 @@ class Settings:
|
|
|
112
112
|
else:
|
|
113
113
|
raise exceptions.PlatformException(response)
|
|
114
114
|
|
|
115
|
-
# add settings to cookies
|
|
116
|
-
self._client_api.platform_settings.add(setting.name,
|
|
117
|
-
{
|
|
118
|
-
setting.scope.id: setting.value
|
|
119
|
-
}
|
|
120
|
-
)
|
|
121
115
|
return constructor(
|
|
122
116
|
_json=_json,
|
|
123
117
|
client_api=self._client_api,
|
|
@@ -172,13 +166,6 @@ class Settings:
|
|
|
172
166
|
else:
|
|
173
167
|
raise exceptions.PlatformException(response)
|
|
174
168
|
|
|
175
|
-
# add settings to cookies
|
|
176
|
-
self._client_api.platform_settings.add(setting.name,
|
|
177
|
-
{
|
|
178
|
-
setting.scope.id: setting.value
|
|
179
|
-
}
|
|
180
|
-
)
|
|
181
|
-
|
|
182
169
|
return constructor(
|
|
183
170
|
_json=_json,
|
|
184
171
|
client_api=self._client_api,
|
dtlpy/repositories/tasks.py
CHANGED
|
@@ -1089,3 +1089,36 @@ class Tasks:
|
|
|
1089
1089
|
success_count=len(updated_items), failed_items=failed_items)
|
|
1090
1090
|
logger.info(msg=log_msg)
|
|
1091
1091
|
return True
|
|
1092
|
+
|
|
1093
|
+
def task_scores(self, task_id: str = None, page_offset: int = 0, page_size: int = 100):
|
|
1094
|
+
"""
|
|
1095
|
+
Get all entities scores in a task.
|
|
1096
|
+
|
|
1097
|
+
:param str task_id: the id of the task
|
|
1098
|
+
:param int page_offset: the page offset
|
|
1099
|
+
:param int page_size: the page size
|
|
1100
|
+
:return: page of the task scores
|
|
1101
|
+
|
|
1102
|
+
**Example**:
|
|
1103
|
+
|
|
1104
|
+
.. code-block:: python
|
|
1105
|
+
|
|
1106
|
+
dataset.tasks.task_scores(task_id= 'task_id')
|
|
1107
|
+
"""
|
|
1108
|
+
if task_id is None:
|
|
1109
|
+
raise exceptions.PlatformException('400', 'Please provide task_id')
|
|
1110
|
+
|
|
1111
|
+
url = '/scores/tasks/{task_id}?page={page_offset}&pageSize={page_size}'.format(
|
|
1112
|
+
task_id=task_id,
|
|
1113
|
+
page_offset=page_offset,
|
|
1114
|
+
page_size=page_size
|
|
1115
|
+
)
|
|
1116
|
+
success, response = self._client_api.gen_request(
|
|
1117
|
+
req_type='get',
|
|
1118
|
+
path=url
|
|
1119
|
+
)
|
|
1120
|
+
|
|
1121
|
+
if success:
|
|
1122
|
+
return response.json()
|
|
1123
|
+
else:
|
|
1124
|
+
raise exceptions.PlatformException(response)
|
dtlpy/services/api_client.py
CHANGED
|
@@ -430,51 +430,6 @@ class Attributes2:
|
|
|
430
430
|
os.environ["USE_ATTRIBUTE_2"] = json.dumps(val)
|
|
431
431
|
self.to_cookie()
|
|
432
432
|
|
|
433
|
-
|
|
434
|
-
class PlatformSettings:
|
|
435
|
-
|
|
436
|
-
def __init__(self):
|
|
437
|
-
self._working_projects = list()
|
|
438
|
-
self._settings = dict()
|
|
439
|
-
|
|
440
|
-
@property
|
|
441
|
-
def settings(self) -> dict:
|
|
442
|
-
return self._settings
|
|
443
|
-
|
|
444
|
-
@property
|
|
445
|
-
def working_projects(self) -> list:
|
|
446
|
-
return self._working_projects
|
|
447
|
-
|
|
448
|
-
@settings.setter
|
|
449
|
-
def settings(self, val: dict):
|
|
450
|
-
if not isinstance(val, dict):
|
|
451
|
-
raise exceptions.PlatformException(error=400,
|
|
452
|
-
message="input must be of type dict")
|
|
453
|
-
|
|
454
|
-
self._settings = val
|
|
455
|
-
|
|
456
|
-
def add(self, setting_name: str, setting: dict):
|
|
457
|
-
if setting_name in self.settings:
|
|
458
|
-
self._settings[setting_name].update(setting)
|
|
459
|
-
else:
|
|
460
|
-
self._settings[setting_name] = setting
|
|
461
|
-
|
|
462
|
-
def add_project(self, project_id: str):
|
|
463
|
-
if not isinstance(project_id, str):
|
|
464
|
-
raise exceptions.PlatformException(error=400,
|
|
465
|
-
message="input must be of type str")
|
|
466
|
-
self._working_projects.append(project_id)
|
|
467
|
-
|
|
468
|
-
def add_bulk(self, settings_list):
|
|
469
|
-
settings_dict = {s.name: {s.scope.id: s.value}
|
|
470
|
-
for s in settings_list}
|
|
471
|
-
for setting_name, settings_val in settings_dict.items():
|
|
472
|
-
if setting_name in self._settings:
|
|
473
|
-
self._settings[setting_name].update(settings_val)
|
|
474
|
-
else:
|
|
475
|
-
self._settings[setting_name] = settings_val
|
|
476
|
-
|
|
477
|
-
|
|
478
433
|
class Decorators:
|
|
479
434
|
@staticmethod
|
|
480
435
|
def token_expired_decorator(method):
|
|
@@ -522,7 +477,6 @@ class ApiClient:
|
|
|
522
477
|
self._callbacks = None
|
|
523
478
|
self._cache_state = None
|
|
524
479
|
self._attributes_mode = None
|
|
525
|
-
self._platform_settings = None
|
|
526
480
|
self._cache_configs = None
|
|
527
481
|
self._sdk_cache = None
|
|
528
482
|
self._fetch_entities = None
|
|
@@ -793,13 +747,6 @@ class ApiClient:
|
|
|
793
747
|
assert isinstance(self._attributes_mode, Attributes2)
|
|
794
748
|
return self._attributes_mode
|
|
795
749
|
|
|
796
|
-
@property
|
|
797
|
-
def platform_settings(self):
|
|
798
|
-
if self._platform_settings is None:
|
|
799
|
-
self._platform_settings = PlatformSettings()
|
|
800
|
-
assert isinstance(self._platform_settings, PlatformSettings)
|
|
801
|
-
return self._platform_settings
|
|
802
|
-
|
|
803
750
|
@property
|
|
804
751
|
def sdk_cache(self):
|
|
805
752
|
if self._sdk_cache is None:
|
dtlpy/services/check_sdk.py
CHANGED
|
@@ -66,29 +66,3 @@ def check(version, client_api):
|
|
|
66
66
|
logger.error(msg=msg)
|
|
67
67
|
else:
|
|
68
68
|
logger.debug(msg='unknown')
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def resolve_platform_settings_in_thread(settings, client_api):
|
|
72
|
-
try:
|
|
73
|
-
# check for a valid token
|
|
74
|
-
if client_api.token_expired():
|
|
75
|
-
# wait for user to maybe login in the next 2 minutes
|
|
76
|
-
time.sleep(120)
|
|
77
|
-
# check for a valid token again
|
|
78
|
-
if client_api.token_expired():
|
|
79
|
-
# return if cant find a valid token
|
|
80
|
-
logger.debug('Cant set settings without a valid token.')
|
|
81
|
-
return
|
|
82
|
-
settings_list = settings.resolve(user_email=client_api.info()['user_email'])
|
|
83
|
-
client_api.platform_settings.add_bulk(settings_list)
|
|
84
|
-
|
|
85
|
-
except Exception:
|
|
86
|
-
logger.debug(traceback.format_exc())
|
|
87
|
-
logger.debug('Error in add settings.')
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def resolve_platform_settings(client_api, settings):
|
|
91
|
-
worker = threading.Thread(target=resolve_platform_settings_in_thread,
|
|
92
|
-
kwargs={'client_api': client_api, 'settings': settings})
|
|
93
|
-
worker.daemon = True
|
|
94
|
-
worker.start()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
dtlpy/__init__.py,sha256=
|
|
2
|
-
dtlpy/__version__.py,sha256=
|
|
1
|
+
dtlpy/__init__.py,sha256=K2c30sbTNH6bdPFLjabRX-Dh3TsQ33nR9psVGCAoUlw,20687
|
|
2
|
+
dtlpy/__version__.py,sha256=tc3CnFqsLZmTnEcwJPLV6J-btgk4o1Alm0UeA10qNoM,20
|
|
3
3
|
dtlpy/exceptions.py,sha256=EQCKs3pwhwZhgMByQN3D3LpWpdxwcKPEEt-bIaDwURM,2871
|
|
4
|
-
dtlpy/new_instance.py,sha256=
|
|
4
|
+
dtlpy/new_instance.py,sha256=bHsWS-nNcQ5XWDcC4uASqOqpl1ye97kUacduxXZHO68,9990
|
|
5
5
|
dtlpy/assets/__init__.py,sha256=D_hAa6NM8Zoy32sF_9b7m0b7I-BQEyBFg8-9Tg2WOeo,976
|
|
6
6
|
dtlpy/assets/lock_open.png,sha256=BH9uyf5uYvgZrDpDw9qCUnT3UbkXG8XbeRmWDpWlV4M,18215
|
|
7
7
|
dtlpy/assets/main.py,sha256=N1JUsx79qnXI7Hx22C8JOzHJdGHxvrXeTx5UZAxvJfE,1380
|
|
@@ -45,7 +45,7 @@ dtlpy/dlp/dlp.py,sha256=YjNBjeCDTXJ7tj8qdiGZ8lFb8DtPZl-FvViyjxt9xF8,4278
|
|
|
45
45
|
dtlpy/dlp/parser.py,sha256=p-TFaiAU2c3QkI97TXzL2LDR3Eq0hGDFrTc9J2jWLh4,30551
|
|
46
46
|
dtlpy/entities/__init__.py,sha256=HQ2p5IWmBqT5oG908poiDsSsQOnESsV_Y2rHASEHdcs,4943
|
|
47
47
|
dtlpy/entities/analytic.py,sha256=5MpYDKPVsZ1MIy20Ju515RWed6P667j4TLxsan2gyNM,11925
|
|
48
|
-
dtlpy/entities/annotation.py,sha256=
|
|
48
|
+
dtlpy/entities/annotation.py,sha256=qpMGn1GEEw1Zdam4rL0gPaE4f_2hIyd_-tbNhoZLFWg,68482
|
|
49
49
|
dtlpy/entities/annotation_collection.py,sha256=CEYSBHhhDkC0VJdHsBSrA6TgdKGMcKeI3tFM40UJwS8,29838
|
|
50
50
|
dtlpy/entities/app.py,sha256=dVd87-mP22NWvec5nqA5VjZ8Qk3aJlgUcloIAAOAPUw,6968
|
|
51
51
|
dtlpy/entities/app_module.py,sha256=0UiAbBX1q8iEImi3nY7ySWZZHoRRwu0qUXmyXmgVAc4,3645
|
|
@@ -56,8 +56,8 @@ 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=FtfsO6kQSZqKn-Uo8n2ryGOB01Fgr-g5ewfMCtRMTfw,5247
|
|
59
|
-
dtlpy/entities/compute.py,sha256=
|
|
60
|
-
dtlpy/entities/dataset.py,sha256=
|
|
59
|
+
dtlpy/entities/compute.py,sha256=6mN4ZRUTf28wc0YtFy7W4mONaoZI0DyIGvwosjQrsAA,14663
|
|
60
|
+
dtlpy/entities/dataset.py,sha256=a1PutKuGkYF-xVp1JCXNU1kRhekQ0uxYCpfnnTtbf9E,51985
|
|
61
61
|
dtlpy/entities/directory_tree.py,sha256=Rni6pLSWytR6yeUPgEdCCRfTg_cqLOdUc9uCqz9KT-Q,1186
|
|
62
62
|
dtlpy/entities/dpk.py,sha256=FJVhQKk2fj1cO_4rcE_bIF6QmIQZQWUkBnwTNQNMrfE,17857
|
|
63
63
|
dtlpy/entities/driver.py,sha256=O_QdK1EaLjQyQkmvKsmkNgmvmMb1mPjKnJGxK43KrOA,7197
|
|
@@ -67,7 +67,7 @@ dtlpy/entities/feature_set.py,sha256=niw4MkmrDbD_LWQu1X30uE6U4DCzmFhPTaYeZ6VZDB0
|
|
|
67
67
|
dtlpy/entities/filters.py,sha256=PUmgor77m3CWeUgvCdWMg3Bt5SxHXPVBbN5VmD_dglQ,22683
|
|
68
68
|
dtlpy/entities/gis_item.py,sha256=Uk-wMBxwcHsImjz4qOjP-EyZAohbRzN43kMpCaVjCXU,3982
|
|
69
69
|
dtlpy/entities/integration.py,sha256=Kdy1j6-cJLW8qNmnqCmdg36phi843YDrlMqcMyMfvYk,5875
|
|
70
|
-
dtlpy/entities/item.py,sha256=
|
|
70
|
+
dtlpy/entities/item.py,sha256=uZBYGprHUwtGRcRcIPQ0SBbm-gNaqzqaceytIvbDsYQ,34642
|
|
71
71
|
dtlpy/entities/label.py,sha256=ycDYavIgKhz806plIX-64c07_TeHpDa-V7LnfFVe4Rg,3869
|
|
72
72
|
dtlpy/entities/links.py,sha256=FAmEwHtsrqKet3c0UHH9u_gHgG6_OwF1-rl4xK7guME,2516
|
|
73
73
|
dtlpy/entities/message.py,sha256=ApJuaKEqxATpXjNYUjGdYPu3ibQzEMo8-LtJ_4xAcPI,5865
|
|
@@ -84,11 +84,11 @@ 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=qXDK2IWVKszm7gpqcgCE51SSf4IUTNFirq40qszBYw8,19566
|
|
88
88
|
dtlpy/entities/recipe.py,sha256=SX0T7gw-_9Cs2FZyC_htIxQd7CwDwb2zA3SqB37vymM,11917
|
|
89
89
|
dtlpy/entities/reflect_dict.py,sha256=2NaSAL-CO0T0FYRYFQlaSpbsoLT2Q18AqdHgQSLX5Y4,3273
|
|
90
90
|
dtlpy/entities/resource_execution.py,sha256=1HuVV__U4jAUOtOkWlWImnM3Yts8qxMSAkMA9sBhArY,5033
|
|
91
|
-
dtlpy/entities/service.py,sha256=
|
|
91
|
+
dtlpy/entities/service.py,sha256=X4rukxywZvb69swxj2C12i7HdmQ_XFuCRKV8Cdl_Dbw,33542
|
|
92
92
|
dtlpy/entities/setting.py,sha256=uXagJHtcCR3nJYClR_AUGZjz_kx3TejPcUZ8ginHFIA,8561
|
|
93
93
|
dtlpy/entities/task.py,sha256=SL1-6p4jruELkWI-5VXBMn7Imj1xJVaOfAFDa7inH64,19544
|
|
94
94
|
dtlpy/entities/time_series.py,sha256=336jWNckjuSn0G29WJFetB7nBoFAKqs4VH9_IB4m4FE,4017
|
|
@@ -97,7 +97,7 @@ dtlpy/entities/user.py,sha256=hqEzwN6rl1oUTpKOV5eXvw9Z7dtpsiC4TAPSNBmkqcM,3865
|
|
|
97
97
|
dtlpy/entities/webhook.py,sha256=6R06MgLxabvKySInGlSJmaf0AVmAMe3vKusWhqONRyU,3539
|
|
98
98
|
dtlpy/entities/annotation_definitions/__init__.py,sha256=qZ77hGmCQopPSpiDHYhNWbNKC7nrn10NWNlim9dINmg,666
|
|
99
99
|
dtlpy/entities/annotation_definitions/base_annotation_definition.py,sha256=tZGMokakJ4HjWAtD1obsgh2pORD66XWcnIT6CZLVMQs,3201
|
|
100
|
-
dtlpy/entities/annotation_definitions/box.py,sha256=
|
|
100
|
+
dtlpy/entities/annotation_definitions/box.py,sha256=A4NnMrHkq3CuvFR9wq-jqAMHMHKKWyc2gMwMHmQXKdU,6045
|
|
101
101
|
dtlpy/entities/annotation_definitions/classification.py,sha256=uqLAAaqNww2ZwR1e4UW22foJtDxoeZXJsv5PTvyt-tA,1559
|
|
102
102
|
dtlpy/entities/annotation_definitions/comparison.py,sha256=cp9HZ32wm7E78tbeoqsfJL5oZ26ojig7Cjn2FJE7mbI,1806
|
|
103
103
|
dtlpy/entities/annotation_definitions/cube.py,sha256=ZSCH6548EI3dhA9eVe4nDA2oiMFaOqYt4XDBc22TphQ,8554
|
|
@@ -155,7 +155,7 @@ dtlpy/ml/summary_writer.py,sha256=dehDi8zmGC1sAGyy_3cpSWGXoGQSiQd7bL_Thoo8yIs,27
|
|
|
155
155
|
dtlpy/ml/train_utils.py,sha256=R-BHKRfqDoLLhFyLzsRFyJ4E-8iedj9s9oZqy3IO2rg,2404
|
|
156
156
|
dtlpy/repositories/__init__.py,sha256=b7jPmE4meKaeikO-x87HcO2lcfQg-8OzqcYZa8n6l-Q,2033
|
|
157
157
|
dtlpy/repositories/analytics.py,sha256=dQPCYTPAIuyfVI_ppR49W7_GBj0033feIm9Gd7LW1V0,2966
|
|
158
|
-
dtlpy/repositories/annotations.py,sha256=
|
|
158
|
+
dtlpy/repositories/annotations.py,sha256=idTKzanNt-ncB0eIKE5p6WclrVGNjceI2Y7dAzDFtzY,43595
|
|
159
159
|
dtlpy/repositories/apps.py,sha256=J-PDCPWVtvTLmzzkABs2-8zo9hGLk_z_sNR2JB1mB0c,15752
|
|
160
160
|
dtlpy/repositories/artifacts.py,sha256=Ke2ustTNw-1eQ0onLsWY7gL2aChjXPAX5p1uQ_EzMbo,19081
|
|
161
161
|
dtlpy/repositories/assignments.py,sha256=1VwJZ7ctQe1iaDDDpeYDgoj2G-TCgzolVLUEqUocd2w,25506
|
|
@@ -165,15 +165,15 @@ dtlpy/repositories/collections.py,sha256=C_BPMg128Sl9AG3U4PxgI_2aaehQ2NuehMmzoTa
|
|
|
165
165
|
dtlpy/repositories/commands.py,sha256=i6gQgOmRDG8ixqKU7672H3CvGt8VLT3ihDVfri1eWWc,5610
|
|
166
166
|
dtlpy/repositories/compositions.py,sha256=H417BvlQAiWr5NH2eANFke6CfEO5o7DSvapYpf7v5Hk,2150
|
|
167
167
|
dtlpy/repositories/computes.py,sha256=l0-FS3_8WEGG5tbtIR3ltsZc6MyHVkiYajHTCaeUugk,10156
|
|
168
|
-
dtlpy/repositories/datasets.py,sha256=
|
|
169
|
-
dtlpy/repositories/downloader.py,sha256=
|
|
168
|
+
dtlpy/repositories/datasets.py,sha256=bKvQijZibjkGYQOsvB_tkwgZnaykJoCKXrXSqjR-_M8,58181
|
|
169
|
+
dtlpy/repositories/downloader.py,sha256=uMsSArbXAsVWeUsXg1G3yKffFUWoti3dHno78W7ctdg,44620
|
|
170
170
|
dtlpy/repositories/dpks.py,sha256=dglvaiSFBvEithhlQ0RAXwzTxoZaICONs-owx3e2nfU,17848
|
|
171
171
|
dtlpy/repositories/drivers.py,sha256=fF0UuHCyBzop8pHfryex23mf0kVFAkqzNdOmwBbaWxY,10204
|
|
172
172
|
dtlpy/repositories/executions.py,sha256=4UoU6bnB3kl5cMuF1eJvDecfZCaB06gKWxPfv6_g1_k,32598
|
|
173
173
|
dtlpy/repositories/feature_sets.py,sha256=UowMDAl_CRefRB5oZzubnsjU_OFgiPPdQXn8q2j4Kuw,9666
|
|
174
174
|
dtlpy/repositories/features.py,sha256=A_RqTJxzjTh-Wbm0uXaoTNyHSfCLbeiH38iB11p2ifY,9915
|
|
175
|
-
dtlpy/repositories/integrations.py,sha256=
|
|
176
|
-
dtlpy/repositories/items.py,sha256=
|
|
175
|
+
dtlpy/repositories/integrations.py,sha256=mE2KXFkZzvQj8gxYT0MuR0Slp4TKSiamm0Gk8CNttU0,17278
|
|
176
|
+
dtlpy/repositories/items.py,sha256=RmS-_wKSefOBvuUaXLgYbWWC2M0rGThGPco_wBJorx0,39752
|
|
177
177
|
dtlpy/repositories/messages.py,sha256=QU0Psckg6CA_Tlw9AVxqa-Ay1fRM4n269sSIJkH9o7E,3066
|
|
178
178
|
dtlpy/repositories/models.py,sha256=IekNMcnuKVaAVTJf2AJv6YvX5qCd9kkSl4ETPMWP4Zc,38213
|
|
179
179
|
dtlpy/repositories/nodes.py,sha256=xXJm_YA0vDUn0dVvaGeq6ORM0vI3YXvfjuylvGRtkxo,3061
|
|
@@ -182,13 +182,13 @@ dtlpy/repositories/organizations.py,sha256=6ijUDFbsogfRul1g_vUB5AZOb41MRmV5NhNU7
|
|
|
182
182
|
dtlpy/repositories/packages.py,sha256=QhkXMZkpseCt0pDropJuqoHJL0RMa5plk8AN0V3w6Nk,86807
|
|
183
183
|
dtlpy/repositories/pipeline_executions.py,sha256=hJX2I939c-bWxveVdikZ_9LWMNCQusTRkkdEa5j3Yvo,17007
|
|
184
184
|
dtlpy/repositories/pipelines.py,sha256=Mbe1x-7iX2kec6_f83Ji1xiNktz2jy1dRCvBMJTn7Po,23722
|
|
185
|
-
dtlpy/repositories/projects.py,sha256=
|
|
185
|
+
dtlpy/repositories/projects.py,sha256=TKLCuL7Inlv4GwgcQcuXkPQtgacfrXYjsTQng8nPC7Y,21623
|
|
186
186
|
dtlpy/repositories/recipes.py,sha256=ZZDhHn9g28C99bsf0nFaIpVYn6f6Jisz9upkHEkeaYY,15843
|
|
187
187
|
dtlpy/repositories/resource_executions.py,sha256=PyzsbdJxz6jf17Gx13GZmqdu6tZo3TTVv-DypnJ_sY0,5374
|
|
188
188
|
dtlpy/repositories/schema.py,sha256=kTKDrbwm7BfQnBAK81LpAl9ChNFdyUweSLNazlJJhjk,3953
|
|
189
189
|
dtlpy/repositories/services.py,sha256=2ruoPwyznRwsNtM7YK2vSGQP9jtCHB6WitRo-Z0yB_c,68576
|
|
190
|
-
dtlpy/repositories/settings.py,sha256=
|
|
191
|
-
dtlpy/repositories/tasks.py,sha256=
|
|
190
|
+
dtlpy/repositories/settings.py,sha256=HHYSGub5Y6cQ746pBfvlQndsgBj1UoNFupa2otgvsWI,11645
|
|
191
|
+
dtlpy/repositories/tasks.py,sha256=VKIltgjuSqfnyjePtmqmxO8baWehqrcqqggZl4Jfx00,50049
|
|
192
192
|
dtlpy/repositories/times_series.py,sha256=m-bKFEgiZ13yQNelDjBfeXMUy_HgsPD_JAHj1GVx9fU,11420
|
|
193
193
|
dtlpy/repositories/triggers.py,sha256=izdNyCN1gDc5uo7AXntso0HSMTDIzGFUp-dSEz8cn_U,21990
|
|
194
194
|
dtlpy/repositories/upload_element.py,sha256=R2KWIXmkp_dMAIr81tu3Y_VRfldj0ju8__V28ombkcg,10677
|
|
@@ -196,11 +196,11 @@ dtlpy/repositories/uploader.py,sha256=5qQbsg701HrL8x0wWCRLPBP_dztqXEb31QfeZnh0SQ
|
|
|
196
196
|
dtlpy/repositories/webhooks.py,sha256=IIpxOJ-7KeQp1TY9aJZz-FuycSjAoYx0TDk8z86KAK8,9033
|
|
197
197
|
dtlpy/services/__init__.py,sha256=VfVJy2otIrDra6i7Sepjyez2ujiE6171ChQZp-YgxsM,904
|
|
198
198
|
dtlpy/services/aihttp_retry.py,sha256=tgntZsAY0dW9v08rkjX1T5BLNDdDd8svtgn7nH8DSGU,5022
|
|
199
|
-
dtlpy/services/api_client.py,sha256=
|
|
199
|
+
dtlpy/services/api_client.py,sha256=HPG326fG6h0m0_w0JIRhpN-GIXxyeZU5BU3MkN-4kw4,71416
|
|
200
200
|
dtlpy/services/api_reference.py,sha256=cW-B3eoi9Xs3AwI87_Kr6GV_E6HPoC73aETFaGz3A-0,1515
|
|
201
201
|
dtlpy/services/async_utils.py,sha256=kaYHTPw0Lg8PeJJq8whPyzrBYkzD7offs5hsKRZXJm8,3960
|
|
202
202
|
dtlpy/services/calls_counter.py,sha256=gr0io5rIsO5-7Cgc8neA1vK8kUtYhgFPmDQ2jXtiZZs,1036
|
|
203
|
-
dtlpy/services/check_sdk.py,sha256=
|
|
203
|
+
dtlpy/services/check_sdk.py,sha256=H4KL5xrmNGfR9fUSxTVUeBm_3YFGjkwUZpFnqhFBJyI,2617
|
|
204
204
|
dtlpy/services/cookie.py,sha256=sSZR1QV4ienCcZ8lEK_Y4nZYBgAxO3kHrcBXFKGcmwQ,3694
|
|
205
205
|
dtlpy/services/create_logger.py,sha256=WFQjuvCuwrZoftFaU9jQkmEcOrL1XD-NqsuBqb5_SN4,6332
|
|
206
206
|
dtlpy/services/events.py,sha256=mpcu8RusLPrBcJEbWR61uFb4FiU_dQv3xoa7uM-rTcY,3686
|
|
@@ -224,9 +224,9 @@ dtlpy/utilities/reports/report.py,sha256=3nEsNnIWmdPEsd21nN8vMMgaZVcPKn9iawKTTeO
|
|
|
224
224
|
dtlpy/utilities/videos/__init__.py,sha256=SV3w51vfPuGBxaMeNemx6qEMHw_C4lLpWNGXMvdsKSY,734
|
|
225
225
|
dtlpy/utilities/videos/video_player.py,sha256=LCxg0EZ_DeuwcT7U_r7MRC6Q19s0xdFb7x5Gk39PRms,24072
|
|
226
226
|
dtlpy/utilities/videos/videos.py,sha256=Dj916B4TQRIhI7HZVevl3foFrCsPp0eeWwvGbgX3-_A,21875
|
|
227
|
-
dtlpy-1.
|
|
228
|
-
dtlpy-1.
|
|
229
|
-
dtlpy-1.
|
|
227
|
+
dtlpy-1.106.5.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
|
|
228
|
+
dtlpy-1.106.5.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
|
|
229
|
+
dtlpy-1.106.5.data/scripts/dlp.py,sha256=tEokRaDINISXnq8yNx_CBw1qM5uwjYiZoJOYGqWB3RU,4267
|
|
230
230
|
tests/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
231
231
|
tests/assets/models_flow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
232
232
|
tests/assets/models_flow/failedmain.py,sha256=n8F4eu_u7JPrJ1zedbJPvv9e3lHb3ihoErqrBIcseEc,1847
|
|
@@ -234,9 +234,9 @@ tests/assets/models_flow/main.py,sha256=vnDKyVZaae2RFpvwS22Hzi6Dt2LJerH4yQrmKtaT
|
|
|
234
234
|
tests/assets/models_flow/main_model.py,sha256=Hl_tv7Q6KaRL3yLkpUoLMRqu5-ab1QsUYPL6RPEoamw,2042
|
|
235
235
|
tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
236
236
|
tests/features/environment.py,sha256=TMeUzSZkksHqbxNBDLk-LYBMD4G5dMo4ZLZXPwQImVE,18751
|
|
237
|
-
dtlpy-1.
|
|
238
|
-
dtlpy-1.
|
|
239
|
-
dtlpy-1.
|
|
240
|
-
dtlpy-1.
|
|
241
|
-
dtlpy-1.
|
|
242
|
-
dtlpy-1.
|
|
237
|
+
dtlpy-1.106.5.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
238
|
+
dtlpy-1.106.5.dist-info/METADATA,sha256=UMKbsTir4mtoHZEXU2NnsiJ_Sq_Qje8Jv3YQ9jEWVbU,3019
|
|
239
|
+
dtlpy-1.106.5.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
|
240
|
+
dtlpy-1.106.5.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
|
|
241
|
+
dtlpy-1.106.5.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
|
|
242
|
+
dtlpy-1.106.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|