ob-metaflow 2.11.13.1__py2.py3-none-any.whl → 2.19.7.1rc0__py2.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.
- metaflow/R.py +10 -7
- metaflow/__init__.py +40 -25
- metaflow/_vendor/imghdr/__init__.py +186 -0
- metaflow/_vendor/importlib_metadata/__init__.py +1063 -0
- metaflow/_vendor/importlib_metadata/_adapters.py +68 -0
- metaflow/_vendor/importlib_metadata/_collections.py +30 -0
- metaflow/_vendor/importlib_metadata/_compat.py +71 -0
- metaflow/_vendor/importlib_metadata/_functools.py +104 -0
- metaflow/_vendor/importlib_metadata/_itertools.py +73 -0
- metaflow/_vendor/importlib_metadata/_meta.py +48 -0
- metaflow/_vendor/importlib_metadata/_text.py +99 -0
- metaflow/_vendor/importlib_metadata/py.typed +0 -0
- metaflow/_vendor/typeguard/__init__.py +48 -0
- metaflow/_vendor/typeguard/_checkers.py +1070 -0
- metaflow/_vendor/typeguard/_config.py +108 -0
- metaflow/_vendor/typeguard/_decorators.py +233 -0
- metaflow/_vendor/typeguard/_exceptions.py +42 -0
- metaflow/_vendor/typeguard/_functions.py +308 -0
- metaflow/_vendor/typeguard/_importhook.py +213 -0
- metaflow/_vendor/typeguard/_memo.py +48 -0
- metaflow/_vendor/typeguard/_pytest_plugin.py +127 -0
- metaflow/_vendor/typeguard/_suppression.py +86 -0
- metaflow/_vendor/typeguard/_transformer.py +1229 -0
- metaflow/_vendor/typeguard/_union_transformer.py +55 -0
- metaflow/_vendor/typeguard/_utils.py +173 -0
- metaflow/_vendor/typeguard/py.typed +0 -0
- metaflow/_vendor/typing_extensions.py +3641 -0
- metaflow/_vendor/v3_7/importlib_metadata/__init__.py +1063 -0
- metaflow/_vendor/v3_7/importlib_metadata/_adapters.py +68 -0
- metaflow/_vendor/v3_7/importlib_metadata/_collections.py +30 -0
- metaflow/_vendor/v3_7/importlib_metadata/_compat.py +71 -0
- metaflow/_vendor/v3_7/importlib_metadata/_functools.py +104 -0
- metaflow/_vendor/v3_7/importlib_metadata/_itertools.py +73 -0
- metaflow/_vendor/v3_7/importlib_metadata/_meta.py +48 -0
- metaflow/_vendor/v3_7/importlib_metadata/_text.py +99 -0
- metaflow/_vendor/v3_7/importlib_metadata/py.typed +0 -0
- metaflow/_vendor/v3_7/typeguard/__init__.py +48 -0
- metaflow/_vendor/v3_7/typeguard/_checkers.py +906 -0
- metaflow/_vendor/v3_7/typeguard/_config.py +108 -0
- metaflow/_vendor/v3_7/typeguard/_decorators.py +237 -0
- metaflow/_vendor/v3_7/typeguard/_exceptions.py +42 -0
- metaflow/_vendor/v3_7/typeguard/_functions.py +310 -0
- metaflow/_vendor/v3_7/typeguard/_importhook.py +213 -0
- metaflow/_vendor/v3_7/typeguard/_memo.py +48 -0
- metaflow/_vendor/v3_7/typeguard/_pytest_plugin.py +100 -0
- metaflow/_vendor/v3_7/typeguard/_suppression.py +88 -0
- metaflow/_vendor/v3_7/typeguard/_transformer.py +1207 -0
- metaflow/_vendor/v3_7/typeguard/_union_transformer.py +54 -0
- metaflow/_vendor/v3_7/typeguard/_utils.py +169 -0
- metaflow/_vendor/v3_7/typeguard/py.typed +0 -0
- metaflow/_vendor/v3_7/typing_extensions.py +3072 -0
- metaflow/_vendor/yaml/__init__.py +427 -0
- metaflow/_vendor/yaml/composer.py +139 -0
- metaflow/_vendor/yaml/constructor.py +748 -0
- metaflow/_vendor/yaml/cyaml.py +101 -0
- metaflow/_vendor/yaml/dumper.py +62 -0
- metaflow/_vendor/yaml/emitter.py +1137 -0
- metaflow/_vendor/yaml/error.py +75 -0
- metaflow/_vendor/yaml/events.py +86 -0
- metaflow/_vendor/yaml/loader.py +63 -0
- metaflow/_vendor/yaml/nodes.py +49 -0
- metaflow/_vendor/yaml/parser.py +589 -0
- metaflow/_vendor/yaml/reader.py +185 -0
- metaflow/_vendor/yaml/representer.py +389 -0
- metaflow/_vendor/yaml/resolver.py +227 -0
- metaflow/_vendor/yaml/scanner.py +1435 -0
- metaflow/_vendor/yaml/serializer.py +111 -0
- metaflow/_vendor/yaml/tokens.py +104 -0
- metaflow/cards.py +5 -0
- metaflow/cli.py +331 -785
- metaflow/cli_args.py +17 -0
- metaflow/cli_components/__init__.py +0 -0
- metaflow/cli_components/dump_cmd.py +96 -0
- metaflow/cli_components/init_cmd.py +52 -0
- metaflow/cli_components/run_cmds.py +546 -0
- metaflow/cli_components/step_cmd.py +334 -0
- metaflow/cli_components/utils.py +140 -0
- metaflow/client/__init__.py +1 -0
- metaflow/client/core.py +467 -73
- metaflow/client/filecache.py +75 -35
- metaflow/clone_util.py +7 -1
- metaflow/cmd/code/__init__.py +231 -0
- metaflow/cmd/develop/stub_generator.py +756 -288
- metaflow/cmd/develop/stubs.py +12 -28
- metaflow/cmd/main_cli.py +6 -4
- metaflow/cmd/make_wrapper.py +78 -0
- metaflow/datastore/__init__.py +1 -0
- metaflow/datastore/content_addressed_store.py +41 -10
- metaflow/datastore/datastore_set.py +11 -2
- metaflow/datastore/flow_datastore.py +156 -10
- metaflow/datastore/spin_datastore.py +91 -0
- metaflow/datastore/task_datastore.py +154 -39
- metaflow/debug.py +5 -0
- metaflow/decorators.py +404 -78
- metaflow/exception.py +8 -2
- metaflow/extension_support/__init__.py +527 -376
- metaflow/extension_support/_empty_file.py +2 -2
- metaflow/extension_support/plugins.py +49 -31
- metaflow/flowspec.py +482 -33
- metaflow/graph.py +210 -42
- metaflow/includefile.py +84 -40
- metaflow/lint.py +141 -22
- metaflow/meta_files.py +13 -0
- metaflow/{metadata → metadata_provider}/heartbeat.py +24 -8
- metaflow/{metadata → metadata_provider}/metadata.py +86 -1
- metaflow/metaflow_config.py +175 -28
- metaflow/metaflow_config_funcs.py +51 -3
- metaflow/metaflow_current.py +4 -10
- metaflow/metaflow_environment.py +139 -53
- metaflow/metaflow_git.py +115 -0
- metaflow/metaflow_profile.py +18 -0
- metaflow/metaflow_version.py +150 -66
- metaflow/mflog/__init__.py +4 -3
- metaflow/mflog/save_logs.py +2 -2
- metaflow/multicore_utils.py +31 -14
- metaflow/package/__init__.py +673 -0
- metaflow/packaging_sys/__init__.py +880 -0
- metaflow/packaging_sys/backend.py +128 -0
- metaflow/packaging_sys/distribution_support.py +153 -0
- metaflow/packaging_sys/tar_backend.py +99 -0
- metaflow/packaging_sys/utils.py +54 -0
- metaflow/packaging_sys/v1.py +527 -0
- metaflow/parameters.py +149 -28
- metaflow/plugins/__init__.py +74 -5
- metaflow/plugins/airflow/airflow.py +40 -25
- metaflow/plugins/airflow/airflow_cli.py +22 -5
- metaflow/plugins/airflow/airflow_decorator.py +1 -1
- metaflow/plugins/airflow/airflow_utils.py +5 -3
- metaflow/plugins/airflow/sensors/base_sensor.py +4 -4
- metaflow/plugins/airflow/sensors/external_task_sensor.py +2 -2
- metaflow/plugins/airflow/sensors/s3_sensor.py +2 -2
- metaflow/plugins/argo/argo_client.py +78 -33
- metaflow/plugins/argo/argo_events.py +6 -6
- metaflow/plugins/argo/argo_workflows.py +2410 -527
- metaflow/plugins/argo/argo_workflows_cli.py +571 -121
- metaflow/plugins/argo/argo_workflows_decorator.py +43 -12
- metaflow/plugins/argo/argo_workflows_deployer.py +106 -0
- metaflow/plugins/argo/argo_workflows_deployer_objects.py +453 -0
- metaflow/plugins/argo/capture_error.py +73 -0
- metaflow/plugins/argo/conditional_input_paths.py +35 -0
- metaflow/plugins/argo/exit_hooks.py +209 -0
- metaflow/plugins/argo/jobset_input_paths.py +15 -0
- metaflow/plugins/argo/param_val.py +19 -0
- metaflow/plugins/aws/aws_client.py +10 -3
- metaflow/plugins/aws/aws_utils.py +55 -2
- metaflow/plugins/aws/batch/batch.py +72 -5
- metaflow/plugins/aws/batch/batch_cli.py +33 -10
- metaflow/plugins/aws/batch/batch_client.py +4 -3
- metaflow/plugins/aws/batch/batch_decorator.py +102 -35
- metaflow/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.py +13 -10
- metaflow/plugins/aws/step_functions/dynamo_db_client.py +0 -3
- metaflow/plugins/aws/step_functions/production_token.py +1 -1
- metaflow/plugins/aws/step_functions/step_functions.py +65 -8
- metaflow/plugins/aws/step_functions/step_functions_cli.py +101 -7
- metaflow/plugins/aws/step_functions/step_functions_decorator.py +1 -2
- metaflow/plugins/aws/step_functions/step_functions_deployer.py +97 -0
- metaflow/plugins/aws/step_functions/step_functions_deployer_objects.py +264 -0
- metaflow/plugins/azure/azure_exceptions.py +1 -1
- metaflow/plugins/azure/azure_secret_manager_secrets_provider.py +240 -0
- metaflow/plugins/azure/azure_tail.py +1 -1
- metaflow/plugins/azure/includefile_support.py +2 -0
- metaflow/plugins/cards/card_cli.py +66 -30
- metaflow/plugins/cards/card_creator.py +25 -1
- metaflow/plugins/cards/card_datastore.py +21 -49
- metaflow/plugins/cards/card_decorator.py +132 -8
- metaflow/plugins/cards/card_modules/basic.py +112 -17
- metaflow/plugins/cards/card_modules/bundle.css +1 -1
- metaflow/plugins/cards/card_modules/card.py +16 -1
- metaflow/plugins/cards/card_modules/chevron/renderer.py +1 -1
- metaflow/plugins/cards/card_modules/components.py +665 -28
- metaflow/plugins/cards/card_modules/convert_to_native_type.py +36 -7
- metaflow/plugins/cards/card_modules/json_viewer.py +232 -0
- metaflow/plugins/cards/card_modules/main.css +1 -0
- metaflow/plugins/cards/card_modules/main.js +68 -49
- metaflow/plugins/cards/card_modules/renderer_tools.py +1 -0
- metaflow/plugins/cards/card_modules/test_cards.py +26 -12
- metaflow/plugins/cards/card_server.py +39 -14
- metaflow/plugins/cards/component_serializer.py +2 -9
- metaflow/plugins/cards/metadata.py +22 -0
- metaflow/plugins/catch_decorator.py +9 -0
- metaflow/plugins/datastores/azure_storage.py +10 -1
- metaflow/plugins/datastores/gs_storage.py +6 -2
- metaflow/plugins/datastores/local_storage.py +12 -6
- metaflow/plugins/datastores/spin_storage.py +12 -0
- metaflow/plugins/datatools/local.py +2 -0
- metaflow/plugins/datatools/s3/s3.py +126 -75
- metaflow/plugins/datatools/s3/s3op.py +254 -121
- metaflow/plugins/env_escape/__init__.py +3 -3
- metaflow/plugins/env_escape/client_modules.py +102 -72
- metaflow/plugins/env_escape/server.py +7 -0
- metaflow/plugins/env_escape/stub.py +24 -5
- metaflow/plugins/events_decorator.py +343 -185
- metaflow/plugins/exit_hook/__init__.py +0 -0
- metaflow/plugins/exit_hook/exit_hook_decorator.py +46 -0
- metaflow/plugins/exit_hook/exit_hook_script.py +52 -0
- metaflow/plugins/gcp/__init__.py +1 -1
- metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py +11 -6
- metaflow/plugins/gcp/gs_tail.py +10 -6
- metaflow/plugins/gcp/includefile_support.py +3 -0
- metaflow/plugins/kubernetes/kube_utils.py +108 -0
- metaflow/plugins/kubernetes/kubernetes.py +411 -130
- metaflow/plugins/kubernetes/kubernetes_cli.py +168 -36
- metaflow/plugins/kubernetes/kubernetes_client.py +104 -2
- metaflow/plugins/kubernetes/kubernetes_decorator.py +246 -88
- metaflow/plugins/kubernetes/kubernetes_job.py +253 -581
- metaflow/plugins/kubernetes/kubernetes_jobsets.py +1071 -0
- metaflow/plugins/kubernetes/spot_metadata_cli.py +69 -0
- metaflow/plugins/kubernetes/spot_monitor_sidecar.py +109 -0
- metaflow/plugins/logs_cli.py +359 -0
- metaflow/plugins/{metadata → metadata_providers}/local.py +144 -84
- metaflow/plugins/{metadata → metadata_providers}/service.py +103 -26
- metaflow/plugins/metadata_providers/spin.py +16 -0
- metaflow/plugins/package_cli.py +36 -24
- metaflow/plugins/parallel_decorator.py +128 -11
- metaflow/plugins/parsers.py +16 -0
- metaflow/plugins/project_decorator.py +51 -5
- metaflow/plugins/pypi/bootstrap.py +357 -105
- metaflow/plugins/pypi/conda_decorator.py +82 -81
- metaflow/plugins/pypi/conda_environment.py +187 -52
- metaflow/plugins/pypi/micromamba.py +157 -47
- metaflow/plugins/pypi/parsers.py +268 -0
- metaflow/plugins/pypi/pip.py +88 -13
- metaflow/plugins/pypi/pypi_decorator.py +37 -1
- metaflow/plugins/pypi/utils.py +48 -2
- metaflow/plugins/resources_decorator.py +2 -2
- metaflow/plugins/secrets/__init__.py +3 -0
- metaflow/plugins/secrets/secrets_decorator.py +26 -181
- metaflow/plugins/secrets/secrets_func.py +49 -0
- metaflow/plugins/secrets/secrets_spec.py +101 -0
- metaflow/plugins/secrets/utils.py +74 -0
- metaflow/plugins/tag_cli.py +4 -7
- metaflow/plugins/test_unbounded_foreach_decorator.py +41 -6
- metaflow/plugins/timeout_decorator.py +3 -3
- metaflow/plugins/uv/__init__.py +0 -0
- metaflow/plugins/uv/bootstrap.py +128 -0
- metaflow/plugins/uv/uv_environment.py +72 -0
- metaflow/procpoll.py +1 -1
- metaflow/pylint_wrapper.py +5 -1
- metaflow/runner/__init__.py +0 -0
- metaflow/runner/click_api.py +717 -0
- metaflow/runner/deployer.py +470 -0
- metaflow/runner/deployer_impl.py +201 -0
- metaflow/runner/metaflow_runner.py +714 -0
- metaflow/runner/nbdeploy.py +132 -0
- metaflow/runner/nbrun.py +225 -0
- metaflow/runner/subprocess_manager.py +650 -0
- metaflow/runner/utils.py +335 -0
- metaflow/runtime.py +1078 -260
- metaflow/sidecar/sidecar_worker.py +1 -1
- metaflow/system/__init__.py +5 -0
- metaflow/system/system_logger.py +85 -0
- metaflow/system/system_monitor.py +108 -0
- metaflow/system/system_utils.py +19 -0
- metaflow/task.py +521 -225
- metaflow/tracing/__init__.py +7 -7
- metaflow/tracing/span_exporter.py +31 -38
- metaflow/tracing/tracing_modules.py +38 -43
- metaflow/tuple_util.py +27 -0
- metaflow/user_configs/__init__.py +0 -0
- metaflow/user_configs/config_options.py +563 -0
- metaflow/user_configs/config_parameters.py +598 -0
- metaflow/user_decorators/__init__.py +0 -0
- metaflow/user_decorators/common.py +144 -0
- metaflow/user_decorators/mutable_flow.py +512 -0
- metaflow/user_decorators/mutable_step.py +424 -0
- metaflow/user_decorators/user_flow_decorator.py +264 -0
- metaflow/user_decorators/user_step_decorator.py +749 -0
- metaflow/util.py +243 -27
- metaflow/vendor.py +23 -7
- metaflow/version.py +1 -1
- ob_metaflow-2.19.7.1rc0.data/data/share/metaflow/devtools/Makefile +355 -0
- ob_metaflow-2.19.7.1rc0.data/data/share/metaflow/devtools/Tiltfile +726 -0
- ob_metaflow-2.19.7.1rc0.data/data/share/metaflow/devtools/pick_services.sh +105 -0
- ob_metaflow-2.19.7.1rc0.dist-info/METADATA +87 -0
- ob_metaflow-2.19.7.1rc0.dist-info/RECORD +445 -0
- {ob_metaflow-2.11.13.1.dist-info → ob_metaflow-2.19.7.1rc0.dist-info}/WHEEL +1 -1
- {ob_metaflow-2.11.13.1.dist-info → ob_metaflow-2.19.7.1rc0.dist-info}/entry_points.txt +1 -0
- metaflow/_vendor/v3_5/__init__.py +0 -1
- metaflow/_vendor/v3_5/importlib_metadata/__init__.py +0 -644
- metaflow/_vendor/v3_5/importlib_metadata/_compat.py +0 -152
- metaflow/package.py +0 -188
- ob_metaflow-2.11.13.1.dist-info/METADATA +0 -85
- ob_metaflow-2.11.13.1.dist-info/RECORD +0 -308
- /metaflow/_vendor/{v3_5/zipp.py → zipp.py} +0 -0
- /metaflow/{metadata → metadata_provider}/__init__.py +0 -0
- /metaflow/{metadata → metadata_provider}/util.py +0 -0
- /metaflow/plugins/{metadata → metadata_providers}/__init__.py +0 -0
- {ob_metaflow-2.11.13.1.dist-info → ob_metaflow-2.19.7.1rc0.dist-info/licenses}/LICENSE +0 -0
- {ob_metaflow-2.11.13.1.dist-info → ob_metaflow-2.19.7.1rc0.dist-info}/top_level.txt +0 -0
metaflow/cli_args.py
CHANGED
|
@@ -12,7 +12,14 @@
|
|
|
12
12
|
# well as the converting of options in runtime.py. We should make it so that we
|
|
13
13
|
# can properly shlex things and un-shlex when using. Ideally this should all be
|
|
14
14
|
# done in one place.
|
|
15
|
+
#
|
|
16
|
+
# NOTE: There is an important between these two as well:
|
|
17
|
+
# - this one will include local_config_file whereas the other one WILL NOT.
|
|
18
|
+
# This is because this is used when constructing the parallel UBF command which
|
|
19
|
+
# executes locally and therefore needs the local_config_file but the other (remote)
|
|
20
|
+
# commands do not.
|
|
15
21
|
|
|
22
|
+
from .user_configs.config_options import ConfigInput
|
|
16
23
|
from .util import to_unicode
|
|
17
24
|
|
|
18
25
|
|
|
@@ -65,6 +72,16 @@ class CLIArgs(object):
|
|
|
65
72
|
# keyword in Python, so we call it 'decospecs' in click args
|
|
66
73
|
if k == "decospecs":
|
|
67
74
|
k = "with"
|
|
75
|
+
if k in ("config", "config_value"):
|
|
76
|
+
# Special handling here since we gather them all in one option but actually
|
|
77
|
+
# need to send them one at a time using --config-value <name> kv.<name>.
|
|
78
|
+
# Note it can be either config or config_value depending
|
|
79
|
+
# on click processing order.
|
|
80
|
+
for config_name in v.keys():
|
|
81
|
+
yield "--config-value"
|
|
82
|
+
yield to_unicode(config_name)
|
|
83
|
+
yield to_unicode(ConfigInput.make_key_name(config_name))
|
|
84
|
+
continue
|
|
68
85
|
k = k.replace("_", "-")
|
|
69
86
|
v = v if isinstance(v, (list, tuple, set)) else [v]
|
|
70
87
|
for value in v:
|
|
File without changes
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import pickle
|
|
2
|
+
|
|
3
|
+
from metaflow._vendor import click
|
|
4
|
+
|
|
5
|
+
from ..cli import echo_always, echo_dev_null
|
|
6
|
+
from ..datastore import TaskDataStoreSet
|
|
7
|
+
from ..exception import CommandException
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@click.command(
|
|
11
|
+
help="Get data artifacts of a task or all tasks in a step. "
|
|
12
|
+
"The format for input-path is either <run_id>/<step_name> or "
|
|
13
|
+
"<run_id>/<step_name>/<task_id>."
|
|
14
|
+
)
|
|
15
|
+
@click.argument("input-path")
|
|
16
|
+
@click.option(
|
|
17
|
+
"--private/--no-private",
|
|
18
|
+
default=False,
|
|
19
|
+
show_default=True,
|
|
20
|
+
help="Show also private attributes.",
|
|
21
|
+
)
|
|
22
|
+
@click.option(
|
|
23
|
+
"--max-value-size",
|
|
24
|
+
default=1000,
|
|
25
|
+
show_default=True,
|
|
26
|
+
type=int,
|
|
27
|
+
help="Show only values that are smaller than this number. "
|
|
28
|
+
"Set to 0 to see only keys.",
|
|
29
|
+
)
|
|
30
|
+
@click.option(
|
|
31
|
+
"--include",
|
|
32
|
+
type=str,
|
|
33
|
+
default="",
|
|
34
|
+
help="Include only artifacts in the given comma-separated list.",
|
|
35
|
+
)
|
|
36
|
+
@click.option(
|
|
37
|
+
"--file", type=str, default=None, help="Serialize artifacts in the given file."
|
|
38
|
+
)
|
|
39
|
+
@click.pass_obj
|
|
40
|
+
def dump(obj, input_path, private=None, max_value_size=None, include=None, file=None):
|
|
41
|
+
|
|
42
|
+
if obj.is_quiet:
|
|
43
|
+
echo = echo_dev_null
|
|
44
|
+
else:
|
|
45
|
+
echo = echo_always
|
|
46
|
+
|
|
47
|
+
output = {}
|
|
48
|
+
kwargs = {
|
|
49
|
+
"show_private": private,
|
|
50
|
+
"max_value_size": max_value_size,
|
|
51
|
+
"include": {t for t in include.split(",") if t},
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
# Pathspec can either be run_id/step_name or run_id/step_name/task_id.
|
|
55
|
+
parts = input_path.split("/")
|
|
56
|
+
if len(parts) == 2:
|
|
57
|
+
run_id, step_name = parts
|
|
58
|
+
task_id = None
|
|
59
|
+
elif len(parts) == 3:
|
|
60
|
+
run_id, step_name, task_id = parts
|
|
61
|
+
else:
|
|
62
|
+
raise CommandException(
|
|
63
|
+
"input_path should either be run_id/step_name or run_id/step_name/task_id"
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
datastore_set = TaskDataStoreSet(
|
|
67
|
+
obj.flow_datastore,
|
|
68
|
+
run_id,
|
|
69
|
+
steps=[step_name],
|
|
70
|
+
prefetch_data_artifacts=kwargs.get("include"),
|
|
71
|
+
)
|
|
72
|
+
if task_id:
|
|
73
|
+
ds_list = [datastore_set.get_with_pathspec(input_path)]
|
|
74
|
+
else:
|
|
75
|
+
ds_list = list(datastore_set) # get all tasks
|
|
76
|
+
|
|
77
|
+
for ds in ds_list:
|
|
78
|
+
echo(
|
|
79
|
+
"Dumping output of run_id=*{run_id}* "
|
|
80
|
+
"step=*{step}* task_id=*{task_id}*".format(
|
|
81
|
+
run_id=ds.run_id, step=ds.step_name, task_id=ds.task_id
|
|
82
|
+
),
|
|
83
|
+
fg="magenta",
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
if file is None:
|
|
87
|
+
echo_always(
|
|
88
|
+
ds.format(**kwargs), highlight="green", highlight_bold=False, err=False
|
|
89
|
+
)
|
|
90
|
+
else:
|
|
91
|
+
output[ds.pathspec] = ds.to_dict(**kwargs)
|
|
92
|
+
|
|
93
|
+
if file is not None:
|
|
94
|
+
with open(file, "wb") as f:
|
|
95
|
+
pickle.dump(output, f, protocol=pickle.HIGHEST_PROTOCOL)
|
|
96
|
+
echo("Artifacts written to *%s*" % file)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from metaflow._vendor import click
|
|
2
|
+
|
|
3
|
+
from .. import parameters
|
|
4
|
+
from ..runtime import NativeRuntime
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@parameters.add_custom_parameters(deploy_mode=False)
|
|
8
|
+
@click.command(help="Internal command to initialize a run.", hidden=True)
|
|
9
|
+
@click.option(
|
|
10
|
+
"--run-id",
|
|
11
|
+
default=None,
|
|
12
|
+
required=True,
|
|
13
|
+
help="ID for one execution of all steps in the flow.",
|
|
14
|
+
)
|
|
15
|
+
@click.option(
|
|
16
|
+
"--task-id", default=None, required=True, help="ID for this instance of the step."
|
|
17
|
+
)
|
|
18
|
+
@click.option(
|
|
19
|
+
"--tag",
|
|
20
|
+
"tags",
|
|
21
|
+
multiple=True,
|
|
22
|
+
default=None,
|
|
23
|
+
help="Tags for this instance of the step.",
|
|
24
|
+
)
|
|
25
|
+
@click.pass_obj
|
|
26
|
+
def init(obj, run_id=None, task_id=None, tags=None, **kwargs):
|
|
27
|
+
# init is a separate command instead of an option in 'step'
|
|
28
|
+
# since we need to capture user-specified parameters with
|
|
29
|
+
# @add_custom_parameters. Adding custom parameters to 'step'
|
|
30
|
+
# is not desirable due to the possibility of name clashes between
|
|
31
|
+
# user-specified parameters and our internal options. Note that
|
|
32
|
+
# user-specified parameters are often defined as environment
|
|
33
|
+
# variables.
|
|
34
|
+
|
|
35
|
+
obj.metadata.add_sticky_tags(tags=tags)
|
|
36
|
+
|
|
37
|
+
runtime = NativeRuntime(
|
|
38
|
+
obj.flow,
|
|
39
|
+
obj.graph,
|
|
40
|
+
obj.flow_datastore,
|
|
41
|
+
obj.metadata,
|
|
42
|
+
obj.environment,
|
|
43
|
+
obj.package,
|
|
44
|
+
obj.logger,
|
|
45
|
+
obj.entrypoint,
|
|
46
|
+
obj.event_logger,
|
|
47
|
+
obj.monitor,
|
|
48
|
+
run_id=run_id,
|
|
49
|
+
skip_decorator_hooks=True,
|
|
50
|
+
)
|
|
51
|
+
obj.flow._set_constants(obj.graph, kwargs, obj.config_options)
|
|
52
|
+
runtime.persist_constants(task_id=task_id)
|