dtlpy 1.115.44__py3-none-any.whl → 1.117.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 +152 -145
- dtlpy/entities/filters.py +798 -798
- dtlpy/entities/gis_item.py +107 -107
- dtlpy/entities/integration.py +184 -184
- dtlpy/entities/item.py +975 -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 +974 -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 +1287 -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 +1585 -1504
- dtlpy/repositories/downloader.py +1157 -923
- dtlpy/repositories/dpks.py +433 -433
- dtlpy/repositories/drivers.py +482 -482
- dtlpy/repositories/executions.py +815 -815
- dtlpy/repositories/feature_sets.py +256 -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 +429 -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 +1786 -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.117.6.data}/scripts/dlp +1 -1
- dtlpy-1.117.6.data/scripts/dlp.bat +2 -0
- {dtlpy-1.115.44.data → dtlpy-1.117.6.data}/scripts/dlp.py +128 -128
- {dtlpy-1.115.44.dist-info → dtlpy-1.117.6.dist-info}/METADATA +186 -186
- dtlpy-1.117.6.dist-info/RECORD +239 -0
- {dtlpy-1.115.44.dist-info → dtlpy-1.117.6.dist-info}/WHEEL +1 -1
- {dtlpy-1.115.44.dist-info → dtlpy-1.117.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.117.6.dist-info}/entry_points.txt +0 -0
- {dtlpy-1.115.44.dist-info → dtlpy-1.117.6.dist-info}/top_level.txt +0 -0
dtlpy/__version__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.
|
|
1
|
+
version = '1.117.6'
|
dtlpy/assets/__init__.py
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import os
|
|
2
|
-
from .service_runners import service_runner_paths
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class PATHS:
|
|
6
|
-
PACKAGE_FILENAME = 'package.json'
|
|
7
|
-
GITIGNORE_FILENAME = 'package_gitignore'
|
|
8
|
-
MAIN_FILENAME = 'main.py'
|
|
9
|
-
MOCK_FILENAME = 'mock.json'
|
|
10
|
-
MODEL_ADAPTER = 'model_adapter.py'
|
|
11
|
-
PARTIAL_MAIN = 'main_partial.py'
|
|
12
|
-
MODULE_A_FILENAME = 'first_module_class.py'
|
|
13
|
-
MODULE_B_FILENAME = 'second_module_class.py'
|
|
14
|
-
REQUIREMENTS_FILENAME = 'requirements.txt'
|
|
15
|
-
APP_JSON_FILENAME = 'dataloop.json'
|
|
16
|
-
|
|
17
|
-
ASSETS_PATH = os.path.dirname(__file__)
|
|
18
|
-
ASSETS_MAIN_FILEPATH = os.path.join(ASSETS_PATH, MAIN_FILENAME)
|
|
19
|
-
ASSETS_MOCK_FILEPATH = os.path.join(ASSETS_PATH, MOCK_FILENAME)
|
|
20
|
-
ASSETS_PACKAGE_FILEPATH = os.path.join(ASSETS_PATH, PACKAGE_FILENAME)
|
|
21
|
-
ASSETS_GITIGNORE_FILEPATH = os.path.join(ASSETS_PATH, GITIGNORE_FILENAME)
|
|
22
|
-
ASSETS_MODEL_ADAPTER_FILEPATH = os.path.join(ASSETS_PATH, MODEL_ADAPTER)
|
|
23
|
-
PARTIAL_MAIN_FILEPATH = os.path.join(ASSETS_PATH, PARTIAL_MAIN)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
paths = PATHS()
|
|
1
|
+
import os
|
|
2
|
+
from .service_runners import service_runner_paths
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class PATHS:
|
|
6
|
+
PACKAGE_FILENAME = 'package.json'
|
|
7
|
+
GITIGNORE_FILENAME = 'package_gitignore'
|
|
8
|
+
MAIN_FILENAME = 'main.py'
|
|
9
|
+
MOCK_FILENAME = 'mock.json'
|
|
10
|
+
MODEL_ADAPTER = 'model_adapter.py'
|
|
11
|
+
PARTIAL_MAIN = 'main_partial.py'
|
|
12
|
+
MODULE_A_FILENAME = 'first_module_class.py'
|
|
13
|
+
MODULE_B_FILENAME = 'second_module_class.py'
|
|
14
|
+
REQUIREMENTS_FILENAME = 'requirements.txt'
|
|
15
|
+
APP_JSON_FILENAME = 'dataloop.json'
|
|
16
|
+
|
|
17
|
+
ASSETS_PATH = os.path.dirname(__file__)
|
|
18
|
+
ASSETS_MAIN_FILEPATH = os.path.join(ASSETS_PATH, MAIN_FILENAME)
|
|
19
|
+
ASSETS_MOCK_FILEPATH = os.path.join(ASSETS_PATH, MOCK_FILENAME)
|
|
20
|
+
ASSETS_PACKAGE_FILEPATH = os.path.join(ASSETS_PATH, PACKAGE_FILENAME)
|
|
21
|
+
ASSETS_GITIGNORE_FILEPATH = os.path.join(ASSETS_PATH, GITIGNORE_FILENAME)
|
|
22
|
+
ASSETS_MODEL_ADAPTER_FILEPATH = os.path.join(ASSETS_PATH, MODEL_ADAPTER)
|
|
23
|
+
PARTIAL_MAIN_FILEPATH = os.path.join(ASSETS_PATH, PARTIAL_MAIN)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
paths = PATHS()
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
bind-addr: 127.0.0.1:3100
|
|
2
|
-
auth: none
|
|
1
|
+
bind-addr: 127.0.0.1:3100
|
|
2
|
+
auth: none
|
|
3
3
|
cert: false
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
cd /tmp/app
|
|
3
|
-
|
|
4
|
-
PORT=${1?}
|
|
5
|
-
|
|
6
|
-
# check if curl command exists
|
|
7
|
-
if ! command -v curl &> /dev/null
|
|
8
|
-
then
|
|
9
|
-
echo "curl could not be found. installing..."
|
|
10
|
-
apt update -y
|
|
11
|
-
apt install -y curl
|
|
12
|
-
fi
|
|
13
|
-
|
|
14
|
-
# check if code-server command exists
|
|
15
|
-
if ! command -v code-server &> /dev/null
|
|
16
|
-
then
|
|
17
|
-
echo "code-server could not be found. installing..."
|
|
18
|
-
bash <(curl -s https://raw.githubusercontent.com/coder/code-server/main/install.sh)
|
|
19
|
-
code-server --install-extension ms-python.python
|
|
20
|
-
code-server --install-extension okteto.remote-kubernetes
|
|
21
|
-
code-server --install-extension ms-vscode-remote.vscode-remote-extensionpack
|
|
22
|
-
code-server --install-extension ms-vscode-remote.remote-containers
|
|
23
|
-
code-server --install-extension ms-vscode-remote.remote-wsl
|
|
24
|
-
fi
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
cd /tmp/app
|
|
3
|
+
|
|
4
|
+
PORT=${1?}
|
|
5
|
+
|
|
6
|
+
# check if curl command exists
|
|
7
|
+
if ! command -v curl &> /dev/null
|
|
8
|
+
then
|
|
9
|
+
echo "curl could not be found. installing..."
|
|
10
|
+
apt update -y
|
|
11
|
+
apt install -y curl
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
# check if code-server command exists
|
|
15
|
+
if ! command -v code-server &> /dev/null
|
|
16
|
+
then
|
|
17
|
+
echo "code-server could not be found. installing..."
|
|
18
|
+
bash <(curl -s https://raw.githubusercontent.com/coder/code-server/main/install.sh)
|
|
19
|
+
code-server --install-extension ms-python.python
|
|
20
|
+
code-server --install-extension okteto.remote-kubernetes
|
|
21
|
+
code-server --install-extension ms-vscode-remote.vscode-remote-extensionpack
|
|
22
|
+
code-server --install-extension ms-vscode-remote.remote-containers
|
|
23
|
+
code-server --install-extension ms-vscode-remote.remote-wsl
|
|
24
|
+
fi
|
|
25
25
|
code-server --bind-addr 0.0.0.0:${PORT} --auth none --cert false /tmp/app
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": "0.2.0",
|
|
3
|
-
"configurations": [
|
|
4
|
-
{
|
|
5
|
-
"name": "Python: Current File",
|
|
6
|
-
"type": "python",
|
|
7
|
-
"request": "launch",
|
|
8
|
-
"program": "${file}",
|
|
9
|
-
"console": "integratedTerminal",
|
|
10
|
-
"justMyCode": true,
|
|
11
|
-
"cwd": "${fileDirname}"
|
|
12
|
-
}
|
|
13
|
-
]
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"name": "Python: Current File",
|
|
6
|
+
"type": "python",
|
|
7
|
+
"request": "launch",
|
|
8
|
+
"program": "${file}",
|
|
9
|
+
"console": "integratedTerminal",
|
|
10
|
+
"justMyCode": true,
|
|
11
|
+
"cwd": "${fileDirname}"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
14
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
{
|
|
2
|
-
"python.defaultInterpreterPath": "/usr/local/bin/python"
|
|
1
|
+
{
|
|
2
|
+
"python.defaultInterpreterPath": "/usr/local/bin/python"
|
|
3
3
|
}
|
dtlpy/assets/main.py
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
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 run(self, item, progress=None):
|
|
21
|
-
"""
|
|
22
|
-
Write your main package service here
|
|
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('Item received! filename: {}'.format(item.filename))
|
|
31
|
-
builder = item.annotations.builder()
|
|
32
|
-
builder.add(dl.Classification(label='from_function'))
|
|
33
|
-
item.annotations.upload(builder)
|
|
34
|
-
print('Annotation uploaded!')
|
|
35
|
-
|
|
36
|
-
def hello(self, progress=None):
|
|
37
|
-
"""
|
|
38
|
-
Write your main package service here
|
|
39
|
-
|
|
40
|
-
:param progress: Use this to update the progress of your package
|
|
41
|
-
:return:
|
|
42
|
-
"""
|
|
43
|
-
# these lines can be removed
|
|
44
|
-
assert isinstance(progress, dl.Progress)
|
|
45
|
-
progress.update(status='inProgress', progress=0)
|
|
46
|
-
print('Hello World from Dataloop :)')
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if __name__ == "__main__":
|
|
50
|
-
"""
|
|
51
|
-
Run this main to locally debug your package
|
|
52
|
-
"""
|
|
53
|
-
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 run(self, item, progress=None):
|
|
21
|
+
"""
|
|
22
|
+
Write your main package service here
|
|
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('Item received! filename: {}'.format(item.filename))
|
|
31
|
+
builder = item.annotations.builder()
|
|
32
|
+
builder.add(dl.Classification(label='from_function'))
|
|
33
|
+
item.annotations.upload(builder)
|
|
34
|
+
print('Annotation uploaded!')
|
|
35
|
+
|
|
36
|
+
def hello(self, progress=None):
|
|
37
|
+
"""
|
|
38
|
+
Write your main package service here
|
|
39
|
+
|
|
40
|
+
:param progress: Use this to update the progress of your package
|
|
41
|
+
:return:
|
|
42
|
+
"""
|
|
43
|
+
# these lines can be removed
|
|
44
|
+
assert isinstance(progress, dl.Progress)
|
|
45
|
+
progress.update(status='inProgress', progress=0)
|
|
46
|
+
print('Hello World from Dataloop :)')
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
"""
|
|
51
|
+
Run this main to locally debug your package
|
|
52
|
+
"""
|
|
53
|
+
dl.packages.test_local_package()
|
dtlpy/assets/main_partial.py
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
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
|
-
"""
|
|
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
|
+
"""
|
dtlpy/assets/mock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
{
|
|
2
|
-
"init_params": {},
|
|
3
|
-
"inputs": [
|
|
4
|
-
{
|
|
5
|
-
"name": "item",
|
|
6
|
-
"value": {
|
|
7
|
-
"dataset_id": "",
|
|
8
|
-
"item_id": ""
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
]
|
|
1
|
+
{
|
|
2
|
+
"init_params": {},
|
|
3
|
+
"inputs": [
|
|
4
|
+
{
|
|
5
|
+
"name": "item",
|
|
6
|
+
"value": {
|
|
7
|
+
"dataset_id": "",
|
|
8
|
+
"item_id": ""
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
]
|
|
12
12
|
}
|
dtlpy/assets/model_adapter.py
CHANGED
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import dtlpy as dl
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class ModelAdapter(dl.BaseModelAdapter):
|
|
5
|
-
"""
|
|
6
|
-
Specific Model adapter.
|
|
7
|
-
The class bind a dl.Model entity with the package code
|
|
8
|
-
"""
|
|
9
|
-
# TODO:
|
|
10
|
-
# 1) docstring for your ModelAdapter
|
|
11
|
-
# 2) implement the virtual methods for full adapter support
|
|
12
|
-
# 3) add your _defaults
|
|
13
|
-
|
|
14
|
-
_defaults = {}
|
|
15
|
-
|
|
16
|
-
def __init__(self, model_entity):
|
|
17
|
-
super(ModelAdapter, self).__init__(model_entity)
|
|
18
|
-
|
|
19
|
-
# ===============================
|
|
20
|
-
# NEED TO IMPLEMENT THESE METHODS
|
|
21
|
-
# ===============================
|
|
22
|
-
|
|
23
|
-
def load(self, local_path, **kwargs):
|
|
24
|
-
""" Loads model and populates self.model with a `runnable` model
|
|
25
|
-
|
|
26
|
-
Virtual method - need to implement
|
|
27
|
-
|
|
28
|
-
This function is called by load_from_model (download to local and then loads)
|
|
29
|
-
|
|
30
|
-
:param local_path: `str` directory path in local FileSystem
|
|
31
|
-
"""
|
|
32
|
-
raise NotImplementedError("Please implement 'load' method in {}".format(self.__class__.__name__))
|
|
33
|
-
|
|
34
|
-
def save(self, local_path, **kwargs):
|
|
35
|
-
""" saves configuration and weights locally
|
|
36
|
-
|
|
37
|
-
Virtual method - need to implement
|
|
38
|
-
|
|
39
|
-
the function is called in save_to_model which first save locally and then uploads to model entity
|
|
40
|
-
|
|
41
|
-
:param local_path: `str` directory path in local FileSystem
|
|
42
|
-
"""
|
|
43
|
-
raise NotImplementedError("Please implement 'save' method in {}".format(self.__class__.__name__))
|
|
44
|
-
|
|
45
|
-
def train(self, data_path, dump_path, **kwargs):
|
|
46
|
-
"""
|
|
47
|
-
Virtual method - need to implement
|
|
48
|
-
Train the model according to data in local_path and save everything to dump_path
|
|
49
|
-
|
|
50
|
-
:param data_path: `str` local File System path to where the data was downloaded and converted at
|
|
51
|
-
:param dump_path: `str` local File System path where to dump training mid-results (checkpoints, logs...)
|
|
52
|
-
"""
|
|
53
|
-
raise NotImplementedError("Please implement 'train' method in {}".format(self.__class__.__name__))
|
|
54
|
-
|
|
55
|
-
def predict(self, batch, **kwargs):
|
|
56
|
-
""" Model inference (predictions) on batch of images
|
|
57
|
-
|
|
58
|
-
Virtual method - need to implement
|
|
59
|
-
|
|
60
|
-
:param batch: `np.ndarray`
|
|
61
|
-
:return: `list[dl.AnnotationCollection]` each collection is per each image / item in the batch
|
|
62
|
-
"""
|
|
63
|
-
raise NotImplementedError("Please implement 'predict' method in {}".format(self.__class__.__name__))
|
|
64
|
-
|
|
65
|
-
def convert(self, data_path, **kwargs):
|
|
66
|
-
""" Convert Dataloop structure data to model structured
|
|
67
|
-
|
|
68
|
-
Virtual method - need to implement
|
|
69
|
-
|
|
70
|
-
e.g. take dlp dir structure and construct annotation file
|
|
71
|
-
|
|
72
|
-
:param data_path: `str` local File System directory path where
|
|
73
|
-
we already downloaded the data from dataloop platform
|
|
74
|
-
:return:
|
|
75
|
-
"""
|
|
76
|
-
raise NotImplementedError("Please implement 'convert' method in {}".format(self.__class__.__name__))
|
|
77
|
-
|
|
78
|
-
# NOT IN USE
|
|
79
|
-
def convert_dlp(self, items: dl.entities.PagedEntities):
|
|
80
|
-
""" This should implement similar to convert only to work on dlp items. ->
|
|
81
|
-
-> meaning create the converted version from items entities"""
|
|
82
|
-
# TODO
|
|
83
|
-
pass
|
|
1
|
+
import dtlpy as dl
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ModelAdapter(dl.BaseModelAdapter):
|
|
5
|
+
"""
|
|
6
|
+
Specific Model adapter.
|
|
7
|
+
The class bind a dl.Model entity with the package code
|
|
8
|
+
"""
|
|
9
|
+
# TODO:
|
|
10
|
+
# 1) docstring for your ModelAdapter
|
|
11
|
+
# 2) implement the virtual methods for full adapter support
|
|
12
|
+
# 3) add your _defaults
|
|
13
|
+
|
|
14
|
+
_defaults = {}
|
|
15
|
+
|
|
16
|
+
def __init__(self, model_entity):
|
|
17
|
+
super(ModelAdapter, self).__init__(model_entity)
|
|
18
|
+
|
|
19
|
+
# ===============================
|
|
20
|
+
# NEED TO IMPLEMENT THESE METHODS
|
|
21
|
+
# ===============================
|
|
22
|
+
|
|
23
|
+
def load(self, local_path, **kwargs):
|
|
24
|
+
""" Loads model and populates self.model with a `runnable` model
|
|
25
|
+
|
|
26
|
+
Virtual method - need to implement
|
|
27
|
+
|
|
28
|
+
This function is called by load_from_model (download to local and then loads)
|
|
29
|
+
|
|
30
|
+
:param local_path: `str` directory path in local FileSystem
|
|
31
|
+
"""
|
|
32
|
+
raise NotImplementedError("Please implement 'load' method in {}".format(self.__class__.__name__))
|
|
33
|
+
|
|
34
|
+
def save(self, local_path, **kwargs):
|
|
35
|
+
""" saves configuration and weights locally
|
|
36
|
+
|
|
37
|
+
Virtual method - need to implement
|
|
38
|
+
|
|
39
|
+
the function is called in save_to_model which first save locally and then uploads to model entity
|
|
40
|
+
|
|
41
|
+
:param local_path: `str` directory path in local FileSystem
|
|
42
|
+
"""
|
|
43
|
+
raise NotImplementedError("Please implement 'save' method in {}".format(self.__class__.__name__))
|
|
44
|
+
|
|
45
|
+
def train(self, data_path, dump_path, **kwargs):
|
|
46
|
+
"""
|
|
47
|
+
Virtual method - need to implement
|
|
48
|
+
Train the model according to data in local_path and save everything to dump_path
|
|
49
|
+
|
|
50
|
+
:param data_path: `str` local File System path to where the data was downloaded and converted at
|
|
51
|
+
:param dump_path: `str` local File System path where to dump training mid-results (checkpoints, logs...)
|
|
52
|
+
"""
|
|
53
|
+
raise NotImplementedError("Please implement 'train' method in {}".format(self.__class__.__name__))
|
|
54
|
+
|
|
55
|
+
def predict(self, batch, **kwargs):
|
|
56
|
+
""" Model inference (predictions) on batch of images
|
|
57
|
+
|
|
58
|
+
Virtual method - need to implement
|
|
59
|
+
|
|
60
|
+
:param batch: `np.ndarray`
|
|
61
|
+
:return: `list[dl.AnnotationCollection]` each collection is per each image / item in the batch
|
|
62
|
+
"""
|
|
63
|
+
raise NotImplementedError("Please implement 'predict' method in {}".format(self.__class__.__name__))
|
|
64
|
+
|
|
65
|
+
def convert(self, data_path, **kwargs):
|
|
66
|
+
""" Convert Dataloop structure data to model structured
|
|
67
|
+
|
|
68
|
+
Virtual method - need to implement
|
|
69
|
+
|
|
70
|
+
e.g. take dlp dir structure and construct annotation file
|
|
71
|
+
|
|
72
|
+
:param data_path: `str` local File System directory path where
|
|
73
|
+
we already downloaded the data from dataloop platform
|
|
74
|
+
:return:
|
|
75
|
+
"""
|
|
76
|
+
raise NotImplementedError("Please implement 'convert' method in {}".format(self.__class__.__name__))
|
|
77
|
+
|
|
78
|
+
# NOT IN USE
|
|
79
|
+
def convert_dlp(self, items: dl.entities.PagedEntities):
|
|
80
|
+
""" This should implement similar to convert only to work on dlp items. ->
|
|
81
|
+
-> meaning create the converted version from items entities"""
|
|
82
|
+
# TODO
|
|
83
|
+
pass
|
dtlpy/assets/package.json
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "default-package",
|
|
3
|
-
"modules": [
|
|
4
|
-
{
|
|
5
|
-
"name": "default_module",
|
|
6
|
-
"entryPoint": "main.py",
|
|
7
|
-
"initInputs": [],
|
|
8
|
-
"functions": [
|
|
9
|
-
{
|
|
10
|
-
"name": "run",
|
|
11
|
-
"description": "this description for your service",
|
|
12
|
-
"input": [
|
|
13
|
-
{
|
|
14
|
-
"name": "item",
|
|
15
|
-
"type": "Item"
|
|
16
|
-
}
|
|
17
|
-
],
|
|
18
|
-
"output": []
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"name": "hello",
|
|
22
|
-
"description": "hello function",
|
|
23
|
-
"input": [],
|
|
24
|
-
"output": []
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
"services": [
|
|
30
|
-
{
|
|
31
|
-
"name": "default-service",
|
|
32
|
-
"packageRevision": "latest",
|
|
33
|
-
"runtime": {
|
|
34
|
-
"gpu": false,
|
|
35
|
-
"replicas": 1,
|
|
36
|
-
"concurrency": 10
|
|
37
|
-
},
|
|
38
|
-
"triggers": [
|
|
39
|
-
{
|
|
40
|
-
"name": "name",
|
|
41
|
-
"active": true,
|
|
42
|
-
"type": "Event",
|
|
43
|
-
"spec": {
|
|
44
|
-
"filter": {},
|
|
45
|
-
"resource": "Item",
|
|
46
|
-
"actions": [
|
|
47
|
-
"Created"
|
|
48
|
-
],
|
|
49
|
-
"operation": {
|
|
50
|
-
"type": "function",
|
|
51
|
-
"functionName": "run"
|
|
52
|
-
},
|
|
53
|
-
"executionMode": "Once"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
],
|
|
57
|
-
"initParams": {},
|
|
58
|
-
"moduleName": "default_module"
|
|
59
|
-
}
|
|
60
|
-
]
|
|
61
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "default-package",
|
|
3
|
+
"modules": [
|
|
4
|
+
{
|
|
5
|
+
"name": "default_module",
|
|
6
|
+
"entryPoint": "main.py",
|
|
7
|
+
"initInputs": [],
|
|
8
|
+
"functions": [
|
|
9
|
+
{
|
|
10
|
+
"name": "run",
|
|
11
|
+
"description": "this description for your service",
|
|
12
|
+
"input": [
|
|
13
|
+
{
|
|
14
|
+
"name": "item",
|
|
15
|
+
"type": "Item"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"output": []
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "hello",
|
|
22
|
+
"description": "hello function",
|
|
23
|
+
"input": [],
|
|
24
|
+
"output": []
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"services": [
|
|
30
|
+
{
|
|
31
|
+
"name": "default-service",
|
|
32
|
+
"packageRevision": "latest",
|
|
33
|
+
"runtime": {
|
|
34
|
+
"gpu": false,
|
|
35
|
+
"replicas": 1,
|
|
36
|
+
"concurrency": 10
|
|
37
|
+
},
|
|
38
|
+
"triggers": [
|
|
39
|
+
{
|
|
40
|
+
"name": "name",
|
|
41
|
+
"active": true,
|
|
42
|
+
"type": "Event",
|
|
43
|
+
"spec": {
|
|
44
|
+
"filter": {},
|
|
45
|
+
"resource": "Item",
|
|
46
|
+
"actions": [
|
|
47
|
+
"Created"
|
|
48
|
+
],
|
|
49
|
+
"operation": {
|
|
50
|
+
"type": "function",
|
|
51
|
+
"functionName": "run"
|
|
52
|
+
},
|
|
53
|
+
"executionMode": "Once"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"initParams": {},
|
|
58
|
+
"moduleName": "default_module"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|