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/user.py
CHANGED
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
import traceback
|
|
2
|
-
import logging
|
|
3
|
-
import attr
|
|
4
|
-
|
|
5
|
-
from .. import entities, exceptions
|
|
6
|
-
|
|
7
|
-
logger = logging.getLogger(name='dtlpy')
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@attr.s
|
|
11
|
-
class User(entities.BaseEntity):
|
|
12
|
-
"""
|
|
13
|
-
User entity
|
|
14
|
-
"""
|
|
15
|
-
created_at = attr.ib()
|
|
16
|
-
updated_at = attr.ib(repr=False)
|
|
17
|
-
name = attr.ib()
|
|
18
|
-
last_name = attr.ib()
|
|
19
|
-
username = attr.ib()
|
|
20
|
-
avatar = attr.ib(repr=False)
|
|
21
|
-
email = attr.ib()
|
|
22
|
-
role = attr.ib()
|
|
23
|
-
type = attr.ib()
|
|
24
|
-
org = attr.ib()
|
|
25
|
-
id = attr.ib()
|
|
26
|
-
|
|
27
|
-
# api
|
|
28
|
-
_project = attr.ib(repr=False)
|
|
29
|
-
_client_api = attr.ib(default=None, repr=False)
|
|
30
|
-
_users = attr.ib(repr=False, default=None)
|
|
31
|
-
|
|
32
|
-
@property
|
|
33
|
-
def createdAt(self):
|
|
34
|
-
return self.created_at
|
|
35
|
-
|
|
36
|
-
@property
|
|
37
|
-
def updatedAt(self):
|
|
38
|
-
return self.updated_at
|
|
39
|
-
|
|
40
|
-
@staticmethod
|
|
41
|
-
def _protected_from_json(_json, project, client_api, users=None):
|
|
42
|
-
"""
|
|
43
|
-
Same as from_json but with try-except to catch if error
|
|
44
|
-
|
|
45
|
-
:param _json: platform json
|
|
46
|
-
:param project: project entity
|
|
47
|
-
:param client_api: ApiClient entity
|
|
48
|
-
:param users: Users repository
|
|
49
|
-
:return:
|
|
50
|
-
"""
|
|
51
|
-
try:
|
|
52
|
-
user = User.from_json(_json=_json,
|
|
53
|
-
project=project,
|
|
54
|
-
users=users,
|
|
55
|
-
client_api=client_api)
|
|
56
|
-
status = True
|
|
57
|
-
except Exception:
|
|
58
|
-
user = traceback.format_exc()
|
|
59
|
-
status = False
|
|
60
|
-
return status, user
|
|
61
|
-
|
|
62
|
-
@property
|
|
63
|
-
def project(self):
|
|
64
|
-
if self._project is None:
|
|
65
|
-
raise exceptions.PlatformException(error='2001',
|
|
66
|
-
message='Missing entity "project".')
|
|
67
|
-
assert isinstance(self._project, entities.Project)
|
|
68
|
-
return self._project
|
|
69
|
-
|
|
70
|
-
@classmethod
|
|
71
|
-
def from_json(cls, _json, project, client_api, users=None):
|
|
72
|
-
"""
|
|
73
|
-
Build a User entity object from a json
|
|
74
|
-
|
|
75
|
-
:param dict _json: _json response from host
|
|
76
|
-
:param dtlpy.entities.project.Project project: project entity
|
|
77
|
-
:param client_api: ApiClient entity
|
|
78
|
-
:param users: Users repository
|
|
79
|
-
:return: User object
|
|
80
|
-
:rtype: dtlpy.entities.user.User
|
|
81
|
-
"""
|
|
82
|
-
return cls(
|
|
83
|
-
created_at=_json.get('createdAt', None),
|
|
84
|
-
name=_json.get('firstName', None),
|
|
85
|
-
updated_at=_json.get('updatedAt', None),
|
|
86
|
-
last_name=_json.get('lastName', None),
|
|
87
|
-
username=_json.get('username', None),
|
|
88
|
-
avatar=_json.get('avatar', None),
|
|
89
|
-
email=_json.get('email', None),
|
|
90
|
-
role=_json.get('role', None),
|
|
91
|
-
type=_json.get('type', None),
|
|
92
|
-
org=_json.get('org', None),
|
|
93
|
-
id=_json.get('id', None),
|
|
94
|
-
project=project,
|
|
95
|
-
users=users,
|
|
96
|
-
client_api=client_api)
|
|
97
|
-
|
|
98
|
-
def to_json(self):
|
|
99
|
-
"""
|
|
100
|
-
Returns platform _json format of object
|
|
101
|
-
|
|
102
|
-
:return: platform json format of object
|
|
103
|
-
:rtype: dict
|
|
104
|
-
"""
|
|
105
|
-
_json = attr.asdict(self,
|
|
106
|
-
filter=attr.filters.exclude(attr.fields(User)._project,
|
|
107
|
-
attr.fields(User).name,
|
|
108
|
-
attr.fields(User)._client_api,
|
|
109
|
-
attr.fields(User)._users,
|
|
110
|
-
attr.fields(User).last_name,
|
|
111
|
-
attr.fields(User).created_at,
|
|
112
|
-
attr.fields(User).updated_at,
|
|
113
|
-
))
|
|
114
|
-
_json['firstName'] = self.name
|
|
115
|
-
_json['lastName'] = self.last_name
|
|
116
|
-
_json['createdAt'] = self.created_at
|
|
117
|
-
_json['updatedAt'] = self.updated_at
|
|
118
|
-
return _json
|
|
1
|
+
import traceback
|
|
2
|
+
import logging
|
|
3
|
+
import attr
|
|
4
|
+
|
|
5
|
+
from .. import entities, exceptions
|
|
6
|
+
|
|
7
|
+
logger = logging.getLogger(name='dtlpy')
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@attr.s
|
|
11
|
+
class User(entities.BaseEntity):
|
|
12
|
+
"""
|
|
13
|
+
User entity
|
|
14
|
+
"""
|
|
15
|
+
created_at = attr.ib()
|
|
16
|
+
updated_at = attr.ib(repr=False)
|
|
17
|
+
name = attr.ib()
|
|
18
|
+
last_name = attr.ib()
|
|
19
|
+
username = attr.ib()
|
|
20
|
+
avatar = attr.ib(repr=False)
|
|
21
|
+
email = attr.ib()
|
|
22
|
+
role = attr.ib()
|
|
23
|
+
type = attr.ib()
|
|
24
|
+
org = attr.ib()
|
|
25
|
+
id = attr.ib()
|
|
26
|
+
|
|
27
|
+
# api
|
|
28
|
+
_project = attr.ib(repr=False)
|
|
29
|
+
_client_api = attr.ib(default=None, repr=False)
|
|
30
|
+
_users = attr.ib(repr=False, default=None)
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def createdAt(self):
|
|
34
|
+
return self.created_at
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def updatedAt(self):
|
|
38
|
+
return self.updated_at
|
|
39
|
+
|
|
40
|
+
@staticmethod
|
|
41
|
+
def _protected_from_json(_json, project, client_api, users=None):
|
|
42
|
+
"""
|
|
43
|
+
Same as from_json but with try-except to catch if error
|
|
44
|
+
|
|
45
|
+
:param _json: platform json
|
|
46
|
+
:param project: project entity
|
|
47
|
+
:param client_api: ApiClient entity
|
|
48
|
+
:param users: Users repository
|
|
49
|
+
:return:
|
|
50
|
+
"""
|
|
51
|
+
try:
|
|
52
|
+
user = User.from_json(_json=_json,
|
|
53
|
+
project=project,
|
|
54
|
+
users=users,
|
|
55
|
+
client_api=client_api)
|
|
56
|
+
status = True
|
|
57
|
+
except Exception:
|
|
58
|
+
user = traceback.format_exc()
|
|
59
|
+
status = False
|
|
60
|
+
return status, user
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def project(self):
|
|
64
|
+
if self._project is None:
|
|
65
|
+
raise exceptions.PlatformException(error='2001',
|
|
66
|
+
message='Missing entity "project".')
|
|
67
|
+
assert isinstance(self._project, entities.Project)
|
|
68
|
+
return self._project
|
|
69
|
+
|
|
70
|
+
@classmethod
|
|
71
|
+
def from_json(cls, _json, project, client_api, users=None):
|
|
72
|
+
"""
|
|
73
|
+
Build a User entity object from a json
|
|
74
|
+
|
|
75
|
+
:param dict _json: _json response from host
|
|
76
|
+
:param dtlpy.entities.project.Project project: project entity
|
|
77
|
+
:param client_api: ApiClient entity
|
|
78
|
+
:param users: Users repository
|
|
79
|
+
:return: User object
|
|
80
|
+
:rtype: dtlpy.entities.user.User
|
|
81
|
+
"""
|
|
82
|
+
return cls(
|
|
83
|
+
created_at=_json.get('createdAt', None),
|
|
84
|
+
name=_json.get('firstName', None),
|
|
85
|
+
updated_at=_json.get('updatedAt', None),
|
|
86
|
+
last_name=_json.get('lastName', None),
|
|
87
|
+
username=_json.get('username', None),
|
|
88
|
+
avatar=_json.get('avatar', None),
|
|
89
|
+
email=_json.get('email', None),
|
|
90
|
+
role=_json.get('role', None),
|
|
91
|
+
type=_json.get('type', None),
|
|
92
|
+
org=_json.get('org', None),
|
|
93
|
+
id=_json.get('id', None),
|
|
94
|
+
project=project,
|
|
95
|
+
users=users,
|
|
96
|
+
client_api=client_api)
|
|
97
|
+
|
|
98
|
+
def to_json(self):
|
|
99
|
+
"""
|
|
100
|
+
Returns platform _json format of object
|
|
101
|
+
|
|
102
|
+
:return: platform json format of object
|
|
103
|
+
:rtype: dict
|
|
104
|
+
"""
|
|
105
|
+
_json = attr.asdict(self,
|
|
106
|
+
filter=attr.filters.exclude(attr.fields(User)._project,
|
|
107
|
+
attr.fields(User).name,
|
|
108
|
+
attr.fields(User)._client_api,
|
|
109
|
+
attr.fields(User)._users,
|
|
110
|
+
attr.fields(User).last_name,
|
|
111
|
+
attr.fields(User).created_at,
|
|
112
|
+
attr.fields(User).updated_at,
|
|
113
|
+
))
|
|
114
|
+
_json['firstName'] = self.name
|
|
115
|
+
_json['lastName'] = self.last_name
|
|
116
|
+
_json['createdAt'] = self.created_at
|
|
117
|
+
_json['updatedAt'] = self.updated_at
|
|
118
|
+
return _json
|
dtlpy/entities/webhook.py
CHANGED
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import attr
|
|
3
|
-
from enum import Enum
|
|
4
|
-
|
|
5
|
-
from .. import repositories, entities
|
|
6
|
-
from ..services.api_client import ApiClient
|
|
7
|
-
|
|
8
|
-
logger = logging.getLogger(name='dtlpy')
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class HttpMethod(str, Enum):
|
|
12
|
-
GET = "GET"
|
|
13
|
-
POST = "POST"
|
|
14
|
-
DELETE = "DELETE"
|
|
15
|
-
PATCH = "PATCH"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@attr.s
|
|
19
|
-
class Webhook(entities.BaseEntity):
|
|
20
|
-
"""
|
|
21
|
-
Webhook object
|
|
22
|
-
"""
|
|
23
|
-
# platform
|
|
24
|
-
id = attr.ib()
|
|
25
|
-
url = attr.ib()
|
|
26
|
-
created_at = attr.ib()
|
|
27
|
-
updated_at = attr.ib(repr=False)
|
|
28
|
-
creator = attr.ib()
|
|
29
|
-
name = attr.ib()
|
|
30
|
-
|
|
31
|
-
# name change
|
|
32
|
-
project_id = attr.ib()
|
|
33
|
-
http_method = attr.ib()
|
|
34
|
-
hook_url = attr.ib()
|
|
35
|
-
|
|
36
|
-
# SDK
|
|
37
|
-
_client_api = attr.ib(type=ApiClient, repr=False)
|
|
38
|
-
_project = attr.ib()
|
|
39
|
-
|
|
40
|
-
# repos
|
|
41
|
-
_webhooks = attr.ib(default=None)
|
|
42
|
-
|
|
43
|
-
@property
|
|
44
|
-
def createdAt(self):
|
|
45
|
-
return self.created_at
|
|
46
|
-
|
|
47
|
-
@property
|
|
48
|
-
def updatedAt(self):
|
|
49
|
-
return self.updated_at
|
|
50
|
-
|
|
51
|
-
@classmethod
|
|
52
|
-
def from_json(cls, _json: dict, client_api: ApiClient, project=None):
|
|
53
|
-
"""
|
|
54
|
-
:param _json: platform json
|
|
55
|
-
:param client_api: ApiClient entity
|
|
56
|
-
:param project: project entity
|
|
57
|
-
:return:
|
|
58
|
-
"""
|
|
59
|
-
if project is not None:
|
|
60
|
-
if project.id != _json.get('project', None):
|
|
61
|
-
logger.warning('Webhook has been fetched from a project that is not in it projects list')
|
|
62
|
-
project = None
|
|
63
|
-
return cls(
|
|
64
|
-
http_method=_json.get('httpMethod', None),
|
|
65
|
-
created_at=_json.get("createdAt", None),
|
|
66
|
-
updated_at=_json.get("updatedAt", None),
|
|
67
|
-
project_id=_json.get('project', None),
|
|
68
|
-
hook_url=_json.get('hookUrl', None),
|
|
69
|
-
creator=_json.get("creator", None),
|
|
70
|
-
name=_json.get("name", None),
|
|
71
|
-
url=_json.get("url", None),
|
|
72
|
-
id=_json.get("id", None),
|
|
73
|
-
client_api=client_api,
|
|
74
|
-
project=project
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
@property
|
|
78
|
-
def project(self):
|
|
79
|
-
if self._project is None:
|
|
80
|
-
self._project = repositories.Projects(client_api=self._client_api).get(project_id=self.project_id,
|
|
81
|
-
fetch=None)
|
|
82
|
-
assert isinstance(self._project, entities.Project)
|
|
83
|
-
return self._project
|
|
84
|
-
|
|
85
|
-
@property
|
|
86
|
-
def webhooks(self):
|
|
87
|
-
if self._webhooks is None:
|
|
88
|
-
self._webhooks = repositories.Webhooks(client_api=self._client_api, project=self._project)
|
|
89
|
-
assert isinstance(self._webhooks, repositories.Webhooks)
|
|
90
|
-
return self._webhooks
|
|
91
|
-
|
|
92
|
-
def to_json(self):
|
|
93
|
-
"""
|
|
94
|
-
Returns platform _json format of object
|
|
95
|
-
|
|
96
|
-
:return: platform json format of object
|
|
97
|
-
:rtype: dict
|
|
98
|
-
"""
|
|
99
|
-
_json = attr.asdict(
|
|
100
|
-
self,
|
|
101
|
-
filter=attr.filters.exclude(
|
|
102
|
-
attr.fields(Webhook)._project,
|
|
103
|
-
attr.fields(Webhook)._client_api,
|
|
104
|
-
attr.fields(Webhook).project_id,
|
|
105
|
-
attr.fields(Webhook).hook_url,
|
|
106
|
-
attr.fields(Webhook).http_method,
|
|
107
|
-
attr.fields(Webhook).created_at,
|
|
108
|
-
attr.fields(Webhook).updated_at,
|
|
109
|
-
),
|
|
110
|
-
)
|
|
111
|
-
|
|
112
|
-
_json['project'] = self.project_id
|
|
113
|
-
_json['hookUrl'] = self.hook_url
|
|
114
|
-
_json['httpMethod'] = self.http_method
|
|
115
|
-
_json['createdAt'] = self.created_at
|
|
116
|
-
_json['updatedAt'] = self.updated_at
|
|
117
|
-
|
|
118
|
-
return _json
|
|
119
|
-
|
|
120
|
-
def delete(self):
|
|
121
|
-
return self.webhooks.delete(self)
|
|
122
|
-
|
|
123
|
-
def update(self):
|
|
124
|
-
return self.webhooks.update(self)
|
|
1
|
+
import logging
|
|
2
|
+
import attr
|
|
3
|
+
from enum import Enum
|
|
4
|
+
|
|
5
|
+
from .. import repositories, entities
|
|
6
|
+
from ..services.api_client import ApiClient
|
|
7
|
+
|
|
8
|
+
logger = logging.getLogger(name='dtlpy')
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class HttpMethod(str, Enum):
|
|
12
|
+
GET = "GET"
|
|
13
|
+
POST = "POST"
|
|
14
|
+
DELETE = "DELETE"
|
|
15
|
+
PATCH = "PATCH"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
@attr.s
|
|
19
|
+
class Webhook(entities.BaseEntity):
|
|
20
|
+
"""
|
|
21
|
+
Webhook object
|
|
22
|
+
"""
|
|
23
|
+
# platform
|
|
24
|
+
id = attr.ib()
|
|
25
|
+
url = attr.ib()
|
|
26
|
+
created_at = attr.ib()
|
|
27
|
+
updated_at = attr.ib(repr=False)
|
|
28
|
+
creator = attr.ib()
|
|
29
|
+
name = attr.ib()
|
|
30
|
+
|
|
31
|
+
# name change
|
|
32
|
+
project_id = attr.ib()
|
|
33
|
+
http_method = attr.ib()
|
|
34
|
+
hook_url = attr.ib()
|
|
35
|
+
|
|
36
|
+
# SDK
|
|
37
|
+
_client_api = attr.ib(type=ApiClient, repr=False)
|
|
38
|
+
_project = attr.ib()
|
|
39
|
+
|
|
40
|
+
# repos
|
|
41
|
+
_webhooks = attr.ib(default=None)
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def createdAt(self):
|
|
45
|
+
return self.created_at
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def updatedAt(self):
|
|
49
|
+
return self.updated_at
|
|
50
|
+
|
|
51
|
+
@classmethod
|
|
52
|
+
def from_json(cls, _json: dict, client_api: ApiClient, project=None):
|
|
53
|
+
"""
|
|
54
|
+
:param _json: platform json
|
|
55
|
+
:param client_api: ApiClient entity
|
|
56
|
+
:param project: project entity
|
|
57
|
+
:return:
|
|
58
|
+
"""
|
|
59
|
+
if project is not None:
|
|
60
|
+
if project.id != _json.get('project', None):
|
|
61
|
+
logger.warning('Webhook has been fetched from a project that is not in it projects list')
|
|
62
|
+
project = None
|
|
63
|
+
return cls(
|
|
64
|
+
http_method=_json.get('httpMethod', None),
|
|
65
|
+
created_at=_json.get("createdAt", None),
|
|
66
|
+
updated_at=_json.get("updatedAt", None),
|
|
67
|
+
project_id=_json.get('project', None),
|
|
68
|
+
hook_url=_json.get('hookUrl', None),
|
|
69
|
+
creator=_json.get("creator", None),
|
|
70
|
+
name=_json.get("name", None),
|
|
71
|
+
url=_json.get("url", None),
|
|
72
|
+
id=_json.get("id", None),
|
|
73
|
+
client_api=client_api,
|
|
74
|
+
project=project
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def project(self):
|
|
79
|
+
if self._project is None:
|
|
80
|
+
self._project = repositories.Projects(client_api=self._client_api).get(project_id=self.project_id,
|
|
81
|
+
fetch=None)
|
|
82
|
+
assert isinstance(self._project, entities.Project)
|
|
83
|
+
return self._project
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def webhooks(self):
|
|
87
|
+
if self._webhooks is None:
|
|
88
|
+
self._webhooks = repositories.Webhooks(client_api=self._client_api, project=self._project)
|
|
89
|
+
assert isinstance(self._webhooks, repositories.Webhooks)
|
|
90
|
+
return self._webhooks
|
|
91
|
+
|
|
92
|
+
def to_json(self):
|
|
93
|
+
"""
|
|
94
|
+
Returns platform _json format of object
|
|
95
|
+
|
|
96
|
+
:return: platform json format of object
|
|
97
|
+
:rtype: dict
|
|
98
|
+
"""
|
|
99
|
+
_json = attr.asdict(
|
|
100
|
+
self,
|
|
101
|
+
filter=attr.filters.exclude(
|
|
102
|
+
attr.fields(Webhook)._project,
|
|
103
|
+
attr.fields(Webhook)._client_api,
|
|
104
|
+
attr.fields(Webhook).project_id,
|
|
105
|
+
attr.fields(Webhook).hook_url,
|
|
106
|
+
attr.fields(Webhook).http_method,
|
|
107
|
+
attr.fields(Webhook).created_at,
|
|
108
|
+
attr.fields(Webhook).updated_at,
|
|
109
|
+
),
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
_json['project'] = self.project_id
|
|
113
|
+
_json['hookUrl'] = self.hook_url
|
|
114
|
+
_json['httpMethod'] = self.http_method
|
|
115
|
+
_json['createdAt'] = self.created_at
|
|
116
|
+
_json['updatedAt'] = self.updated_at
|
|
117
|
+
|
|
118
|
+
return _json
|
|
119
|
+
|
|
120
|
+
def delete(self):
|
|
121
|
+
return self.webhooks.delete(self)
|
|
122
|
+
|
|
123
|
+
def update(self):
|
|
124
|
+
return self.webhooks.update(self)
|
dtlpy/examples/__init__.py
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
from . import add_labels
|
|
2
|
-
from . import add_metadata_to_item
|
|
3
|
-
from . import annotate_items_using_model
|
|
4
|
-
from . import annotate_video_using_model_and_tracker
|
|
5
|
-
from . import annotations_convert_to_voc
|
|
6
|
-
from . import annotations_convert_to_yolo
|
|
7
|
-
from . import convert_annotation_types
|
|
8
|
-
from . import copy_annotations
|
|
9
|
-
from . import copy_folder
|
|
10
|
-
from . import create_annotations
|
|
11
|
-
from . import create_video_annotations
|
|
12
|
-
from . import move_item
|
|
13
|
-
from . import play_video_annotation
|
|
14
|
-
from . import show_item_and_mask
|
|
15
|
-
from . import upload_batch_of_items
|
|
16
|
-
from . import upload_items_and_custom_format_annotations
|
|
17
|
-
from . import upload_segmentation_annotations_from_mask_image
|
|
18
|
-
from . import upload_yolo_format_annotations
|
|
19
|
-
from . import upload_items_with_modalities
|
|
1
|
+
from . import add_labels
|
|
2
|
+
from . import add_metadata_to_item
|
|
3
|
+
from . import annotate_items_using_model
|
|
4
|
+
from . import annotate_video_using_model_and_tracker
|
|
5
|
+
from . import annotations_convert_to_voc
|
|
6
|
+
from . import annotations_convert_to_yolo
|
|
7
|
+
from . import convert_annotation_types
|
|
8
|
+
from . import copy_annotations
|
|
9
|
+
from . import copy_folder
|
|
10
|
+
from . import create_annotations
|
|
11
|
+
from . import create_video_annotations
|
|
12
|
+
from . import move_item
|
|
13
|
+
from . import play_video_annotation
|
|
14
|
+
from . import show_item_and_mask
|
|
15
|
+
from . import upload_batch_of_items
|
|
16
|
+
from . import upload_items_and_custom_format_annotations
|
|
17
|
+
from . import upload_segmentation_annotations_from_mask_image
|
|
18
|
+
from . import upload_yolo_format_annotations
|
|
19
|
+
from . import upload_items_with_modalities
|