dtlpy 1.114.17__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 -311
- 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 -296
- dtlpy/entities/collection.py +38 -38
- dtlpy/entities/command.py +169 -169
- dtlpy/entities/compute.py +449 -442
- dtlpy/entities/dataset.py +1299 -1285
- dtlpy/entities/directory_tree.py +44 -44
- dtlpy/entities/dpk.py +470 -470
- dtlpy/entities/driver.py +235 -223
- dtlpy/entities/execution.py +397 -397
- dtlpy/entities/feature.py +124 -124
- dtlpy/entities/feature_set.py +145 -145
- dtlpy/entities/filters.py +798 -645
- dtlpy/entities/gis_item.py +107 -107
- dtlpy/entities/integration.py +184 -184
- dtlpy/entities/item.py +959 -953
- 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 -499
- 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 -958
- 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 -1086
- 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 -158
- dtlpy/repositories/compositions.py +61 -61
- dtlpy/repositories/computes.py +439 -435
- dtlpy/repositories/datasets.py +1504 -1291
- dtlpy/repositories/downloader.py +976 -903
- dtlpy/repositories/dpks.py +433 -433
- dtlpy/repositories/drivers.py +482 -470
- dtlpy/repositories/executions.py +815 -817
- dtlpy/repositories/feature_sets.py +226 -226
- dtlpy/repositories/features.py +255 -238
- dtlpy/repositories/integrations.py +484 -484
- dtlpy/repositories/items.py +912 -909
- dtlpy/repositories/messages.py +94 -94
- dtlpy/repositories/models.py +1000 -988
- 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 -651
- 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 -1782
- 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.114.17.data → dtlpy-1.116.6.data}/scripts/dlp +1 -1
- dtlpy-1.116.6.data/scripts/dlp.bat +2 -0
- {dtlpy-1.114.17.data → dtlpy-1.116.6.data}/scripts/dlp.py +128 -128
- {dtlpy-1.114.17.dist-info → dtlpy-1.116.6.dist-info}/METADATA +186 -183
- dtlpy-1.116.6.dist-info/RECORD +239 -0
- {dtlpy-1.114.17.dist-info → dtlpy-1.116.6.dist-info}/WHEEL +1 -1
- {dtlpy-1.114.17.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.114.17.data/scripts/dlp.bat +0 -2
- dtlpy-1.114.17.dist-info/RECORD +0 -240
- {dtlpy-1.114.17.dist-info → dtlpy-1.116.6.dist-info}/entry_points.txt +0 -0
- {dtlpy-1.114.17.dist-info → dtlpy-1.116.6.dist-info}/top_level.txt +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
dlp.py $*
|
|
1
|
+
dlp.py $*
|
|
@@ -1,128 +1,128 @@
|
|
|
1
|
-
#!python
|
|
2
|
-
import subprocess
|
|
3
|
-
import traceback
|
|
4
|
-
import datetime
|
|
5
|
-
import logging
|
|
6
|
-
import shlex
|
|
7
|
-
import sys
|
|
8
|
-
import os
|
|
9
|
-
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
|
|
10
|
-
from prompt_toolkit import prompt
|
|
11
|
-
import dtlpy as dlp
|
|
12
|
-
from dtlpy import exceptions
|
|
13
|
-
from dtlpy.dlp.cli_utilities import FileHistory, get_parser_tree, DlpCompleter
|
|
14
|
-
from dtlpy.dlp.parser import get_parser
|
|
15
|
-
from dtlpy.dlp.command_executor import CommandExecutor
|
|
16
|
-
|
|
17
|
-
dlp.client_api.is_cli = True
|
|
18
|
-
|
|
19
|
-
##########
|
|
20
|
-
# Logger #
|
|
21
|
-
##########
|
|
22
|
-
# set levels for CLI
|
|
23
|
-
logger = logging.getLogger(name='dtlpy')
|
|
24
|
-
handler_id = next((i for i, hand in enumerate(logger.handlers) if isinstance(hand, logging.StreamHandler)), 0)
|
|
25
|
-
logger.handlers[handler_id].setLevel(level=logging.INFO)
|
|
26
|
-
logger.propagate = False
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def dlp_exit():
|
|
30
|
-
print(datetime.datetime.now(datetime.timezone.utc))
|
|
31
|
-
print("Goodbye ;)")
|
|
32
|
-
sys.exit(0)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
def main():
|
|
36
|
-
try:
|
|
37
|
-
parser = get_parser()
|
|
38
|
-
keywords = get_parser_tree(parser=parser)
|
|
39
|
-
args = parser.parse_args()
|
|
40
|
-
history_file = os.path.join(os.getcwd(), ".history.txt")
|
|
41
|
-
command_executor = CommandExecutor(dl=dlp, parser=parser)
|
|
42
|
-
|
|
43
|
-
if args.version:
|
|
44
|
-
logger.info("Dataloop SDK Version: {}".format(dlp.__version__))
|
|
45
|
-
|
|
46
|
-
elif args.operation == "shell":
|
|
47
|
-
#######################
|
|
48
|
-
# Open Dataloop shell #
|
|
49
|
-
#######################
|
|
50
|
-
while True:
|
|
51
|
-
text = prompt(u"dl>",
|
|
52
|
-
history=FileHistory(history_file),
|
|
53
|
-
auto_suggest=AutoSuggestFromHistory(),
|
|
54
|
-
completer=DlpCompleter(keywords=keywords, dlp=dlp))
|
|
55
|
-
if text == '':
|
|
56
|
-
# in new line
|
|
57
|
-
continue
|
|
58
|
-
|
|
59
|
-
try:
|
|
60
|
-
if text in ["-h", "--help"]:
|
|
61
|
-
text = "help"
|
|
62
|
-
text = shlex.split(text)
|
|
63
|
-
if text[0] not in keywords:
|
|
64
|
-
p = subprocess.Popen(text)
|
|
65
|
-
p.communicate()
|
|
66
|
-
continue
|
|
67
|
-
parser = get_parser()
|
|
68
|
-
args = parser.parse_args(text)
|
|
69
|
-
if args.operation == "exit":
|
|
70
|
-
dlp_exit()
|
|
71
|
-
else:
|
|
72
|
-
command_executor.run(args=args)
|
|
73
|
-
except exceptions.TokenExpired:
|
|
74
|
-
print(datetime.datetime.now(datetime.timezone.utc))
|
|
75
|
-
print("[ERROR] token expired, please login.")
|
|
76
|
-
continue
|
|
77
|
-
except SystemExit as e:
|
|
78
|
-
# exit
|
|
79
|
-
if e.code == 0:
|
|
80
|
-
if "-h" in text or "--help" in text:
|
|
81
|
-
continue
|
|
82
|
-
else:
|
|
83
|
-
sys.exit(0)
|
|
84
|
-
# error
|
|
85
|
-
else:
|
|
86
|
-
print(datetime.datetime.now(datetime.timezone.utc))
|
|
87
|
-
print('"{command}" is not a valid command'.format(command=text))
|
|
88
|
-
continue
|
|
89
|
-
except Exception as e:
|
|
90
|
-
print(datetime.datetime.now(datetime.timezone.utc))
|
|
91
|
-
if hasattr(e, 'message'):
|
|
92
|
-
print(e.message)
|
|
93
|
-
else:
|
|
94
|
-
print(e.__str__())
|
|
95
|
-
continue
|
|
96
|
-
|
|
97
|
-
else:
|
|
98
|
-
######################
|
|
99
|
-
# Run single command #
|
|
100
|
-
######################
|
|
101
|
-
try:
|
|
102
|
-
command_executor.run(args=args)
|
|
103
|
-
sys.exit(0)
|
|
104
|
-
except exceptions.TokenExpired:
|
|
105
|
-
print(datetime.datetime.now(datetime.timezone.utc))
|
|
106
|
-
print("[ERROR] token expired, please login.")
|
|
107
|
-
sys.exit(1)
|
|
108
|
-
except Exception as e:
|
|
109
|
-
print(datetime.datetime.now(datetime.timezone.utc))
|
|
110
|
-
print(traceback.format_exc())
|
|
111
|
-
print(e)
|
|
112
|
-
sys.exit(1)
|
|
113
|
-
except KeyboardInterrupt:
|
|
114
|
-
dlp_exit()
|
|
115
|
-
except EOFError:
|
|
116
|
-
dlp_exit()
|
|
117
|
-
except Exception:
|
|
118
|
-
print(traceback.format_exc())
|
|
119
|
-
dlp_exit()
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
if __name__ == "__main__":
|
|
123
|
-
try:
|
|
124
|
-
main()
|
|
125
|
-
except Exception as err:
|
|
126
|
-
print(datetime.datetime.now(datetime.timezone.utc))
|
|
127
|
-
print("[ERROR]\t%s" % err)
|
|
128
|
-
print("Dataloop.ai CLI. Type dlp --help for options")
|
|
1
|
+
#!python
|
|
2
|
+
import subprocess
|
|
3
|
+
import traceback
|
|
4
|
+
import datetime
|
|
5
|
+
import logging
|
|
6
|
+
import shlex
|
|
7
|
+
import sys
|
|
8
|
+
import os
|
|
9
|
+
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
|
|
10
|
+
from prompt_toolkit import prompt
|
|
11
|
+
import dtlpy as dlp
|
|
12
|
+
from dtlpy import exceptions
|
|
13
|
+
from dtlpy.dlp.cli_utilities import FileHistory, get_parser_tree, DlpCompleter
|
|
14
|
+
from dtlpy.dlp.parser import get_parser
|
|
15
|
+
from dtlpy.dlp.command_executor import CommandExecutor
|
|
16
|
+
|
|
17
|
+
dlp.client_api.is_cli = True
|
|
18
|
+
|
|
19
|
+
##########
|
|
20
|
+
# Logger #
|
|
21
|
+
##########
|
|
22
|
+
# set levels for CLI
|
|
23
|
+
logger = logging.getLogger(name='dtlpy')
|
|
24
|
+
handler_id = next((i for i, hand in enumerate(logger.handlers) if isinstance(hand, logging.StreamHandler)), 0)
|
|
25
|
+
logger.handlers[handler_id].setLevel(level=logging.INFO)
|
|
26
|
+
logger.propagate = False
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def dlp_exit():
|
|
30
|
+
print(datetime.datetime.now(datetime.timezone.utc))
|
|
31
|
+
print("Goodbye ;)")
|
|
32
|
+
sys.exit(0)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def main():
|
|
36
|
+
try:
|
|
37
|
+
parser = get_parser()
|
|
38
|
+
keywords = get_parser_tree(parser=parser)
|
|
39
|
+
args = parser.parse_args()
|
|
40
|
+
history_file = os.path.join(os.getcwd(), ".history.txt")
|
|
41
|
+
command_executor = CommandExecutor(dl=dlp, parser=parser)
|
|
42
|
+
|
|
43
|
+
if args.version:
|
|
44
|
+
logger.info("Dataloop SDK Version: {}".format(dlp.__version__))
|
|
45
|
+
|
|
46
|
+
elif args.operation == "shell":
|
|
47
|
+
#######################
|
|
48
|
+
# Open Dataloop shell #
|
|
49
|
+
#######################
|
|
50
|
+
while True:
|
|
51
|
+
text = prompt(u"dl>",
|
|
52
|
+
history=FileHistory(history_file),
|
|
53
|
+
auto_suggest=AutoSuggestFromHistory(),
|
|
54
|
+
completer=DlpCompleter(keywords=keywords, dlp=dlp))
|
|
55
|
+
if text == '':
|
|
56
|
+
# in new line
|
|
57
|
+
continue
|
|
58
|
+
|
|
59
|
+
try:
|
|
60
|
+
if text in ["-h", "--help"]:
|
|
61
|
+
text = "help"
|
|
62
|
+
text = shlex.split(text)
|
|
63
|
+
if text[0] not in keywords:
|
|
64
|
+
p = subprocess.Popen(text)
|
|
65
|
+
p.communicate()
|
|
66
|
+
continue
|
|
67
|
+
parser = get_parser()
|
|
68
|
+
args = parser.parse_args(text)
|
|
69
|
+
if args.operation == "exit":
|
|
70
|
+
dlp_exit()
|
|
71
|
+
else:
|
|
72
|
+
command_executor.run(args=args)
|
|
73
|
+
except exceptions.TokenExpired:
|
|
74
|
+
print(datetime.datetime.now(datetime.timezone.utc))
|
|
75
|
+
print("[ERROR] token expired, please login.")
|
|
76
|
+
continue
|
|
77
|
+
except SystemExit as e:
|
|
78
|
+
# exit
|
|
79
|
+
if e.code == 0:
|
|
80
|
+
if "-h" in text or "--help" in text:
|
|
81
|
+
continue
|
|
82
|
+
else:
|
|
83
|
+
sys.exit(0)
|
|
84
|
+
# error
|
|
85
|
+
else:
|
|
86
|
+
print(datetime.datetime.now(datetime.timezone.utc))
|
|
87
|
+
print('"{command}" is not a valid command'.format(command=text))
|
|
88
|
+
continue
|
|
89
|
+
except Exception as e:
|
|
90
|
+
print(datetime.datetime.now(datetime.timezone.utc))
|
|
91
|
+
if hasattr(e, 'message'):
|
|
92
|
+
print(e.message)
|
|
93
|
+
else:
|
|
94
|
+
print(e.__str__())
|
|
95
|
+
continue
|
|
96
|
+
|
|
97
|
+
else:
|
|
98
|
+
######################
|
|
99
|
+
# Run single command #
|
|
100
|
+
######################
|
|
101
|
+
try:
|
|
102
|
+
command_executor.run(args=args)
|
|
103
|
+
sys.exit(0)
|
|
104
|
+
except exceptions.TokenExpired:
|
|
105
|
+
print(datetime.datetime.now(datetime.timezone.utc))
|
|
106
|
+
print("[ERROR] token expired, please login.")
|
|
107
|
+
sys.exit(1)
|
|
108
|
+
except Exception as e:
|
|
109
|
+
print(datetime.datetime.now(datetime.timezone.utc))
|
|
110
|
+
print(traceback.format_exc())
|
|
111
|
+
print(e)
|
|
112
|
+
sys.exit(1)
|
|
113
|
+
except KeyboardInterrupt:
|
|
114
|
+
dlp_exit()
|
|
115
|
+
except EOFError:
|
|
116
|
+
dlp_exit()
|
|
117
|
+
except Exception:
|
|
118
|
+
print(traceback.format_exc())
|
|
119
|
+
dlp_exit()
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
if __name__ == "__main__":
|
|
123
|
+
try:
|
|
124
|
+
main()
|
|
125
|
+
except Exception as err:
|
|
126
|
+
print(datetime.datetime.now(datetime.timezone.utc))
|
|
127
|
+
print("[ERROR]\t%s" % err)
|
|
128
|
+
print("Dataloop.ai CLI. Type dlp --help for options")
|
|
@@ -1,183 +1,186 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: dtlpy
|
|
3
|
-
Version: 1.
|
|
4
|
-
Summary: SDK and CLI for Dataloop platform
|
|
5
|
-
Home-page: https://github.com/dataloop-ai/dtlpy
|
|
6
|
-
Author: Dataloop Team
|
|
7
|
-
Author-email: info@dataloop.ai
|
|
8
|
-
License: Apache License 2.0
|
|
9
|
-
Classifier: Programming Language :: Python
|
|
10
|
-
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
-
Requires-Python: >=3.7
|
|
18
|
-
Description-Content-Type: text/markdown
|
|
19
|
-
License-File: LICENSE
|
|
20
|
-
Requires-Dist: urllib3>=1.26
|
|
21
|
-
Requires-Dist: tqdm>=4.63
|
|
22
|
-
Requires-Dist: certifi>=2020.12.5
|
|
23
|
-
Requires-Dist: webvtt-py==0.4.3
|
|
24
|
-
Requires-Dist: aiohttp>=3.8
|
|
25
|
-
Requires-Dist: requests-toolbelt>=1.0.0
|
|
26
|
-
Requires-Dist: requests>=2.25.0
|
|
27
|
-
Requires-Dist: numpy>=1.16.2
|
|
28
|
-
Requires-Dist: pandas>=0.24.2
|
|
29
|
-
Requires-Dist: tabulate>=0.8.9
|
|
30
|
-
Requires-Dist: Pillow>=7.2
|
|
31
|
-
Requires-Dist: PyJWT>=2.4
|
|
32
|
-
Requires-Dist: jinja2>=2.11.3
|
|
33
|
-
Requires-Dist: attrs<=22.2.0
|
|
34
|
-
Requires-Dist: prompt_toolkit>=2.0.9
|
|
35
|
-
Requires-Dist: fuzzyfinder<=2.1.0
|
|
36
|
-
Requires-Dist: dictdiffer>=0.8.1
|
|
37
|
-
Requires-Dist: validators<=0.18.2
|
|
38
|
-
Requires-Dist: pathspec>=0.8.1
|
|
39
|
-
Requires-Dist: filelock>=3.0.12
|
|
40
|
-
Requires-Dist: diskcache>=5.4
|
|
41
|
-
Requires-Dist: redis>=3.5
|
|
42
|
-
Requires-Dist: inquirer
|
|
43
|
-
Requires-Dist: dtlpymetrics
|
|
44
|
-
Requires-Dist: dataclasses
|
|
45
|
-
|
|
46
|
-
Dynamic: author
|
|
47
|
-
Dynamic:
|
|
48
|
-
Dynamic:
|
|
49
|
-
Dynamic: description
|
|
50
|
-
Dynamic:
|
|
51
|
-
Dynamic:
|
|
52
|
-
Dynamic: license
|
|
53
|
-
Dynamic:
|
|
54
|
-
Dynamic: requires-
|
|
55
|
-
Dynamic:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
[
|
|
61
|
+
|
|
62
|
+
[](https://sdk-docs.dataloop.ai/en/latest/?badge=latest)
|
|
63
|
+
[](https://pypi.org/project/dtlpy/)
|
|
64
|
+
[](https://github.com/dataloop-ai/dtlpy)
|
|
65
|
+
[](https://github.com/dataloop-ai/dtlpy/blob/master/LICENSE)
|
|
66
|
+
[](https://pepy.tech/project/dtlpy)
|
|
67
|
+
|
|
68
|
+
📚 [Platform Documentation](https://dataloop.ai/docs) | 📖 [SDK Documentation](https://sdk-docs.dataloop.ai/en/latest/) | [Developer docs](https://developers.dataloop.ai/)
|
|
69
|
+
|
|
70
|
+
An open-source SDK and CLI toolkit to interact seamlessly with the [Dataloop.ai](https://dataloop.ai/) platform, providing powerful data management, annotation capabilities, and workflow automation.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## **Table of Contents**
|
|
75
|
+
|
|
76
|
+
- [**DTLPY – SDK and CLI for Dataloop.ai**](#dtlpy--sdk-and-cli-for-dataloopai)
|
|
77
|
+
- [**Table of Contents**](#table-of-contents)
|
|
78
|
+
- [**Overview**](#overview)
|
|
79
|
+
- [**Installation**](#installation)
|
|
80
|
+
- [**Usage**](#usage)
|
|
81
|
+
- [**SDK Usage**](#sdk-usage)
|
|
82
|
+
- [**CLI Usage**](#cli-usage)
|
|
83
|
+
- [**Python Version Support**](#python-version-support)
|
|
84
|
+
- [**Development**](#development)
|
|
85
|
+
- [**Resources**](#resources)
|
|
86
|
+
- [**Contribution Guidelines**](#contribution-guidelines)
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## **Overview**
|
|
91
|
+
|
|
92
|
+
DTLPY provides a robust Python SDK and a powerful CLI, enabling developers and data scientists to automate tasks, manage datasets, annotations, and streamline workflows within the Dataloop platform.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## **Installation**
|
|
97
|
+
|
|
98
|
+
Install DTLPY directly from PyPI using pip:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
pip install dtlpy
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Alternatively, for the latest development version, install directly from GitHub:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
pip install git+https://github.com/dataloop-ai/dtlpy.git
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## **Usage**
|
|
113
|
+
|
|
114
|
+
### **SDK Usage**
|
|
115
|
+
|
|
116
|
+
Here's a basic example to get started with the DTLPY SDK:
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
import dtlpy as dl
|
|
120
|
+
|
|
121
|
+
# Authenticate
|
|
122
|
+
dl.login()
|
|
123
|
+
|
|
124
|
+
# Access a project
|
|
125
|
+
project = dl.projects.get(project_name='your-project-name')
|
|
126
|
+
|
|
127
|
+
# Access dataset
|
|
128
|
+
dataset = project.datasets.get(dataset_name='your-dataset-name')
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### **CLI Usage**
|
|
132
|
+
|
|
133
|
+
DTLPY also provides a convenient command-line interface:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
dlp login
|
|
137
|
+
dlp projects ls
|
|
138
|
+
dlp datasets ls --project-name your-project-name
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## **Python Version Support**
|
|
144
|
+
|
|
145
|
+
DTLPY supports multiple Python versions as follows:
|
|
146
|
+
|
|
147
|
+
| Python Version | 3.11 | 3.10 | 3.9 | 3.8 | 3.7 | 3.6 | 3.5 |
|
|
148
|
+
|--------------------|------|------|-----|-----|-----|-----|-----|
|
|
149
|
+
| **dtlpy >= 1.99** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
|
|
150
|
+
| **dtlpy 1.76–1.98**| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
|
|
151
|
+
| **dtlpy >= 1.61** | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
|
|
152
|
+
| **dtlpy 1.50–1.60**| ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
|
|
153
|
+
| **dtlpy <= 1.49** | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## **Development**
|
|
158
|
+
|
|
159
|
+
To set up the development environment, clone the repository and install dependencies:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
git clone https://github.com/dataloop-ai/dtlpy.git
|
|
163
|
+
cd dtlpy
|
|
164
|
+
pip install -r requirements.txt
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## **Resources**
|
|
168
|
+
|
|
169
|
+
- [Dataloop Platform](https://console.dataloop.ai)
|
|
170
|
+
- [Full SDK Documentation](https://sdk-docs.dataloop.ai/en/latest/)
|
|
171
|
+
- [Platform Documentation](https://dataloop.ai/docs)
|
|
172
|
+
- [SDK Examples and Tutorials](https://github.com/dataloop-ai/dtlpy-documentation)
|
|
173
|
+
- [Developer docs](https://developers.dataloop.ai/)
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## **Contribution Guidelines**
|
|
178
|
+
|
|
179
|
+
We encourage contributions! Please ensure:
|
|
180
|
+
|
|
181
|
+
- Clear and descriptive commit messages
|
|
182
|
+
- Code follows existing formatting and conventions
|
|
183
|
+
- Comprehensive tests for new features or bug fixes
|
|
184
|
+
- Updates to documentation if relevant
|
|
185
|
+
|
|
186
|
+
Create pull requests for review. All contributions will be reviewed carefully and integrated accordingly.
|