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
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class PATHS:
|
|
5
|
-
MULTI_METHOD = 'multi_method.py'
|
|
6
|
-
MULTI_METHOD_JSON = 'multi_method_json.py'
|
|
7
|
-
MULTI_METHOD_ITEM = 'multi_method_item.py'
|
|
8
|
-
SINGLE_METHOD_DATASET = 'single_method_dataset.py'
|
|
9
|
-
SINGLE_METHOD = 'single_method.py'
|
|
10
|
-
SINGLE_METHOD_MULTI_INPUT = 'single_method_multi_input.py'
|
|
11
|
-
MULTI_METHOD_DATASET = 'multi_method_dataset.py'
|
|
12
|
-
SINGLE_METHOD_JSON = 'single_method_json.py'
|
|
13
|
-
SINGLE_METHOD_ITEM = 'single_method_item.py'
|
|
14
|
-
SINGLE_METHOD_ANNOTATION = 'single_method_annotation.py'
|
|
15
|
-
MULTI_METHOD_ANNOTATION = 'multi_method_annotation.py'
|
|
16
|
-
CONVERTER = 'converter.py'
|
|
17
|
-
|
|
18
|
-
ASSETS_PATH = os.path.dirname(__file__)
|
|
19
|
-
MULTI_METHOD_SR_PATH = os.path.join(ASSETS_PATH, MULTI_METHOD)
|
|
20
|
-
MULTI_METHOD_JSON_SR_PATH = os.path.join(ASSETS_PATH, MULTI_METHOD_JSON)
|
|
21
|
-
MULTI_METHOD_ITEM_SR_PATH = os.path.join(ASSETS_PATH, MULTI_METHOD_ITEM)
|
|
22
|
-
SINGLE_METHOD_DATASET_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD_DATASET)
|
|
23
|
-
SINGLE_METHOD_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD)
|
|
24
|
-
MULTI_METHOD_DATASET_SR_PATH = os.path.join(ASSETS_PATH, MULTI_METHOD_DATASET)
|
|
25
|
-
SINGLE_METHOD_JSON_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD_JSON)
|
|
26
|
-
SINGLE_METHOD_ITEM_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD_ITEM)
|
|
27
|
-
SINGLE_METHOD_ANNOTATION_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD_ANNOTATION)
|
|
28
|
-
MULTI_METHOD_ANNOTATION_SR_PATH = os.path.join(ASSETS_PATH, MULTI_METHOD_ANNOTATION)
|
|
29
|
-
SINGLE_METHOD_MULTI_INPUT_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD_MULTI_INPUT)
|
|
30
|
-
CONVERTER_SR_PATH = os.path.join(ASSETS_PATH, CONVERTER)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
service_runner_paths = PATHS()
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class PATHS:
|
|
5
|
+
MULTI_METHOD = 'multi_method.py'
|
|
6
|
+
MULTI_METHOD_JSON = 'multi_method_json.py'
|
|
7
|
+
MULTI_METHOD_ITEM = 'multi_method_item.py'
|
|
8
|
+
SINGLE_METHOD_DATASET = 'single_method_dataset.py'
|
|
9
|
+
SINGLE_METHOD = 'single_method.py'
|
|
10
|
+
SINGLE_METHOD_MULTI_INPUT = 'single_method_multi_input.py'
|
|
11
|
+
MULTI_METHOD_DATASET = 'multi_method_dataset.py'
|
|
12
|
+
SINGLE_METHOD_JSON = 'single_method_json.py'
|
|
13
|
+
SINGLE_METHOD_ITEM = 'single_method_item.py'
|
|
14
|
+
SINGLE_METHOD_ANNOTATION = 'single_method_annotation.py'
|
|
15
|
+
MULTI_METHOD_ANNOTATION = 'multi_method_annotation.py'
|
|
16
|
+
CONVERTER = 'converter.py'
|
|
17
|
+
|
|
18
|
+
ASSETS_PATH = os.path.dirname(__file__)
|
|
19
|
+
MULTI_METHOD_SR_PATH = os.path.join(ASSETS_PATH, MULTI_METHOD)
|
|
20
|
+
MULTI_METHOD_JSON_SR_PATH = os.path.join(ASSETS_PATH, MULTI_METHOD_JSON)
|
|
21
|
+
MULTI_METHOD_ITEM_SR_PATH = os.path.join(ASSETS_PATH, MULTI_METHOD_ITEM)
|
|
22
|
+
SINGLE_METHOD_DATASET_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD_DATASET)
|
|
23
|
+
SINGLE_METHOD_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD)
|
|
24
|
+
MULTI_METHOD_DATASET_SR_PATH = os.path.join(ASSETS_PATH, MULTI_METHOD_DATASET)
|
|
25
|
+
SINGLE_METHOD_JSON_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD_JSON)
|
|
26
|
+
SINGLE_METHOD_ITEM_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD_ITEM)
|
|
27
|
+
SINGLE_METHOD_ANNOTATION_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD_ANNOTATION)
|
|
28
|
+
MULTI_METHOD_ANNOTATION_SR_PATH = os.path.join(ASSETS_PATH, MULTI_METHOD_ANNOTATION)
|
|
29
|
+
SINGLE_METHOD_MULTI_INPUT_SR_PATH = os.path.join(ASSETS_PATH, SINGLE_METHOD_MULTI_INPUT)
|
|
30
|
+
CONVERTER_SR_PATH = os.path.join(ASSETS_PATH, CONVERTER)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
service_runner_paths = PATHS()
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
import dtlpy as dl
|
|
2
|
-
import logging
|
|
3
|
-
import shutil
|
|
4
|
-
import tempfile
|
|
5
|
-
import os
|
|
6
|
-
import zipfile
|
|
7
|
-
import datetime
|
|
8
|
-
|
|
9
|
-
logger = logging.getLogger(name='dtlpy')
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class ServiceRunner(dl.BaseServiceRunner):
|
|
13
|
-
"""
|
|
14
|
-
Package runner class
|
|
15
|
-
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
def __init__(self):
|
|
19
|
-
"""
|
|
20
|
-
Init package attributes here
|
|
21
|
-
|
|
22
|
-
:return:
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
def run(self, dataset, query=None, progress=None):
|
|
26
|
-
"""
|
|
27
|
-
In this example we create a task for annotated items in dataset
|
|
28
|
-
|
|
29
|
-
:param query: Dictionary
|
|
30
|
-
:param dataset: dl.Dataset
|
|
31
|
-
:param progress: Use this to update the progress of your package
|
|
32
|
-
:return:
|
|
33
|
-
"""
|
|
34
|
-
local_path = tempfile.mkdtemp()
|
|
35
|
-
|
|
36
|
-
try:
|
|
37
|
-
|
|
38
|
-
converted_folder = os.path.join(local_path, dataset.name)
|
|
39
|
-
filters = None
|
|
40
|
-
if query is not None:
|
|
41
|
-
filters = dl.Filters(resource=dl.FiltersResource.ITEM, custom_filter=query)
|
|
42
|
-
|
|
43
|
-
pages = dataset.items.list(filters=filters)
|
|
44
|
-
|
|
45
|
-
for i_page, page in enumerate(pages):
|
|
46
|
-
for item in page:
|
|
47
|
-
self._convert_single_item(item=item, local_path=converted_folder)
|
|
48
|
-
progress.update(status='inProgress', progress=(i_page + 1) / pages.total_pages_count)
|
|
49
|
-
|
|
50
|
-
zip_filename = os.path.join(local_path,
|
|
51
|
-
'{}_{}.zip'.format(dataset.name, int(datetime.datetime.now().timestamp())))
|
|
52
|
-
self._zip_directory(zip_filename=zip_filename, directory=converted_folder)
|
|
53
|
-
|
|
54
|
-
zip_item = dataset.items.upload(local_path=zip_filename,
|
|
55
|
-
remote_path='/my_converted_annotations',
|
|
56
|
-
overwrite=True)
|
|
57
|
-
|
|
58
|
-
return zip_item.id
|
|
59
|
-
|
|
60
|
-
except Exception:
|
|
61
|
-
# implement exception handling
|
|
62
|
-
pass
|
|
63
|
-
finally:
|
|
64
|
-
shutil.rmtree(local_path)
|
|
65
|
-
|
|
66
|
-
def _convert_single_item(self, item, local_path):
|
|
67
|
-
"""
|
|
68
|
-
Implement single item conversion here and save converted files to local path
|
|
69
|
-
:param item:
|
|
70
|
-
:return:
|
|
71
|
-
"""
|
|
72
|
-
pass
|
|
73
|
-
|
|
74
|
-
@staticmethod
|
|
75
|
-
def _zip_directory(zip_filename, directory):
|
|
76
|
-
"""
|
|
77
|
-
Method to zip a directory
|
|
78
|
-
:param zip_filename:
|
|
79
|
-
:param directory:
|
|
80
|
-
:return:
|
|
81
|
-
"""
|
|
82
|
-
zip_file = zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED)
|
|
83
|
-
try:
|
|
84
|
-
for root, dirs, files in os.walk(directory):
|
|
85
|
-
for file in files:
|
|
86
|
-
filepath = os.path.join(root, file)
|
|
87
|
-
zip_file.write(filepath, arcname=os.path.relpath(filepath, directory))
|
|
88
|
-
finally:
|
|
89
|
-
zip_file.close()
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if __name__ == "__main__":
|
|
93
|
-
"""
|
|
94
|
-
Run this main to locally debug your package
|
|
95
|
-
"""
|
|
96
|
-
dl.packages.test_local_package()
|
|
1
|
+
import dtlpy as dl
|
|
2
|
+
import logging
|
|
3
|
+
import shutil
|
|
4
|
+
import tempfile
|
|
5
|
+
import os
|
|
6
|
+
import zipfile
|
|
7
|
+
import datetime
|
|
8
|
+
|
|
9
|
+
logger = logging.getLogger(name='dtlpy')
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ServiceRunner(dl.BaseServiceRunner):
|
|
13
|
+
"""
|
|
14
|
+
Package runner class
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(self):
|
|
19
|
+
"""
|
|
20
|
+
Init package attributes here
|
|
21
|
+
|
|
22
|
+
:return:
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def run(self, dataset, query=None, progress=None):
|
|
26
|
+
"""
|
|
27
|
+
In this example we create a task for annotated items in dataset
|
|
28
|
+
|
|
29
|
+
:param query: Dictionary
|
|
30
|
+
:param dataset: dl.Dataset
|
|
31
|
+
:param progress: Use this to update the progress of your package
|
|
32
|
+
:return:
|
|
33
|
+
"""
|
|
34
|
+
local_path = tempfile.mkdtemp()
|
|
35
|
+
|
|
36
|
+
try:
|
|
37
|
+
|
|
38
|
+
converted_folder = os.path.join(local_path, dataset.name)
|
|
39
|
+
filters = None
|
|
40
|
+
if query is not None:
|
|
41
|
+
filters = dl.Filters(resource=dl.FiltersResource.ITEM, custom_filter=query)
|
|
42
|
+
|
|
43
|
+
pages = dataset.items.list(filters=filters)
|
|
44
|
+
|
|
45
|
+
for i_page, page in enumerate(pages):
|
|
46
|
+
for item in page:
|
|
47
|
+
self._convert_single_item(item=item, local_path=converted_folder)
|
|
48
|
+
progress.update(status='inProgress', progress=(i_page + 1) / pages.total_pages_count)
|
|
49
|
+
|
|
50
|
+
zip_filename = os.path.join(local_path,
|
|
51
|
+
'{}_{}.zip'.format(dataset.name, int(datetime.datetime.now().timestamp())))
|
|
52
|
+
self._zip_directory(zip_filename=zip_filename, directory=converted_folder)
|
|
53
|
+
|
|
54
|
+
zip_item = dataset.items.upload(local_path=zip_filename,
|
|
55
|
+
remote_path='/my_converted_annotations',
|
|
56
|
+
overwrite=True)
|
|
57
|
+
|
|
58
|
+
return zip_item.id
|
|
59
|
+
|
|
60
|
+
except Exception:
|
|
61
|
+
# implement exception handling
|
|
62
|
+
pass
|
|
63
|
+
finally:
|
|
64
|
+
shutil.rmtree(local_path)
|
|
65
|
+
|
|
66
|
+
def _convert_single_item(self, item, local_path):
|
|
67
|
+
"""
|
|
68
|
+
Implement single item conversion here and save converted files to local path
|
|
69
|
+
:param item:
|
|
70
|
+
:return:
|
|
71
|
+
"""
|
|
72
|
+
pass
|
|
73
|
+
|
|
74
|
+
@staticmethod
|
|
75
|
+
def _zip_directory(zip_filename, directory):
|
|
76
|
+
"""
|
|
77
|
+
Method to zip a directory
|
|
78
|
+
:param zip_filename:
|
|
79
|
+
:param directory:
|
|
80
|
+
:return:
|
|
81
|
+
"""
|
|
82
|
+
zip_file = zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED)
|
|
83
|
+
try:
|
|
84
|
+
for root, dirs, files in os.walk(directory):
|
|
85
|
+
for file in files:
|
|
86
|
+
filepath = os.path.join(root, file)
|
|
87
|
+
zip_file.write(filepath, arcname=os.path.relpath(filepath, directory))
|
|
88
|
+
finally:
|
|
89
|
+
zip_file.close()
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
if __name__ == "__main__":
|
|
93
|
+
"""
|
|
94
|
+
Run this main to locally debug your package
|
|
95
|
+
"""
|
|
96
|
+
dl.packages.test_local_package()
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import dtlpy as dl
|
|
2
|
-
import logging
|
|
3
|
-
|
|
4
|
-
logger = logging.getLogger(name='dtlpy')
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class ServiceRunner(dl.BaseServiceRunner):
|
|
8
|
-
"""
|
|
9
|
-
Package runner class
|
|
10
|
-
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
def __init__(self):
|
|
14
|
-
"""
|
|
15
|
-
Init package attributes here
|
|
16
|
-
|
|
17
|
-
:return:
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
def first_method(self, progress=None):
|
|
21
|
-
"""
|
|
22
|
-
In this example we print print 'Hello World'
|
|
23
|
-
|
|
24
|
-
:param progress: Use this to update the progress of your package
|
|
25
|
-
:return:
|
|
26
|
-
"""
|
|
27
|
-
# these lines can be removed
|
|
28
|
-
assert isinstance(progress, dl.Progress)
|
|
29
|
-
progress.update(status='inProgress', progress=0)
|
|
30
|
-
print('Hello World from Dataloop :)')
|
|
31
|
-
|
|
32
|
-
def second_method(self, progress=None):
|
|
33
|
-
"""
|
|
34
|
-
In this example we print print 'Hello World'
|
|
35
|
-
|
|
36
|
-
:param progress: Use this to update the progress of your package
|
|
37
|
-
:return:
|
|
38
|
-
"""
|
|
39
|
-
# these lines can be removed
|
|
40
|
-
assert isinstance(progress, dl.Progress)
|
|
41
|
-
progress.update(status='inProgress', progress=0)
|
|
42
|
-
print('Hello World from Dataloop :)')
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if __name__ == "__main__":
|
|
46
|
-
"""
|
|
47
|
-
Run this main to locally debug your package
|
|
48
|
-
"""
|
|
49
|
-
dl.packages.test_local_package()
|
|
1
|
+
import dtlpy as dl
|
|
2
|
+
import logging
|
|
3
|
+
|
|
4
|
+
logger = logging.getLogger(name='dtlpy')
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ServiceRunner(dl.BaseServiceRunner):
|
|
8
|
+
"""
|
|
9
|
+
Package runner class
|
|
10
|
+
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
def __init__(self):
|
|
14
|
+
"""
|
|
15
|
+
Init package attributes here
|
|
16
|
+
|
|
17
|
+
:return:
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def first_method(self, progress=None):
|
|
21
|
+
"""
|
|
22
|
+
In this example we print print 'Hello World'
|
|
23
|
+
|
|
24
|
+
:param progress: Use this to update the progress of your package
|
|
25
|
+
:return:
|
|
26
|
+
"""
|
|
27
|
+
# these lines can be removed
|
|
28
|
+
assert isinstance(progress, dl.Progress)
|
|
29
|
+
progress.update(status='inProgress', progress=0)
|
|
30
|
+
print('Hello World from Dataloop :)')
|
|
31
|
+
|
|
32
|
+
def second_method(self, progress=None):
|
|
33
|
+
"""
|
|
34
|
+
In this example we print print 'Hello World'
|
|
35
|
+
|
|
36
|
+
:param progress: Use this to update the progress of your package
|
|
37
|
+
:return:
|
|
38
|
+
"""
|
|
39
|
+
# these lines can be removed
|
|
40
|
+
assert isinstance(progress, dl.Progress)
|
|
41
|
+
progress.update(status='inProgress', progress=0)
|
|
42
|
+
print('Hello World from Dataloop :)')
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
if __name__ == "__main__":
|
|
46
|
+
"""
|
|
47
|
+
Run this main to locally debug your package
|
|
48
|
+
"""
|
|
49
|
+
dl.packages.test_local_package()
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
import dtlpy as dl
|
|
2
|
-
import logging
|
|
3
|
-
|
|
4
|
-
logger = logging.getLogger(name='dtlpy')
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class ServiceRunner(dl.BaseServiceRunner):
|
|
8
|
-
"""
|
|
9
|
-
Package runner class
|
|
10
|
-
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
def __init__(self):
|
|
14
|
-
"""
|
|
15
|
-
Init package attributes here
|
|
16
|
-
|
|
17
|
-
:return:
|
|
18
|
-
"""
|
|
19
|
-
|
|
20
|
-
def first_method(self, annotation, progress=None):
|
|
21
|
-
"""
|
|
22
|
-
In this example we update item's metadata if annotation id of specific type
|
|
23
|
-
|
|
24
|
-
:param progress: Use this to update the progress of your package
|
|
25
|
-
:return:
|
|
26
|
-
"""
|
|
27
|
-
# these lines can be removed
|
|
28
|
-
assert isinstance(progress, dl.Progress)
|
|
29
|
-
assert isinstance(annotation, dl.Annotation)
|
|
30
|
-
if annotation.label == 'box' and annotation.label == 'dog':
|
|
31
|
-
logger.info('Dog was detected in item')
|
|
32
|
-
annotation.attributes.append('Dog detection')
|
|
33
|
-
annotation.item.metadata['dogInPicture'] = True
|
|
34
|
-
annotation.update()
|
|
35
|
-
annotation.item.update()
|
|
36
|
-
logger.info('Function finished successfully!')
|
|
37
|
-
|
|
38
|
-
def second_method(self, annotation, progress=None):
|
|
39
|
-
"""
|
|
40
|
-
In this example we update item's metadata if annotation id of specific type
|
|
41
|
-
|
|
42
|
-
:param progress: Use this to update the progress of your package
|
|
43
|
-
:return:
|
|
44
|
-
"""
|
|
45
|
-
# these lines can be removed
|
|
46
|
-
assert isinstance(progress, dl.Progress)
|
|
47
|
-
assert isinstance(annotation, dl.Annotation)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if __name__ == "__main__":
|
|
51
|
-
"""
|
|
52
|
-
Run this main to locally debug your package
|
|
53
|
-
"""
|
|
54
|
-
dl.packages.test_local_package()
|
|
1
|
+
import dtlpy as dl
|
|
2
|
+
import logging
|
|
3
|
+
|
|
4
|
+
logger = logging.getLogger(name='dtlpy')
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ServiceRunner(dl.BaseServiceRunner):
|
|
8
|
+
"""
|
|
9
|
+
Package runner class
|
|
10
|
+
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
def __init__(self):
|
|
14
|
+
"""
|
|
15
|
+
Init package attributes here
|
|
16
|
+
|
|
17
|
+
:return:
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
def first_method(self, annotation, progress=None):
|
|
21
|
+
"""
|
|
22
|
+
In this example we update item's metadata if annotation id of specific type
|
|
23
|
+
|
|
24
|
+
:param progress: Use this to update the progress of your package
|
|
25
|
+
:return:
|
|
26
|
+
"""
|
|
27
|
+
# these lines can be removed
|
|
28
|
+
assert isinstance(progress, dl.Progress)
|
|
29
|
+
assert isinstance(annotation, dl.Annotation)
|
|
30
|
+
if annotation.label == 'box' and annotation.label == 'dog':
|
|
31
|
+
logger.info('Dog was detected in item')
|
|
32
|
+
annotation.attributes.append('Dog detection')
|
|
33
|
+
annotation.item.metadata['dogInPicture'] = True
|
|
34
|
+
annotation.update()
|
|
35
|
+
annotation.item.update()
|
|
36
|
+
logger.info('Function finished successfully!')
|
|
37
|
+
|
|
38
|
+
def second_method(self, annotation, progress=None):
|
|
39
|
+
"""
|
|
40
|
+
In this example we update item's metadata if annotation id of specific type
|
|
41
|
+
|
|
42
|
+
:param progress: Use this to update the progress of your package
|
|
43
|
+
:return:
|
|
44
|
+
"""
|
|
45
|
+
# these lines can be removed
|
|
46
|
+
assert isinstance(progress, dl.Progress)
|
|
47
|
+
assert isinstance(annotation, dl.Annotation)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
if __name__ == "__main__":
|
|
51
|
+
"""
|
|
52
|
+
Run this main to locally debug your package
|
|
53
|
+
"""
|
|
54
|
+
dl.packages.test_local_package()
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import datetime
|
|
2
|
-
|
|
3
|
-
import dtlpy as dl
|
|
4
|
-
import logging
|
|
5
|
-
|
|
6
|
-
logger = logging.getLogger(name='dtlpy')
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class ServiceRunner(dl.BaseServiceRunner):
|
|
10
|
-
"""
|
|
11
|
-
Package runner class
|
|
12
|
-
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
def __init__(self):
|
|
16
|
-
"""
|
|
17
|
-
Init package attributes here
|
|
18
|
-
|
|
19
|
-
:return:
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
def first_method(self, dataset, progress=None):
|
|
23
|
-
"""
|
|
24
|
-
Write your main package service here
|
|
25
|
-
|
|
26
|
-
:param progress: Use this to update the progress of your package
|
|
27
|
-
:return:
|
|
28
|
-
"""
|
|
29
|
-
# these lines can be removed
|
|
30
|
-
assert isinstance(progress, dl.Progress)
|
|
31
|
-
assert isinstance(dataset, dl.entities.Dataset)
|
|
32
|
-
filters = dl.Filters(field='annotated', values=True)
|
|
33
|
-
filters.add_join(field='label', values='person')
|
|
34
|
-
task = dataset.tasks.create(task_name='AutomatedTask',
|
|
35
|
-
due_date=datetime.datetime.now().timestamp() + 60 * 60 * 24 * 7,
|
|
36
|
-
assignee_ids=['annotator1@dataloop.ai', 'annotator2@dataloop.ai'])
|
|
37
|
-
logger.info('Task created successfully. Task name: {}'.format(task.name))
|
|
38
|
-
|
|
39
|
-
def second_method(self, dataset, progress=None):
|
|
40
|
-
"""
|
|
41
|
-
Write your main package service here
|
|
42
|
-
|
|
43
|
-
:param progress: Use this to update the progress of your package
|
|
44
|
-
:return:
|
|
45
|
-
"""
|
|
46
|
-
# these lines can be removed
|
|
47
|
-
assert isinstance(progress, dl.Progress)
|
|
48
|
-
assert isinstance(dataset, dl.entities.Dataset)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if __name__ == "__main__":
|
|
52
|
-
"""
|
|
53
|
-
Run this main to locally debug your package
|
|
54
|
-
"""
|
|
55
|
-
dl.packages.test_local_package()
|
|
1
|
+
import datetime
|
|
2
|
+
|
|
3
|
+
import dtlpy as dl
|
|
4
|
+
import logging
|
|
5
|
+
|
|
6
|
+
logger = logging.getLogger(name='dtlpy')
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ServiceRunner(dl.BaseServiceRunner):
|
|
10
|
+
"""
|
|
11
|
+
Package runner class
|
|
12
|
+
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
def __init__(self):
|
|
16
|
+
"""
|
|
17
|
+
Init package attributes here
|
|
18
|
+
|
|
19
|
+
:return:
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
def first_method(self, dataset, progress=None):
|
|
23
|
+
"""
|
|
24
|
+
Write your main package service here
|
|
25
|
+
|
|
26
|
+
:param progress: Use this to update the progress of your package
|
|
27
|
+
:return:
|
|
28
|
+
"""
|
|
29
|
+
# these lines can be removed
|
|
30
|
+
assert isinstance(progress, dl.Progress)
|
|
31
|
+
assert isinstance(dataset, dl.entities.Dataset)
|
|
32
|
+
filters = dl.Filters(field='annotated', values=True)
|
|
33
|
+
filters.add_join(field='label', values='person')
|
|
34
|
+
task = dataset.tasks.create(task_name='AutomatedTask',
|
|
35
|
+
due_date=datetime.datetime.now().timestamp() + 60 * 60 * 24 * 7,
|
|
36
|
+
assignee_ids=['annotator1@dataloop.ai', 'annotator2@dataloop.ai'])
|
|
37
|
+
logger.info('Task created successfully. Task name: {}'.format(task.name))
|
|
38
|
+
|
|
39
|
+
def second_method(self, dataset, progress=None):
|
|
40
|
+
"""
|
|
41
|
+
Write your main package service here
|
|
42
|
+
|
|
43
|
+
:param progress: Use this to update the progress of your package
|
|
44
|
+
:return:
|
|
45
|
+
"""
|
|
46
|
+
# these lines can be removed
|
|
47
|
+
assert isinstance(progress, dl.Progress)
|
|
48
|
+
assert isinstance(dataset, dl.entities.Dataset)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
if __name__ == "__main__":
|
|
52
|
+
"""
|
|
53
|
+
Run this main to locally debug your package
|
|
54
|
+
"""
|
|
55
|
+
dl.packages.test_local_package()
|