dtlpy 1.115.44__py3-none-any.whl → 1.116.6__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 +491 -491
- dtlpy/__version__.py +1 -1
- dtlpy/assets/__init__.py +26 -26
- dtlpy/assets/code_server/config.yaml +2 -2
- dtlpy/assets/code_server/installation.sh +24 -24
- dtlpy/assets/code_server/launch.json +13 -13
- dtlpy/assets/code_server/settings.json +2 -2
- dtlpy/assets/main.py +53 -53
- dtlpy/assets/main_partial.py +18 -18
- dtlpy/assets/mock.json +11 -11
- dtlpy/assets/model_adapter.py +83 -83
- dtlpy/assets/package.json +61 -61
- dtlpy/assets/package_catalog.json +29 -29
- dtlpy/assets/package_gitignore +307 -307
- dtlpy/assets/service_runners/__init__.py +33 -33
- dtlpy/assets/service_runners/converter.py +96 -96
- dtlpy/assets/service_runners/multi_method.py +49 -49
- dtlpy/assets/service_runners/multi_method_annotation.py +54 -54
- dtlpy/assets/service_runners/multi_method_dataset.py +55 -55
- dtlpy/assets/service_runners/multi_method_item.py +52 -52
- dtlpy/assets/service_runners/multi_method_json.py +52 -52
- dtlpy/assets/service_runners/single_method.py +37 -37
- dtlpy/assets/service_runners/single_method_annotation.py +43 -43
- dtlpy/assets/service_runners/single_method_dataset.py +43 -43
- dtlpy/assets/service_runners/single_method_item.py +41 -41
- dtlpy/assets/service_runners/single_method_json.py +42 -42
- dtlpy/assets/service_runners/single_method_multi_input.py +45 -45
- dtlpy/assets/voc_annotation_template.xml +23 -23
- dtlpy/caches/base_cache.py +32 -32
- dtlpy/caches/cache.py +473 -473
- dtlpy/caches/dl_cache.py +201 -201
- dtlpy/caches/filesystem_cache.py +89 -89
- dtlpy/caches/redis_cache.py +84 -84
- dtlpy/dlp/__init__.py +20 -20
- dtlpy/dlp/cli_utilities.py +367 -367
- dtlpy/dlp/command_executor.py +764 -764
- dtlpy/dlp/dlp +1 -1
- dtlpy/dlp/dlp.bat +1 -1
- dtlpy/dlp/dlp.py +128 -128
- dtlpy/dlp/parser.py +651 -651
- dtlpy/entities/__init__.py +83 -83
- dtlpy/entities/analytic.py +347 -347
- dtlpy/entities/annotation.py +1879 -1879
- dtlpy/entities/annotation_collection.py +699 -699
- dtlpy/entities/annotation_definitions/__init__.py +20 -20
- dtlpy/entities/annotation_definitions/base_annotation_definition.py +100 -100
- dtlpy/entities/annotation_definitions/box.py +195 -195
- dtlpy/entities/annotation_definitions/classification.py +67 -67
- dtlpy/entities/annotation_definitions/comparison.py +72 -72
- dtlpy/entities/annotation_definitions/cube.py +204 -204
- dtlpy/entities/annotation_definitions/cube_3d.py +149 -149
- dtlpy/entities/annotation_definitions/description.py +32 -32
- dtlpy/entities/annotation_definitions/ellipse.py +124 -124
- dtlpy/entities/annotation_definitions/free_text.py +62 -62
- dtlpy/entities/annotation_definitions/gis.py +69 -69
- dtlpy/entities/annotation_definitions/note.py +139 -139
- dtlpy/entities/annotation_definitions/point.py +117 -117
- dtlpy/entities/annotation_definitions/polygon.py +182 -182
- dtlpy/entities/annotation_definitions/polyline.py +111 -111
- dtlpy/entities/annotation_definitions/pose.py +92 -92
- dtlpy/entities/annotation_definitions/ref_image.py +86 -86
- dtlpy/entities/annotation_definitions/segmentation.py +240 -240
- dtlpy/entities/annotation_definitions/subtitle.py +34 -34
- dtlpy/entities/annotation_definitions/text.py +85 -85
- dtlpy/entities/annotation_definitions/undefined_annotation.py +74 -74
- dtlpy/entities/app.py +220 -220
- dtlpy/entities/app_module.py +107 -107
- dtlpy/entities/artifact.py +174 -174
- dtlpy/entities/assignment.py +399 -399
- dtlpy/entities/base_entity.py +214 -214
- dtlpy/entities/bot.py +113 -113
- dtlpy/entities/codebase.py +292 -292
- dtlpy/entities/collection.py +38 -38
- dtlpy/entities/command.py +169 -169
- dtlpy/entities/compute.py +449 -449
- dtlpy/entities/dataset.py +1299 -1299
- dtlpy/entities/directory_tree.py +44 -44
- dtlpy/entities/dpk.py +470 -470
- dtlpy/entities/driver.py +235 -235
- dtlpy/entities/execution.py +397 -397
- dtlpy/entities/feature.py +124 -124
- dtlpy/entities/feature_set.py +145 -145
- dtlpy/entities/filters.py +798 -798
- dtlpy/entities/gis_item.py +107 -107
- dtlpy/entities/integration.py +184 -184
- dtlpy/entities/item.py +959 -959
- dtlpy/entities/label.py +123 -123
- dtlpy/entities/links.py +85 -85
- dtlpy/entities/message.py +175 -175
- dtlpy/entities/model.py +684 -684
- dtlpy/entities/node.py +1005 -1005
- dtlpy/entities/ontology.py +810 -803
- dtlpy/entities/organization.py +287 -287
- dtlpy/entities/package.py +657 -657
- dtlpy/entities/package_defaults.py +5 -5
- dtlpy/entities/package_function.py +185 -185
- dtlpy/entities/package_module.py +113 -113
- dtlpy/entities/package_slot.py +118 -118
- dtlpy/entities/paged_entities.py +299 -299
- dtlpy/entities/pipeline.py +624 -624
- dtlpy/entities/pipeline_execution.py +279 -279
- dtlpy/entities/project.py +394 -394
- dtlpy/entities/prompt_item.py +505 -505
- dtlpy/entities/recipe.py +301 -301
- dtlpy/entities/reflect_dict.py +102 -102
- dtlpy/entities/resource_execution.py +138 -138
- dtlpy/entities/service.py +963 -963
- dtlpy/entities/service_driver.py +117 -117
- dtlpy/entities/setting.py +294 -294
- dtlpy/entities/task.py +495 -495
- dtlpy/entities/time_series.py +143 -143
- dtlpy/entities/trigger.py +426 -426
- dtlpy/entities/user.py +118 -118
- dtlpy/entities/webhook.py +124 -124
- dtlpy/examples/__init__.py +19 -19
- dtlpy/examples/add_labels.py +135 -135
- dtlpy/examples/add_metadata_to_item.py +21 -21
- dtlpy/examples/annotate_items_using_model.py +65 -65
- dtlpy/examples/annotate_video_using_model_and_tracker.py +75 -75
- dtlpy/examples/annotations_convert_to_voc.py +9 -9
- dtlpy/examples/annotations_convert_to_yolo.py +9 -9
- dtlpy/examples/convert_annotation_types.py +51 -51
- dtlpy/examples/converter.py +143 -143
- dtlpy/examples/copy_annotations.py +22 -22
- dtlpy/examples/copy_folder.py +31 -31
- dtlpy/examples/create_annotations.py +51 -51
- dtlpy/examples/create_video_annotations.py +83 -83
- dtlpy/examples/delete_annotations.py +26 -26
- dtlpy/examples/filters.py +113 -113
- dtlpy/examples/move_item.py +23 -23
- dtlpy/examples/play_video_annotation.py +13 -13
- dtlpy/examples/show_item_and_mask.py +53 -53
- dtlpy/examples/triggers.py +49 -49
- dtlpy/examples/upload_batch_of_items.py +20 -20
- dtlpy/examples/upload_items_and_custom_format_annotations.py +55 -55
- dtlpy/examples/upload_items_with_modalities.py +43 -43
- dtlpy/examples/upload_segmentation_annotations_from_mask_image.py +44 -44
- dtlpy/examples/upload_yolo_format_annotations.py +70 -70
- dtlpy/exceptions.py +125 -125
- dtlpy/miscellaneous/__init__.py +20 -20
- dtlpy/miscellaneous/dict_differ.py +95 -95
- dtlpy/miscellaneous/git_utils.py +217 -217
- dtlpy/miscellaneous/json_utils.py +14 -14
- dtlpy/miscellaneous/list_print.py +105 -105
- dtlpy/miscellaneous/zipping.py +130 -130
- dtlpy/ml/__init__.py +20 -20
- dtlpy/ml/base_feature_extractor_adapter.py +27 -27
- dtlpy/ml/base_model_adapter.py +1257 -1230
- dtlpy/ml/metrics.py +461 -461
- dtlpy/ml/predictions_utils.py +274 -274
- dtlpy/ml/summary_writer.py +57 -57
- dtlpy/ml/train_utils.py +60 -60
- dtlpy/new_instance.py +252 -252
- dtlpy/repositories/__init__.py +56 -56
- dtlpy/repositories/analytics.py +85 -85
- dtlpy/repositories/annotations.py +916 -916
- dtlpy/repositories/apps.py +383 -383
- dtlpy/repositories/artifacts.py +452 -452
- dtlpy/repositories/assignments.py +599 -599
- dtlpy/repositories/bots.py +213 -213
- dtlpy/repositories/codebases.py +559 -559
- dtlpy/repositories/collections.py +332 -332
- dtlpy/repositories/commands.py +152 -152
- dtlpy/repositories/compositions.py +61 -61
- dtlpy/repositories/computes.py +439 -439
- dtlpy/repositories/datasets.py +1504 -1504
- dtlpy/repositories/downloader.py +976 -923
- dtlpy/repositories/dpks.py +433 -433
- dtlpy/repositories/drivers.py +482 -482
- dtlpy/repositories/executions.py +815 -815
- dtlpy/repositories/feature_sets.py +226 -226
- dtlpy/repositories/features.py +255 -255
- dtlpy/repositories/integrations.py +484 -484
- dtlpy/repositories/items.py +912 -912
- dtlpy/repositories/messages.py +94 -94
- dtlpy/repositories/models.py +1000 -1000
- dtlpy/repositories/nodes.py +80 -80
- dtlpy/repositories/ontologies.py +511 -511
- dtlpy/repositories/organizations.py +525 -525
- dtlpy/repositories/packages.py +1941 -1941
- dtlpy/repositories/pipeline_executions.py +451 -451
- dtlpy/repositories/pipelines.py +640 -640
- dtlpy/repositories/projects.py +539 -539
- dtlpy/repositories/recipes.py +419 -399
- dtlpy/repositories/resource_executions.py +137 -137
- dtlpy/repositories/schema.py +120 -120
- dtlpy/repositories/service_drivers.py +213 -213
- dtlpy/repositories/services.py +1704 -1704
- dtlpy/repositories/settings.py +339 -339
- dtlpy/repositories/tasks.py +1477 -1477
- dtlpy/repositories/times_series.py +278 -278
- dtlpy/repositories/triggers.py +536 -536
- dtlpy/repositories/upload_element.py +257 -257
- dtlpy/repositories/uploader.py +661 -661
- dtlpy/repositories/webhooks.py +249 -249
- dtlpy/services/__init__.py +22 -22
- dtlpy/services/aihttp_retry.py +131 -131
- dtlpy/services/api_client.py +1785 -1785
- dtlpy/services/api_reference.py +40 -40
- dtlpy/services/async_utils.py +133 -133
- dtlpy/services/calls_counter.py +44 -44
- dtlpy/services/check_sdk.py +68 -68
- dtlpy/services/cookie.py +115 -115
- dtlpy/services/create_logger.py +156 -156
- dtlpy/services/events.py +84 -84
- dtlpy/services/logins.py +235 -235
- dtlpy/services/reporter.py +256 -256
- dtlpy/services/service_defaults.py +91 -91
- dtlpy/utilities/__init__.py +20 -20
- dtlpy/utilities/annotations/__init__.py +16 -16
- dtlpy/utilities/annotations/annotation_converters.py +269 -269
- dtlpy/utilities/base_package_runner.py +285 -264
- dtlpy/utilities/converter.py +1650 -1650
- dtlpy/utilities/dataset_generators/__init__.py +1 -1
- dtlpy/utilities/dataset_generators/dataset_generator.py +670 -670
- dtlpy/utilities/dataset_generators/dataset_generator_tensorflow.py +23 -23
- dtlpy/utilities/dataset_generators/dataset_generator_torch.py +21 -21
- dtlpy/utilities/local_development/__init__.py +1 -1
- dtlpy/utilities/local_development/local_session.py +179 -179
- dtlpy/utilities/reports/__init__.py +2 -2
- dtlpy/utilities/reports/figures.py +343 -343
- dtlpy/utilities/reports/report.py +71 -71
- dtlpy/utilities/videos/__init__.py +17 -17
- dtlpy/utilities/videos/video_player.py +598 -598
- dtlpy/utilities/videos/videos.py +470 -470
- {dtlpy-1.115.44.data → dtlpy-1.116.6.data}/scripts/dlp +1 -1
- dtlpy-1.116.6.data/scripts/dlp.bat +2 -0
- {dtlpy-1.115.44.data → dtlpy-1.116.6.data}/scripts/dlp.py +128 -128
- {dtlpy-1.115.44.dist-info → dtlpy-1.116.6.dist-info}/METADATA +186 -186
- dtlpy-1.116.6.dist-info/RECORD +239 -0
- {dtlpy-1.115.44.dist-info → dtlpy-1.116.6.dist-info}/WHEEL +1 -1
- {dtlpy-1.115.44.dist-info → dtlpy-1.116.6.dist-info}/licenses/LICENSE +200 -200
- tests/features/environment.py +551 -551
- dtlpy/assets/__pycache__/__init__.cpython-310.pyc +0 -0
- dtlpy-1.115.44.data/scripts/dlp.bat +0 -2
- dtlpy-1.115.44.dist-info/RECORD +0 -240
- {dtlpy-1.115.44.dist-info → dtlpy-1.116.6.dist-info}/entry_points.txt +0 -0
- {dtlpy-1.115.44.dist-info → dtlpy-1.116.6.dist-info}/top_level.txt +0 -0
dtlpy/entities/feature.py
CHANGED
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
import attr
|
|
2
|
-
import traceback
|
|
3
|
-
from collections import namedtuple
|
|
4
|
-
from enum import Enum
|
|
5
|
-
|
|
6
|
-
from .. import repositories, entities
|
|
7
|
-
from ..services.api_client import ApiClient
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@attr.s
|
|
11
|
-
class Feature(entities.BaseEntity):
|
|
12
|
-
"""
|
|
13
|
-
Com entity
|
|
14
|
-
"""
|
|
15
|
-
# platform
|
|
16
|
-
id = attr.ib()
|
|
17
|
-
entity_id = attr.ib()
|
|
18
|
-
url = attr.ib(repr=False)
|
|
19
|
-
created_at = attr.ib()
|
|
20
|
-
feature_set_id = attr.ib()
|
|
21
|
-
version = attr.ib()
|
|
22
|
-
value = attr.ib()
|
|
23
|
-
parent_id = attr.ib()
|
|
24
|
-
project_id = attr.ib()
|
|
25
|
-
org_id = attr.ib()
|
|
26
|
-
creator = attr.ib()
|
|
27
|
-
|
|
28
|
-
# sdk
|
|
29
|
-
_client_api = attr.ib(type=ApiClient, repr=False)
|
|
30
|
-
_repositories = attr.ib(repr=False)
|
|
31
|
-
|
|
32
|
-
################
|
|
33
|
-
# repositories #
|
|
34
|
-
################
|
|
35
|
-
@_repositories.default
|
|
36
|
-
def set_repositories(self):
|
|
37
|
-
reps = namedtuple('repositories',
|
|
38
|
-
field_names=['features', 'features_sets'])
|
|
39
|
-
features_repo = repositories.Features(client_api=self._client_api)
|
|
40
|
-
r = reps(features=features_repo,
|
|
41
|
-
features_sets=repositories.FeatureSets(client_api=self._client_api))
|
|
42
|
-
return r
|
|
43
|
-
|
|
44
|
-
@property
|
|
45
|
-
def features(self):
|
|
46
|
-
assert isinstance(self._repositories.features, repositories.Features)
|
|
47
|
-
return self._repositories.features
|
|
48
|
-
|
|
49
|
-
@staticmethod
|
|
50
|
-
def _protected_from_json(_json, client_api, is_fetched=True):
|
|
51
|
-
"""
|
|
52
|
-
Same as from_json but with try-except to catch if error
|
|
53
|
-
:param _json:
|
|
54
|
-
:param client_api:
|
|
55
|
-
:return:
|
|
56
|
-
"""
|
|
57
|
-
try:
|
|
58
|
-
feature = Feature.from_json(_json=_json,
|
|
59
|
-
client_api=client_api,
|
|
60
|
-
is_fetched=is_fetched)
|
|
61
|
-
status = True
|
|
62
|
-
except Exception:
|
|
63
|
-
feature = traceback.format_exc()
|
|
64
|
-
status = False
|
|
65
|
-
return status, feature
|
|
66
|
-
|
|
67
|
-
@classmethod
|
|
68
|
-
def from_json(cls, _json, client_api, is_fetched=True):
|
|
69
|
-
"""
|
|
70
|
-
Build a Feature entity object from a json
|
|
71
|
-
|
|
72
|
-
:param is_fetched: is Entity fetched from Platform
|
|
73
|
-
:param _json: _json response from host
|
|
74
|
-
:param client_api: client_api
|
|
75
|
-
:return: Feature object
|
|
76
|
-
"""
|
|
77
|
-
inst = cls(
|
|
78
|
-
id=_json.get('id', None),
|
|
79
|
-
feature_set_id=_json.get('featureSetId', None),
|
|
80
|
-
entity_id=_json.get('entityId', None),
|
|
81
|
-
url=_json.get('url', None),
|
|
82
|
-
project_id=_json.get('project', None),
|
|
83
|
-
created_at=_json.get('createdAt', None),
|
|
84
|
-
version=_json.get('version', None),
|
|
85
|
-
value=_json.get('value', None),
|
|
86
|
-
parent_id=_json.get('parentId', None),
|
|
87
|
-
client_api=client_api,
|
|
88
|
-
org_id=_json.get('org', None),
|
|
89
|
-
creator=_json.get('creator', None),
|
|
90
|
-
)
|
|
91
|
-
inst.is_fetched = is_fetched
|
|
92
|
-
return inst
|
|
93
|
-
|
|
94
|
-
def to_json(self):
|
|
95
|
-
"""
|
|
96
|
-
Returns platform _json format of object
|
|
97
|
-
|
|
98
|
-
:return: platform json format of object
|
|
99
|
-
:rtype: dict
|
|
100
|
-
"""
|
|
101
|
-
|
|
102
|
-
_json = {'createdAt': self.created_at,
|
|
103
|
-
'entityId': self.entity_id,
|
|
104
|
-
'id': self.id,
|
|
105
|
-
'featureSetId': self.feature_set_id,
|
|
106
|
-
'url': self.url,
|
|
107
|
-
'project': self.project_id,
|
|
108
|
-
'creator': self.creator,
|
|
109
|
-
'version': self.version,
|
|
110
|
-
'value': self.value,
|
|
111
|
-
}
|
|
112
|
-
if self.parent_id is not None:
|
|
113
|
-
_json['parentId'] = self.parent_id
|
|
114
|
-
if self.org_id is not None:
|
|
115
|
-
_json['org'] = self.org_id
|
|
116
|
-
return _json
|
|
117
|
-
|
|
118
|
-
def delete(self):
|
|
119
|
-
"""
|
|
120
|
-
Delete Feature Vector object
|
|
121
|
-
|
|
122
|
-
:return: True
|
|
123
|
-
"""
|
|
124
|
-
return self.features.delete(feature_id=self.id)
|
|
1
|
+
import attr
|
|
2
|
+
import traceback
|
|
3
|
+
from collections import namedtuple
|
|
4
|
+
from enum import Enum
|
|
5
|
+
|
|
6
|
+
from .. import repositories, entities
|
|
7
|
+
from ..services.api_client import ApiClient
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@attr.s
|
|
11
|
+
class Feature(entities.BaseEntity):
|
|
12
|
+
"""
|
|
13
|
+
Com entity
|
|
14
|
+
"""
|
|
15
|
+
# platform
|
|
16
|
+
id = attr.ib()
|
|
17
|
+
entity_id = attr.ib()
|
|
18
|
+
url = attr.ib(repr=False)
|
|
19
|
+
created_at = attr.ib()
|
|
20
|
+
feature_set_id = attr.ib()
|
|
21
|
+
version = attr.ib()
|
|
22
|
+
value = attr.ib()
|
|
23
|
+
parent_id = attr.ib()
|
|
24
|
+
project_id = attr.ib()
|
|
25
|
+
org_id = attr.ib()
|
|
26
|
+
creator = attr.ib()
|
|
27
|
+
|
|
28
|
+
# sdk
|
|
29
|
+
_client_api = attr.ib(type=ApiClient, repr=False)
|
|
30
|
+
_repositories = attr.ib(repr=False)
|
|
31
|
+
|
|
32
|
+
################
|
|
33
|
+
# repositories #
|
|
34
|
+
################
|
|
35
|
+
@_repositories.default
|
|
36
|
+
def set_repositories(self):
|
|
37
|
+
reps = namedtuple('repositories',
|
|
38
|
+
field_names=['features', 'features_sets'])
|
|
39
|
+
features_repo = repositories.Features(client_api=self._client_api)
|
|
40
|
+
r = reps(features=features_repo,
|
|
41
|
+
features_sets=repositories.FeatureSets(client_api=self._client_api))
|
|
42
|
+
return r
|
|
43
|
+
|
|
44
|
+
@property
|
|
45
|
+
def features(self):
|
|
46
|
+
assert isinstance(self._repositories.features, repositories.Features)
|
|
47
|
+
return self._repositories.features
|
|
48
|
+
|
|
49
|
+
@staticmethod
|
|
50
|
+
def _protected_from_json(_json, client_api, is_fetched=True):
|
|
51
|
+
"""
|
|
52
|
+
Same as from_json but with try-except to catch if error
|
|
53
|
+
:param _json:
|
|
54
|
+
:param client_api:
|
|
55
|
+
:return:
|
|
56
|
+
"""
|
|
57
|
+
try:
|
|
58
|
+
feature = Feature.from_json(_json=_json,
|
|
59
|
+
client_api=client_api,
|
|
60
|
+
is_fetched=is_fetched)
|
|
61
|
+
status = True
|
|
62
|
+
except Exception:
|
|
63
|
+
feature = traceback.format_exc()
|
|
64
|
+
status = False
|
|
65
|
+
return status, feature
|
|
66
|
+
|
|
67
|
+
@classmethod
|
|
68
|
+
def from_json(cls, _json, client_api, is_fetched=True):
|
|
69
|
+
"""
|
|
70
|
+
Build a Feature entity object from a json
|
|
71
|
+
|
|
72
|
+
:param is_fetched: is Entity fetched from Platform
|
|
73
|
+
:param _json: _json response from host
|
|
74
|
+
:param client_api: client_api
|
|
75
|
+
:return: Feature object
|
|
76
|
+
"""
|
|
77
|
+
inst = cls(
|
|
78
|
+
id=_json.get('id', None),
|
|
79
|
+
feature_set_id=_json.get('featureSetId', None),
|
|
80
|
+
entity_id=_json.get('entityId', None),
|
|
81
|
+
url=_json.get('url', None),
|
|
82
|
+
project_id=_json.get('project', None),
|
|
83
|
+
created_at=_json.get('createdAt', None),
|
|
84
|
+
version=_json.get('version', None),
|
|
85
|
+
value=_json.get('value', None),
|
|
86
|
+
parent_id=_json.get('parentId', None),
|
|
87
|
+
client_api=client_api,
|
|
88
|
+
org_id=_json.get('org', None),
|
|
89
|
+
creator=_json.get('creator', None),
|
|
90
|
+
)
|
|
91
|
+
inst.is_fetched = is_fetched
|
|
92
|
+
return inst
|
|
93
|
+
|
|
94
|
+
def to_json(self):
|
|
95
|
+
"""
|
|
96
|
+
Returns platform _json format of object
|
|
97
|
+
|
|
98
|
+
:return: platform json format of object
|
|
99
|
+
:rtype: dict
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
_json = {'createdAt': self.created_at,
|
|
103
|
+
'entityId': self.entity_id,
|
|
104
|
+
'id': self.id,
|
|
105
|
+
'featureSetId': self.feature_set_id,
|
|
106
|
+
'url': self.url,
|
|
107
|
+
'project': self.project_id,
|
|
108
|
+
'creator': self.creator,
|
|
109
|
+
'version': self.version,
|
|
110
|
+
'value': self.value,
|
|
111
|
+
}
|
|
112
|
+
if self.parent_id is not None:
|
|
113
|
+
_json['parentId'] = self.parent_id
|
|
114
|
+
if self.org_id is not None:
|
|
115
|
+
_json['org'] = self.org_id
|
|
116
|
+
return _json
|
|
117
|
+
|
|
118
|
+
def delete(self):
|
|
119
|
+
"""
|
|
120
|
+
Delete Feature Vector object
|
|
121
|
+
|
|
122
|
+
:return: True
|
|
123
|
+
"""
|
|
124
|
+
return self.features.delete(feature_id=self.id)
|
dtlpy/entities/feature_set.py
CHANGED
|
@@ -1,145 +1,145 @@
|
|
|
1
|
-
from enum import Enum
|
|
2
|
-
|
|
3
|
-
import attr
|
|
4
|
-
import traceback
|
|
5
|
-
from collections import namedtuple
|
|
6
|
-
|
|
7
|
-
from .. import repositories, entities
|
|
8
|
-
from ..services.api_client import ApiClient
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class FeatureEntityType(str, Enum):
|
|
12
|
-
"""Available types for Feature Set entities"""
|
|
13
|
-
ITEM = 'item'
|
|
14
|
-
ANNOTATION = 'annotation'
|
|
15
|
-
DATASET = 'dataset'
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@attr.s
|
|
19
|
-
class FeatureSet(entities.BaseEntity):
|
|
20
|
-
"""
|
|
21
|
-
Com entity
|
|
22
|
-
"""
|
|
23
|
-
# platform
|
|
24
|
-
id = attr.ib()
|
|
25
|
-
name = attr.ib()
|
|
26
|
-
url = attr.ib(repr=False)
|
|
27
|
-
creator = attr.ib(repr=False)
|
|
28
|
-
created_at = attr.ib()
|
|
29
|
-
updated_by = attr.ib()
|
|
30
|
-
size = attr.ib()
|
|
31
|
-
set_type = attr.ib()
|
|
32
|
-
entity_type = attr.ib()
|
|
33
|
-
project_id = attr.ib()
|
|
34
|
-
model_id = attr.ib()
|
|
35
|
-
org_id = attr.ib()
|
|
36
|
-
|
|
37
|
-
# sdk
|
|
38
|
-
_client_api = attr.ib(type=ApiClient, repr=False)
|
|
39
|
-
_repositories = attr.ib(repr=False)
|
|
40
|
-
|
|
41
|
-
################
|
|
42
|
-
# repositories #
|
|
43
|
-
################
|
|
44
|
-
@_repositories.default
|
|
45
|
-
def set_repositories(self):
|
|
46
|
-
reps = namedtuple('repositories',
|
|
47
|
-
field_names=['feature_sets', 'features'])
|
|
48
|
-
feature_sets_repo = repositories.FeatureSets(client_api=self._client_api,
|
|
49
|
-
project_id=self.project_id)
|
|
50
|
-
features_repo = repositories.Features(client_api=self._client_api,
|
|
51
|
-
project_id=self.project_id,
|
|
52
|
-
feature_set=self, )
|
|
53
|
-
r = reps(feature_sets=feature_sets_repo,
|
|
54
|
-
features=features_repo)
|
|
55
|
-
return r
|
|
56
|
-
|
|
57
|
-
@property
|
|
58
|
-
def feature_sets(self):
|
|
59
|
-
assert isinstance(self._repositories.feature_sets, repositories.FeatureSets)
|
|
60
|
-
return self._repositories.feature_sets
|
|
61
|
-
|
|
62
|
-
@property
|
|
63
|
-
def features(self):
|
|
64
|
-
assert isinstance(self._repositories.features, repositories.Features)
|
|
65
|
-
return self._repositories.features
|
|
66
|
-
|
|
67
|
-
@staticmethod
|
|
68
|
-
def _protected_from_json(_json, client_api, is_fetched=True):
|
|
69
|
-
"""
|
|
70
|
-
Same as from_json but with try-except to catch if error
|
|
71
|
-
|
|
72
|
-
:param _json: entity's object json
|
|
73
|
-
:param client_api:
|
|
74
|
-
:return:
|
|
75
|
-
"""
|
|
76
|
-
try:
|
|
77
|
-
feature_set = FeatureSet.from_json(_json=_json,
|
|
78
|
-
client_api=client_api,
|
|
79
|
-
is_fetched=is_fetched)
|
|
80
|
-
status = True
|
|
81
|
-
except Exception:
|
|
82
|
-
feature_set = traceback.format_exc()
|
|
83
|
-
status = False
|
|
84
|
-
return status, feature_set
|
|
85
|
-
|
|
86
|
-
@classmethod
|
|
87
|
-
def from_json(cls, _json, client_api, is_fetched=True):
|
|
88
|
-
"""
|
|
89
|
-
Build a Feature Set entity object from a json
|
|
90
|
-
|
|
91
|
-
:param is_fetched: is Entity fetched from Platform
|
|
92
|
-
:param _json: entity's object json
|
|
93
|
-
:param client_api: client_api
|
|
94
|
-
:return: Feature object
|
|
95
|
-
"""
|
|
96
|
-
inst = cls(
|
|
97
|
-
id=_json.get('id', None),
|
|
98
|
-
name=_json.get('name', None),
|
|
99
|
-
set_type=_json.get('type', None),
|
|
100
|
-
entity_type=_json.get('entityType', None),
|
|
101
|
-
size=_json.get('size', None),
|
|
102
|
-
url=_json.get('url', None),
|
|
103
|
-
project_id=_json.get('project', None),
|
|
104
|
-
model_id=_json.get('modelId', None),
|
|
105
|
-
created_at=_json.get('createdAt', None),
|
|
106
|
-
creator=_json.get('creator', None),
|
|
107
|
-
updated_by=_json.get('updatedBy', None),
|
|
108
|
-
client_api=client_api,
|
|
109
|
-
org_id=_json.get('org', None),
|
|
110
|
-
)
|
|
111
|
-
inst.is_fetched = is_fetched
|
|
112
|
-
return inst
|
|
113
|
-
|
|
114
|
-
def to_json(self):
|
|
115
|
-
"""
|
|
116
|
-
Returns platform _json format of object
|
|
117
|
-
|
|
118
|
-
:return: platform json format of object
|
|
119
|
-
:rtype: dict
|
|
120
|
-
"""
|
|
121
|
-
|
|
122
|
-
_json = {'id': self.id,
|
|
123
|
-
'type': self.set_type,
|
|
124
|
-
'entityType': self.entity_type,
|
|
125
|
-
'project': self.project_id,
|
|
126
|
-
'modelId': self.model_id,
|
|
127
|
-
'creator': self.creator,
|
|
128
|
-
'createdAt': self.created_at,
|
|
129
|
-
'updatedBy': self.updated_by,
|
|
130
|
-
'name': self.name,
|
|
131
|
-
'size': self.size,
|
|
132
|
-
'url': self.url}
|
|
133
|
-
if self.org_id is not None:
|
|
134
|
-
_json['org'] = self.org_id
|
|
135
|
-
|
|
136
|
-
return _json
|
|
137
|
-
|
|
138
|
-
def delete(self):
|
|
139
|
-
"""
|
|
140
|
-
Delete the feature set
|
|
141
|
-
|
|
142
|
-
:return: success
|
|
143
|
-
:rtype: bool
|
|
144
|
-
"""
|
|
145
|
-
return self.feature_sets.delete(feature_set_id=self.id)
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
import attr
|
|
4
|
+
import traceback
|
|
5
|
+
from collections import namedtuple
|
|
6
|
+
|
|
7
|
+
from .. import repositories, entities
|
|
8
|
+
from ..services.api_client import ApiClient
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class FeatureEntityType(str, Enum):
|
|
12
|
+
"""Available types for Feature Set entities"""
|
|
13
|
+
ITEM = 'item'
|
|
14
|
+
ANNOTATION = 'annotation'
|
|
15
|
+
DATASET = 'dataset'
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@attr.s
|
|
19
|
+
class FeatureSet(entities.BaseEntity):
|
|
20
|
+
"""
|
|
21
|
+
Com entity
|
|
22
|
+
"""
|
|
23
|
+
# platform
|
|
24
|
+
id = attr.ib()
|
|
25
|
+
name = attr.ib()
|
|
26
|
+
url = attr.ib(repr=False)
|
|
27
|
+
creator = attr.ib(repr=False)
|
|
28
|
+
created_at = attr.ib()
|
|
29
|
+
updated_by = attr.ib()
|
|
30
|
+
size = attr.ib()
|
|
31
|
+
set_type = attr.ib()
|
|
32
|
+
entity_type = attr.ib()
|
|
33
|
+
project_id = attr.ib()
|
|
34
|
+
model_id = attr.ib()
|
|
35
|
+
org_id = attr.ib()
|
|
36
|
+
|
|
37
|
+
# sdk
|
|
38
|
+
_client_api = attr.ib(type=ApiClient, repr=False)
|
|
39
|
+
_repositories = attr.ib(repr=False)
|
|
40
|
+
|
|
41
|
+
################
|
|
42
|
+
# repositories #
|
|
43
|
+
################
|
|
44
|
+
@_repositories.default
|
|
45
|
+
def set_repositories(self):
|
|
46
|
+
reps = namedtuple('repositories',
|
|
47
|
+
field_names=['feature_sets', 'features'])
|
|
48
|
+
feature_sets_repo = repositories.FeatureSets(client_api=self._client_api,
|
|
49
|
+
project_id=self.project_id)
|
|
50
|
+
features_repo = repositories.Features(client_api=self._client_api,
|
|
51
|
+
project_id=self.project_id,
|
|
52
|
+
feature_set=self, )
|
|
53
|
+
r = reps(feature_sets=feature_sets_repo,
|
|
54
|
+
features=features_repo)
|
|
55
|
+
return r
|
|
56
|
+
|
|
57
|
+
@property
|
|
58
|
+
def feature_sets(self):
|
|
59
|
+
assert isinstance(self._repositories.feature_sets, repositories.FeatureSets)
|
|
60
|
+
return self._repositories.feature_sets
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def features(self):
|
|
64
|
+
assert isinstance(self._repositories.features, repositories.Features)
|
|
65
|
+
return self._repositories.features
|
|
66
|
+
|
|
67
|
+
@staticmethod
|
|
68
|
+
def _protected_from_json(_json, client_api, is_fetched=True):
|
|
69
|
+
"""
|
|
70
|
+
Same as from_json but with try-except to catch if error
|
|
71
|
+
|
|
72
|
+
:param _json: entity's object json
|
|
73
|
+
:param client_api:
|
|
74
|
+
:return:
|
|
75
|
+
"""
|
|
76
|
+
try:
|
|
77
|
+
feature_set = FeatureSet.from_json(_json=_json,
|
|
78
|
+
client_api=client_api,
|
|
79
|
+
is_fetched=is_fetched)
|
|
80
|
+
status = True
|
|
81
|
+
except Exception:
|
|
82
|
+
feature_set = traceback.format_exc()
|
|
83
|
+
status = False
|
|
84
|
+
return status, feature_set
|
|
85
|
+
|
|
86
|
+
@classmethod
|
|
87
|
+
def from_json(cls, _json, client_api, is_fetched=True):
|
|
88
|
+
"""
|
|
89
|
+
Build a Feature Set entity object from a json
|
|
90
|
+
|
|
91
|
+
:param is_fetched: is Entity fetched from Platform
|
|
92
|
+
:param _json: entity's object json
|
|
93
|
+
:param client_api: client_api
|
|
94
|
+
:return: Feature object
|
|
95
|
+
"""
|
|
96
|
+
inst = cls(
|
|
97
|
+
id=_json.get('id', None),
|
|
98
|
+
name=_json.get('name', None),
|
|
99
|
+
set_type=_json.get('type', None),
|
|
100
|
+
entity_type=_json.get('entityType', None),
|
|
101
|
+
size=_json.get('size', None),
|
|
102
|
+
url=_json.get('url', None),
|
|
103
|
+
project_id=_json.get('project', None),
|
|
104
|
+
model_id=_json.get('modelId', None),
|
|
105
|
+
created_at=_json.get('createdAt', None),
|
|
106
|
+
creator=_json.get('creator', None),
|
|
107
|
+
updated_by=_json.get('updatedBy', None),
|
|
108
|
+
client_api=client_api,
|
|
109
|
+
org_id=_json.get('org', None),
|
|
110
|
+
)
|
|
111
|
+
inst.is_fetched = is_fetched
|
|
112
|
+
return inst
|
|
113
|
+
|
|
114
|
+
def to_json(self):
|
|
115
|
+
"""
|
|
116
|
+
Returns platform _json format of object
|
|
117
|
+
|
|
118
|
+
:return: platform json format of object
|
|
119
|
+
:rtype: dict
|
|
120
|
+
"""
|
|
121
|
+
|
|
122
|
+
_json = {'id': self.id,
|
|
123
|
+
'type': self.set_type,
|
|
124
|
+
'entityType': self.entity_type,
|
|
125
|
+
'project': self.project_id,
|
|
126
|
+
'modelId': self.model_id,
|
|
127
|
+
'creator': self.creator,
|
|
128
|
+
'createdAt': self.created_at,
|
|
129
|
+
'updatedBy': self.updated_by,
|
|
130
|
+
'name': self.name,
|
|
131
|
+
'size': self.size,
|
|
132
|
+
'url': self.url}
|
|
133
|
+
if self.org_id is not None:
|
|
134
|
+
_json['org'] = self.org_id
|
|
135
|
+
|
|
136
|
+
return _json
|
|
137
|
+
|
|
138
|
+
def delete(self):
|
|
139
|
+
"""
|
|
140
|
+
Delete the feature set
|
|
141
|
+
|
|
142
|
+
:return: success
|
|
143
|
+
:rtype: bool
|
|
144
|
+
"""
|
|
145
|
+
return self.feature_sets.delete(feature_set_id=self.id)
|