ob-metaflow 2.11.0.1__tar.gz → 2.11.10.2__tar.gz
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.
Potentially problematic release.
This version of ob-metaflow might be problematic. Click here for more details.
- {ob-metaflow-2.11.0.1/ob_metaflow.egg-info → ob-metaflow-2.11.10.2}/PKG-INFO +3 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/__init__.py +1 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cli.py +16 -14
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/client/core.py +235 -88
- ob-metaflow-2.11.10.2/metaflow/clone_util.py +71 -0
- ob-metaflow-2.11.10.2/metaflow/cmd/develop/__init__.py +42 -0
- ob-metaflow-2.11.10.2/metaflow/cmd/develop/stub_generator.py +1100 -0
- ob-metaflow-2.11.10.2/metaflow/cmd/develop/stubs.py +359 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd/main_cli.py +5 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/decorators.py +60 -7
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/events.py +14 -9
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/extension_support/plugins.py +1 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/flowspec.py +55 -12
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/includefile.py +6 -6
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metaflow_config.py +34 -2
- ob-metaflow-2.11.0.1/metaflow/current.py → ob-metaflow-2.11.10.2/metaflow/metaflow_current.py +5 -6
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metaflow_environment.py +4 -4
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/multicore_utils.py +59 -3
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/package.py +4 -3
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/parameters.py +24 -14
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/__init__.py +9 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/airflow.py +3 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/sensors/external_task_sensor.py +8 -8
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/sensors/s3_sensor.py +6 -6
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/argo_events.py +2 -2
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/argo_workflows.py +119 -27
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/argo_workflows_decorator.py +1 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/aws_utils.py +15 -15
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/batch/batch.py +14 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/batch/batch_cli.py +25 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/batch/batch_client.py +50 -2
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/batch/batch_decorator.py +48 -17
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/dynamo_db_client.py +28 -6
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/schedule_decorator.py +5 -5
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/step_functions.py +222 -4
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/step_functions_cli.py +104 -6
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/step_functions_client.py +8 -3
- ob-metaflow-2.11.10.2/metaflow/plugins/azure/__init__.py +3 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_cli.py +8 -3
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_client.py +20 -12
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_decorator.py +20 -5
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/card.py +2 -2
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/main.js +17 -17
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/catch_decorator.py +2 -4
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/s3/s3.py +39 -39
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/s3/s3op.py +4 -3
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/client.py +154 -27
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/client_modules.py +15 -47
- ob-metaflow-2.11.10.2/metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py +81 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/configurations/emulate_test_lib/server_mappings.py +8 -3
- ob-metaflow-2.11.10.2/metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py +152 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/consts.py +1 -0
- ob-metaflow-2.11.10.2/metaflow/plugins/env_escape/exception_transferer.py +152 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/override_decorators.py +8 -8
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/server.py +42 -5
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/stub.py +168 -23
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/utils.py +3 -3
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/environment_decorator.py +1 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/events_decorator.py +26 -8
- ob-metaflow-2.11.10.2/metaflow/plugins/gcp/__init__.py +1 -0
- ob-metaflow-2.11.10.2/metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py +164 -0
- ob-metaflow-2.11.10.2/metaflow/plugins/gcp/gs_storage_client_factory.py +72 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/kubernetes/kubernetes.py +53 -6
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/kubernetes/kubernetes_cli.py +43 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/kubernetes/kubernetes_client.py +10 -2
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/kubernetes/kubernetes_decorator.py +110 -24
- ob-metaflow-2.11.10.2/metaflow/plugins/kubernetes/kubernetes_job.py +1130 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/project_decorator.py +44 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/bootstrap.py +1 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/conda_decorator.py +29 -9
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/conda_environment.py +30 -4
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/pip.py +17 -2
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/pypi_decorator.py +2 -2
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/resources_decorator.py +5 -5
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/retry_decorator.py +2 -2
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/tag_cli.py +1 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/timeout_decorator.py +3 -3
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/runtime.py +263 -66
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/sidecar/sidecar.py +11 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/sidecar/sidecar_subprocess.py +34 -18
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/task.py +92 -70
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tracing/span_exporter.py +4 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tracing/tracing_modules.py +7 -2
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/util.py +6 -0
- ob-metaflow-2.11.10.2/metaflow/version.py +1 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2/ob_metaflow.egg-info}/PKG-INFO +3 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/ob_metaflow.egg-info/SOURCES.txt +6 -1
- ob-metaflow-2.11.10.2/ob_metaflow.egg-info/requires.txt +7 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/setup.py +4 -0
- ob-metaflow-2.11.0.1/metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py +0 -92
- ob-metaflow-2.11.0.1/metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py +0 -100
- ob-metaflow-2.11.0.1/metaflow/plugins/env_escape/exception_transferer.py +0 -218
- ob-metaflow-2.11.0.1/metaflow/plugins/gcp/__init__.py +0 -0
- ob-metaflow-2.11.0.1/metaflow/plugins/gcp/gs_storage_client_factory.py +0 -21
- ob-metaflow-2.11.0.1/metaflow/plugins/kubernetes/__init__.py +0 -0
- ob-metaflow-2.11.0.1/metaflow/plugins/kubernetes/kubernetes_job.py +0 -722
- ob-metaflow-2.11.0.1/metaflow/version.py +0 -1
- ob-metaflow-2.11.0.1/ob_metaflow.egg-info/requires.txt +0 -4
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/LICENSE +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/MANIFEST.in +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/README.md +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/R.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_bashcomplete.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_compat.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_termui_impl.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_textwrap.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_unicodefun.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/_winconsole.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/core.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/decorators.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/exceptions.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/formatting.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/globals.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/parser.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/termui.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/testing.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/types.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/click/utils.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_elffile.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_manylinux.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_musllinux.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_parser.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_structures.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/_tokenizer.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/markers.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/py.typed +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/requirements.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/specifiers.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/tags.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/utils.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/packaging/version.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_5/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_5/importlib_metadata/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_5/importlib_metadata/_compat.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_5/zipp.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_adapters.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_collections.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_compat.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_functools.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_itertools.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_meta.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/_text.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/importlib_metadata/py.typed +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/typing_extensions.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_6/zipp.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_7/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/_vendor/v3_7/zipp.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cards.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cli_args.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/client/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/client/filecache.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd/configure_cmd.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd/tutorials_cmd.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd/util.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/cmd_with_io.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/content_addressed_store.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/datastore_set.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/datastore_storage.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/exceptions.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/flow_datastore.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/inputs.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/datastore/task_datastore.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/debug.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/event_logger.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/exception.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/extension_support/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/extension_support/_empty_file.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/extension_support/cmd.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/extension_support/integrations.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/graph.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/integrations.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/lint.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metadata/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metadata/heartbeat.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metadata/metadata.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metadata/util.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metaflow_config_funcs.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metaflow_profile.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/metaflow_version.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/mflog/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/mflog/mflog.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/mflog/save_logs.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/mflog/save_logs_periodically.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/mflog/tee.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/monitor.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/airflow_cli.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/airflow_decorator.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/airflow_utils.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/dag.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/exception.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/plumbing/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/plumbing/set_parameters.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/sensors/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/airflow/sensors/base_sensor.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/argo_client.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/argo_workflows_cli.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/argo/process_input_paths.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/aws_client.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/batch/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/secrets_manager/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/event_bridge_client.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/production_token.py +1 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/set_batch_environment.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/aws/step_functions/step_functions_decorator.py +1 -1
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/azure_credential.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/azure_exceptions.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/azure_tail.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/azure_utils.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/blob_service_client_factory.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/azure/includefile_support.py +0 -0
- {ob-metaflow-2.11.0.1/metaflow/plugins/azure → ob-metaflow-2.11.10.2/metaflow/plugins/cards}/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_creator.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_datastore.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/base.html +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/basic.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/bundle.css +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/chevron/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/chevron/main.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/chevron/metadata.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/chevron/renderer.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/chevron/tokenizer.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/components.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/convert_to_native_type.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/renderer_tools.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_modules/test_cards.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_resolver.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_server.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/card_viewer/viewer.html +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/component_serializer.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/cards/exception.py +0 -0
- {ob-metaflow-2.11.0.1/metaflow/plugins/cards → ob-metaflow-2.11.10.2/metaflow/plugins/datastores}/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datastores/azure_storage.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datastores/gs_storage.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datastores/local_storage.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datastores/s3_storage.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/local.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/s3/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/s3/s3tail.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/datatools/s3/s3util.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/debug_logger.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/debug_monitor.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/communication/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/communication/bytestream.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/communication/channel.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/communication/socket_bytestream.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/communication/utils.py +0 -0
- {ob-metaflow-2.11.0.1/metaflow/plugins/datastores → ob-metaflow-2.11.10.2/metaflow/plugins/env_escape/configurations/emulate_test_lib}/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/configurations/test_lib_impl/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/env_escape/data_transferer.py +0 -0
- {ob-metaflow-2.11.0.1/metaflow/plugins/env_escape/configurations/emulate_test_lib → ob-metaflow-2.11.10.2/metaflow/plugins/frameworks}/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/frameworks/pytorch.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/gcp/gs_exceptions.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/gcp/gs_tail.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/gcp/gs_utils.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/gcp/includefile_support.py +0 -0
- {ob-metaflow-2.11.0.1/metaflow/plugins/frameworks → ob-metaflow-2.11.10.2/metaflow/plugins/kubernetes}/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/metadata/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/metadata/local.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/metadata/service.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/package_cli.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/parallel_decorator.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/micromamba.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/pypi_environment.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/pypi/utils.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/secrets/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/secrets/inline_secrets_provider.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/secrets/secrets_decorator.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/storage_executor.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/plugins/test_unbounded_foreach_decorator.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/procpoll.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/py.typed +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/pylint_wrapper.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/sidecar/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/sidecar/sidecar_messages.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/sidecar/sidecar_worker.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tagging_util.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tracing/__init__.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tracing/propagator.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/00-helloworld/README.md +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/00-helloworld/helloworld.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/01-playlist/README.md +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/01-playlist/movies.csv +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/01-playlist/playlist.ipynb +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/01-playlist/playlist.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/02-statistics/README.md +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/02-statistics/movies.csv +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/02-statistics/stats.ipynb +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/02-statistics/stats.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/03-playlist-redux/README.md +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/03-playlist-redux/playlist.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/04-playlist-plus/README.md +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/04-playlist-plus/playlist.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/05-hello-cloud/README.md +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/05-hello-cloud/hello-cloud.ipynb +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/05-hello-cloud/hello-cloud.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/06-statistics-redux/README.md +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/06-statistics-redux/stats.ipynb +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/07-worldview/README.md +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/07-worldview/worldview.ipynb +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/08-autopilot/README.md +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/tutorials/08-autopilot/autopilot.ipynb +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/unbounded_foreach.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/metaflow/vendor.py +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/ob_metaflow.egg-info/dependency_links.txt +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/ob_metaflow.egg-info/entry_points.txt +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/ob_metaflow.egg-info/top_level.txt +0 -0
- {ob-metaflow-2.11.0.1 → ob-metaflow-2.11.10.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ob-metaflow
|
|
3
|
-
Version: 2.11.
|
|
3
|
+
Version: 2.11.10.2
|
|
4
4
|
Summary: Metaflow: More Data Science, Less Engineering
|
|
5
5
|
Author: Netflix, Outerbounds & the Metaflow Community
|
|
6
6
|
Author-email: help@outerbounds.co
|
|
@@ -11,6 +11,8 @@ Requires-Dist: requests
|
|
|
11
11
|
Requires-Dist: boto3
|
|
12
12
|
Requires-Dist: pylint
|
|
13
13
|
Requires-Dist: kubernetes
|
|
14
|
+
Provides-Extra: stubs
|
|
15
|
+
Requires-Dist: ob-metaflow-stubs==2.11.10.2; extra == "stubs"
|
|
14
16
|
|
|
15
17
|

|
|
16
18
|
|
|
@@ -98,7 +98,7 @@ from .multicore_utils import parallel_imap_unordered, parallel_map
|
|
|
98
98
|
from .metaflow_profile import profile
|
|
99
99
|
|
|
100
100
|
# current runtime singleton
|
|
101
|
-
from .
|
|
101
|
+
from .metaflow_current import current
|
|
102
102
|
|
|
103
103
|
# Flow spec
|
|
104
104
|
from .flowspec import FlowSpec
|
|
@@ -13,7 +13,7 @@ from . import parameters
|
|
|
13
13
|
from . import decorators
|
|
14
14
|
from . import metaflow_version
|
|
15
15
|
from . import namespace
|
|
16
|
-
from . import current
|
|
16
|
+
from .metaflow_current import current
|
|
17
17
|
from .cli_args import cli_args
|
|
18
18
|
from .tagging_util import validate_tags
|
|
19
19
|
from .util import (
|
|
@@ -235,7 +235,6 @@ def output_dot(obj):
|
|
|
235
235
|
)
|
|
236
236
|
@click.pass_obj
|
|
237
237
|
def dump(obj, input_path, private=None, max_value_size=None, include=None, file=None):
|
|
238
|
-
|
|
239
238
|
output = {}
|
|
240
239
|
kwargs = {
|
|
241
240
|
"show_private": private,
|
|
@@ -474,13 +473,6 @@ def logs(obj, input_path, stdout=None, stderr=None, both=None, timestamps=False)
|
|
|
474
473
|
help="Pathspec of the origin task for this task to clone. Do "
|
|
475
474
|
"not execute anything.",
|
|
476
475
|
)
|
|
477
|
-
@click.option(
|
|
478
|
-
"--clone-wait-only/--no-clone-wait-only",
|
|
479
|
-
default=False,
|
|
480
|
-
show_default=True,
|
|
481
|
-
help="If specified, waits for an external process to clone the task",
|
|
482
|
-
hidden=True,
|
|
483
|
-
)
|
|
484
476
|
@click.option(
|
|
485
477
|
"--clone-run-id",
|
|
486
478
|
default=None,
|
|
@@ -520,7 +512,6 @@ def step(
|
|
|
520
512
|
retry_count=None,
|
|
521
513
|
max_user_code_retries=None,
|
|
522
514
|
clone_only=None,
|
|
523
|
-
clone_wait_only=False,
|
|
524
515
|
clone_run_id=None,
|
|
525
516
|
decospecs=None,
|
|
526
517
|
ubf_context="none",
|
|
@@ -576,7 +567,6 @@ def step(
|
|
|
576
567
|
task_id,
|
|
577
568
|
clone_only,
|
|
578
569
|
retry_count,
|
|
579
|
-
wait_only=clone_wait_only,
|
|
580
570
|
)
|
|
581
571
|
else:
|
|
582
572
|
task.run_step(
|
|
@@ -720,6 +710,13 @@ def common_run_options(func):
|
|
|
720
710
|
hidden=True,
|
|
721
711
|
help="If specified, allows this call to be called in parallel",
|
|
722
712
|
)
|
|
713
|
+
@click.option(
|
|
714
|
+
"--resume-identifier",
|
|
715
|
+
default=None,
|
|
716
|
+
show_default=True,
|
|
717
|
+
hidden=True,
|
|
718
|
+
help="If specified, it identifies the task that started this resume call. It is in the form of {step_name}-{task_id}",
|
|
719
|
+
)
|
|
723
720
|
@click.argument("step-to-rerun", required=False)
|
|
724
721
|
@cli.command(help="Resume execution of a previous run of this flow.")
|
|
725
722
|
@common_run_options
|
|
@@ -737,8 +734,8 @@ def resume(
|
|
|
737
734
|
max_log_size=None,
|
|
738
735
|
decospecs=None,
|
|
739
736
|
run_id_file=None,
|
|
737
|
+
resume_identifier=None,
|
|
740
738
|
):
|
|
741
|
-
|
|
742
739
|
before_run(obj, tags, decospecs + obj.environment.decospecs())
|
|
743
740
|
|
|
744
741
|
if origin_run_id is None:
|
|
@@ -791,10 +788,15 @@ def resume(
|
|
|
791
788
|
max_workers=max_workers,
|
|
792
789
|
max_num_splits=max_num_splits,
|
|
793
790
|
max_log_size=max_log_size * 1024 * 1024,
|
|
791
|
+
resume_identifier=resume_identifier,
|
|
794
792
|
)
|
|
795
793
|
write_run_id(run_id_file, runtime.run_id)
|
|
794
|
+
runtime.print_workflow_info()
|
|
796
795
|
runtime.persist_constants()
|
|
797
|
-
|
|
796
|
+
if clone_only:
|
|
797
|
+
runtime.clone_original_run()
|
|
798
|
+
else:
|
|
799
|
+
runtime.execute()
|
|
798
800
|
|
|
799
801
|
|
|
800
802
|
@tracing.cli_entrypoint("cli/run")
|
|
@@ -824,7 +826,6 @@ def run(
|
|
|
824
826
|
user_namespace=None,
|
|
825
827
|
**kwargs
|
|
826
828
|
):
|
|
827
|
-
|
|
828
829
|
if user_namespace is not None:
|
|
829
830
|
namespace(user_namespace or None)
|
|
830
831
|
before_run(obj, tags, decospecs + obj.environment.decospecs())
|
|
@@ -848,6 +849,7 @@ def run(
|
|
|
848
849
|
write_run_id(run_id_file, runtime.run_id)
|
|
849
850
|
|
|
850
851
|
obj.flow._set_constants(obj.graph, kwargs)
|
|
852
|
+
runtime.print_workflow_info()
|
|
851
853
|
runtime.persist_constants()
|
|
852
854
|
runtime.execute()
|
|
853
855
|
|
|
@@ -7,9 +7,19 @@ from collections import namedtuple
|
|
|
7
7
|
from datetime import datetime
|
|
8
8
|
from io import BytesIO
|
|
9
9
|
from itertools import chain
|
|
10
|
-
from typing import
|
|
10
|
+
from typing import (
|
|
11
|
+
Any,
|
|
12
|
+
Dict,
|
|
13
|
+
FrozenSet,
|
|
14
|
+
Iterable,
|
|
15
|
+
Iterator,
|
|
16
|
+
List,
|
|
17
|
+
NamedTuple,
|
|
18
|
+
Optional,
|
|
19
|
+
Tuple,
|
|
20
|
+
)
|
|
11
21
|
|
|
12
|
-
from metaflow.
|
|
22
|
+
from metaflow.metaflow_current import current
|
|
13
23
|
from metaflow.events import Trigger
|
|
14
24
|
from metaflow.exception import (
|
|
15
25
|
MetaflowInternalError,
|
|
@@ -203,6 +213,9 @@ def default_namespace() -> str:
|
|
|
203
213
|
return get_namespace()
|
|
204
214
|
|
|
205
215
|
|
|
216
|
+
MetaflowArtifacts = NamedTuple
|
|
217
|
+
|
|
218
|
+
|
|
206
219
|
class MetaflowObject(object):
|
|
207
220
|
"""
|
|
208
221
|
Base class for all Metaflow objects.
|
|
@@ -337,17 +350,17 @@ class MetaflowObject(object):
|
|
|
337
350
|
raise MetaflowNotFound("%s does not exist" % self)
|
|
338
351
|
return result
|
|
339
352
|
|
|
340
|
-
def __iter__(self) ->
|
|
353
|
+
def __iter__(self) -> Iterator["MetaflowObject"]:
|
|
341
354
|
"""
|
|
342
355
|
Iterate over all child objects of this object if any.
|
|
343
356
|
|
|
344
|
-
Note that only children present in the current namespace are returned
|
|
345
|
-
_namespace_check is set.
|
|
357
|
+
Note that only children present in the current namespace are returned if and
|
|
358
|
+
only if _namespace_check is set.
|
|
346
359
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
360
|
+
Yields
|
|
361
|
+
------
|
|
362
|
+
MetaflowObject
|
|
363
|
+
Children of this object
|
|
351
364
|
"""
|
|
352
365
|
query_filter = {}
|
|
353
366
|
|
|
@@ -703,50 +716,6 @@ class MetaflowObject(object):
|
|
|
703
716
|
return list(self._path_components)
|
|
704
717
|
|
|
705
718
|
|
|
706
|
-
class MetaflowData(object):
|
|
707
|
-
"""
|
|
708
|
-
Container of data artifacts produced by a `Task`. This object is
|
|
709
|
-
instantiated through `Task.data`.
|
|
710
|
-
|
|
711
|
-
`MetaflowData` allows results to be retrieved by their name
|
|
712
|
-
through a convenient dot notation:
|
|
713
|
-
|
|
714
|
-
```python
|
|
715
|
-
Task(...).data.my_object
|
|
716
|
-
```
|
|
717
|
-
|
|
718
|
-
You can also test the existence of an object
|
|
719
|
-
|
|
720
|
-
```python
|
|
721
|
-
if 'my_object' in Task(...).data:
|
|
722
|
-
print('my_object found')
|
|
723
|
-
```
|
|
724
|
-
|
|
725
|
-
Note that this container relies on the local cache to load all data
|
|
726
|
-
artifacts. If your `Task` contains a lot of data, a more efficient
|
|
727
|
-
approach is to load artifacts individually like so
|
|
728
|
-
|
|
729
|
-
```
|
|
730
|
-
Task(...)['my_object'].data
|
|
731
|
-
```
|
|
732
|
-
"""
|
|
733
|
-
|
|
734
|
-
def __init__(self, artifacts: Iterable["DataArtifact"]):
|
|
735
|
-
self._artifacts = dict((art.id, art) for art in artifacts)
|
|
736
|
-
|
|
737
|
-
def __getattr__(self, name: str):
|
|
738
|
-
return self._artifacts[name].data
|
|
739
|
-
|
|
740
|
-
def __contains__(self, var):
|
|
741
|
-
return var in self._artifacts
|
|
742
|
-
|
|
743
|
-
def __str__(self):
|
|
744
|
-
return "<MetaflowData: %s>" % ", ".join(self._artifacts)
|
|
745
|
-
|
|
746
|
-
def __repr__(self):
|
|
747
|
-
return str(self)
|
|
748
|
-
|
|
749
|
-
|
|
750
719
|
class MetaflowCode(object):
|
|
751
720
|
"""
|
|
752
721
|
Snapshot of the code used to execute this `Run`. Instantiate the object through
|
|
@@ -981,6 +950,50 @@ class DataArtifact(MetaflowObject):
|
|
|
981
950
|
super(DataArtifact, self).__setstate__(state)
|
|
982
951
|
|
|
983
952
|
|
|
953
|
+
class MetaflowData(object):
|
|
954
|
+
"""
|
|
955
|
+
Container of data artifacts produced by a `Task`. This object is
|
|
956
|
+
instantiated through `Task.data`.
|
|
957
|
+
|
|
958
|
+
`MetaflowData` allows results to be retrieved by their name
|
|
959
|
+
through a convenient dot notation:
|
|
960
|
+
|
|
961
|
+
```python
|
|
962
|
+
Task(...).data.my_object
|
|
963
|
+
```
|
|
964
|
+
|
|
965
|
+
You can also test the existence of an object
|
|
966
|
+
|
|
967
|
+
```python
|
|
968
|
+
if 'my_object' in Task(...).data:
|
|
969
|
+
print('my_object found')
|
|
970
|
+
```
|
|
971
|
+
|
|
972
|
+
Note that this container relies on the local cache to load all data
|
|
973
|
+
artifacts. If your `Task` contains a lot of data, a more efficient
|
|
974
|
+
approach is to load artifacts individually like so
|
|
975
|
+
|
|
976
|
+
```
|
|
977
|
+
Task(...)['my_object'].data
|
|
978
|
+
```
|
|
979
|
+
"""
|
|
980
|
+
|
|
981
|
+
def __init__(self, artifacts: Iterable[DataArtifact]):
|
|
982
|
+
self._artifacts = dict((art.id, art) for art in artifacts)
|
|
983
|
+
|
|
984
|
+
def __getattr__(self, name: str):
|
|
985
|
+
return self._artifacts[name].data
|
|
986
|
+
|
|
987
|
+
def __contains__(self, var):
|
|
988
|
+
return var in self._artifacts
|
|
989
|
+
|
|
990
|
+
def __str__(self):
|
|
991
|
+
return "<MetaflowData: %s>" % ", ".join(self._artifacts)
|
|
992
|
+
|
|
993
|
+
def __repr__(self):
|
|
994
|
+
return str(self)
|
|
995
|
+
|
|
996
|
+
|
|
984
997
|
class Task(MetaflowObject):
|
|
985
998
|
"""
|
|
986
999
|
A `Task` represents an execution of a `Step`.
|
|
@@ -1172,7 +1185,7 @@ class Task(MetaflowObject):
|
|
|
1172
1185
|
return MetaflowData(self)
|
|
1173
1186
|
|
|
1174
1187
|
@property
|
|
1175
|
-
def artifacts(self) ->
|
|
1188
|
+
def artifacts(self) -> MetaflowArtifacts:
|
|
1176
1189
|
"""
|
|
1177
1190
|
Returns a container of DataArtifacts produced by this task.
|
|
1178
1191
|
|
|
@@ -1438,8 +1451,11 @@ class Task(MetaflowObject):
|
|
|
1438
1451
|
return self._log_size(stream, meta_dict)
|
|
1439
1452
|
|
|
1440
1453
|
def loglines(
|
|
1441
|
-
self,
|
|
1442
|
-
|
|
1454
|
+
self,
|
|
1455
|
+
stream: str,
|
|
1456
|
+
as_unicode: bool = True,
|
|
1457
|
+
meta_dict: Optional[Dict[str, Any]] = None,
|
|
1458
|
+
) -> Iterator[Tuple[datetime, str]]:
|
|
1443
1459
|
"""
|
|
1444
1460
|
Return an iterator over (utc_timestamp, logline) tuples.
|
|
1445
1461
|
|
|
@@ -1451,10 +1467,10 @@ class Task(MetaflowObject):
|
|
|
1451
1467
|
If as_unicode=False, each logline is returned as a byte object. Otherwise,
|
|
1452
1468
|
it is returned as a (unicode) string.
|
|
1453
1469
|
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1470
|
+
Yields
|
|
1471
|
+
------
|
|
1472
|
+
Tuple[datetime, str]
|
|
1473
|
+
Tuple of timestamp, logline pairs.
|
|
1458
1474
|
"""
|
|
1459
1475
|
from metaflow.mflog.mflog import merge_logs
|
|
1460
1476
|
|
|
@@ -1525,6 +1541,39 @@ class Task(MetaflowObject):
|
|
|
1525
1541
|
ds_type, ds_root, stream, attempt, *self.path_components
|
|
1526
1542
|
)
|
|
1527
1543
|
|
|
1544
|
+
def __iter__(self) -> Iterator[DataArtifact]:
|
|
1545
|
+
"""
|
|
1546
|
+
Iterate over all children DataArtifact of this Task
|
|
1547
|
+
|
|
1548
|
+
Yields
|
|
1549
|
+
------
|
|
1550
|
+
DataArtifact
|
|
1551
|
+
A DataArtifact in this Step
|
|
1552
|
+
"""
|
|
1553
|
+
for d in super(Task, self).__iter__():
|
|
1554
|
+
yield d
|
|
1555
|
+
|
|
1556
|
+
def __getitem__(self, name: str) -> DataArtifact:
|
|
1557
|
+
"""
|
|
1558
|
+
Returns the DataArtifact object with the artifact name 'name'
|
|
1559
|
+
|
|
1560
|
+
Parameters
|
|
1561
|
+
----------
|
|
1562
|
+
name : str
|
|
1563
|
+
Data artifact name
|
|
1564
|
+
|
|
1565
|
+
Returns
|
|
1566
|
+
-------
|
|
1567
|
+
DataArtifact
|
|
1568
|
+
DataArtifact for this artifact name in this task
|
|
1569
|
+
|
|
1570
|
+
Raises
|
|
1571
|
+
------
|
|
1572
|
+
KeyError
|
|
1573
|
+
If the name does not identify a valid DataArtifact object
|
|
1574
|
+
"""
|
|
1575
|
+
return super(Task, self).__getitem__(name)
|
|
1576
|
+
|
|
1528
1577
|
def __getstate__(self):
|
|
1529
1578
|
return super(Task, self).__getstate__()
|
|
1530
1579
|
|
|
@@ -1585,10 +1634,10 @@ class Step(MetaflowObject):
|
|
|
1585
1634
|
tags : str
|
|
1586
1635
|
No op (legacy functionality)
|
|
1587
1636
|
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1637
|
+
Yields
|
|
1638
|
+
------
|
|
1639
|
+
Task
|
|
1640
|
+
`Task` objects in this step.
|
|
1592
1641
|
"""
|
|
1593
1642
|
return self._filtered_children(*tags)
|
|
1594
1643
|
|
|
@@ -1607,7 +1656,7 @@ class Step(MetaflowObject):
|
|
|
1607
1656
|
"""
|
|
1608
1657
|
return next(self.control_tasks(), None)
|
|
1609
1658
|
|
|
1610
|
-
def control_tasks(self, *tags: str) ->
|
|
1659
|
+
def control_tasks(self, *tags: str) -> Iterator[Task]:
|
|
1611
1660
|
"""
|
|
1612
1661
|
[Unpublished API - use with caution!]
|
|
1613
1662
|
|
|
@@ -1619,10 +1668,11 @@ class Step(MetaflowObject):
|
|
|
1619
1668
|
----------
|
|
1620
1669
|
tags : str
|
|
1621
1670
|
Tags to match
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1671
|
+
|
|
1672
|
+
Yields
|
|
1673
|
+
------
|
|
1674
|
+
Task
|
|
1675
|
+
Control Task objects for this step
|
|
1626
1676
|
"""
|
|
1627
1677
|
children = super(Step, self).__iter__()
|
|
1628
1678
|
for child in children:
|
|
@@ -1643,11 +1693,39 @@ class Step(MetaflowObject):
|
|
|
1643
1693
|
):
|
|
1644
1694
|
yield child
|
|
1645
1695
|
|
|
1646
|
-
def __iter__(self):
|
|
1647
|
-
|
|
1648
|
-
|
|
1696
|
+
def __iter__(self) -> Iterator[Task]:
|
|
1697
|
+
"""
|
|
1698
|
+
Iterate over all children Task of this Step
|
|
1699
|
+
|
|
1700
|
+
Yields
|
|
1701
|
+
------
|
|
1702
|
+
Task
|
|
1703
|
+
A Task in this Step
|
|
1704
|
+
"""
|
|
1705
|
+
for t in super(Step, self).__iter__():
|
|
1649
1706
|
yield t
|
|
1650
1707
|
|
|
1708
|
+
def __getitem__(self, task_id: str) -> Task:
|
|
1709
|
+
"""
|
|
1710
|
+
Returns the Task object with the task ID 'task_id'
|
|
1711
|
+
|
|
1712
|
+
Parameters
|
|
1713
|
+
----------
|
|
1714
|
+
task_id : str
|
|
1715
|
+
Task ID
|
|
1716
|
+
|
|
1717
|
+
Returns
|
|
1718
|
+
-------
|
|
1719
|
+
Task
|
|
1720
|
+
Task for this task ID in this Step
|
|
1721
|
+
|
|
1722
|
+
Raises
|
|
1723
|
+
------
|
|
1724
|
+
KeyError
|
|
1725
|
+
If the task_id does not identify a valid Task object
|
|
1726
|
+
"""
|
|
1727
|
+
return super(Step, self).__getitem__(task_id)
|
|
1728
|
+
|
|
1651
1729
|
def __getstate__(self):
|
|
1652
1730
|
return super(Step, self).__getstate__()
|
|
1653
1731
|
|
|
@@ -1723,7 +1801,7 @@ class Run(MetaflowObject):
|
|
|
1723
1801
|
# exclude _parameters step
|
|
1724
1802
|
return x.id[0] != "_"
|
|
1725
1803
|
|
|
1726
|
-
def steps(self, *tags: str) ->
|
|
1804
|
+
def steps(self, *tags: str) -> Iterator[Step]:
|
|
1727
1805
|
"""
|
|
1728
1806
|
[Legacy function - do not use]
|
|
1729
1807
|
|
|
@@ -1738,10 +1816,10 @@ class Run(MetaflowObject):
|
|
|
1738
1816
|
tags : str
|
|
1739
1817
|
No op (legacy functionality)
|
|
1740
1818
|
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1819
|
+
Yields
|
|
1820
|
+
------
|
|
1821
|
+
Step
|
|
1822
|
+
`Step` objects in this run.
|
|
1745
1823
|
"""
|
|
1746
1824
|
return self._filtered_children(*tags)
|
|
1747
1825
|
|
|
@@ -1976,6 +2054,39 @@ class Run(MetaflowObject):
|
|
|
1976
2054
|
self._user_tags = frozenset(final_user_tags)
|
|
1977
2055
|
self._tags = frozenset([*self._user_tags, *self._system_tags])
|
|
1978
2056
|
|
|
2057
|
+
def __iter__(self) -> Iterator[Step]:
|
|
2058
|
+
"""
|
|
2059
|
+
Iterate over all children Step of this Run
|
|
2060
|
+
|
|
2061
|
+
Yields
|
|
2062
|
+
------
|
|
2063
|
+
Step
|
|
2064
|
+
A Step in this Run
|
|
2065
|
+
"""
|
|
2066
|
+
for s in super(Run, self).__iter__():
|
|
2067
|
+
yield s
|
|
2068
|
+
|
|
2069
|
+
def __getitem__(self, name: str) -> Step:
|
|
2070
|
+
"""
|
|
2071
|
+
Returns the Step object with the step name 'name'
|
|
2072
|
+
|
|
2073
|
+
Parameters
|
|
2074
|
+
----------
|
|
2075
|
+
name : str
|
|
2076
|
+
Step name
|
|
2077
|
+
|
|
2078
|
+
Returns
|
|
2079
|
+
-------
|
|
2080
|
+
Step
|
|
2081
|
+
Step for this step name in this Run
|
|
2082
|
+
|
|
2083
|
+
Raises
|
|
2084
|
+
------
|
|
2085
|
+
KeyError
|
|
2086
|
+
If the name does not identify a valid Step object
|
|
2087
|
+
"""
|
|
2088
|
+
return super(Run, self).__getitem__(name)
|
|
2089
|
+
|
|
1979
2090
|
def __getstate__(self):
|
|
1980
2091
|
return super(Run, self).__getstate__()
|
|
1981
2092
|
|
|
@@ -2051,7 +2162,7 @@ class Flow(MetaflowObject):
|
|
|
2051
2162
|
if run.successful:
|
|
2052
2163
|
return run
|
|
2053
2164
|
|
|
2054
|
-
def runs(self, *tags: str) ->
|
|
2165
|
+
def runs(self, *tags: str) -> Iterator[Run]:
|
|
2055
2166
|
"""
|
|
2056
2167
|
Returns an iterator over all `Run`s of this flow.
|
|
2057
2168
|
|
|
@@ -2064,12 +2175,48 @@ class Flow(MetaflowObject):
|
|
|
2064
2175
|
tags : str
|
|
2065
2176
|
Tags to match.
|
|
2066
2177
|
|
|
2178
|
+
Yields
|
|
2179
|
+
------
|
|
2180
|
+
Run
|
|
2181
|
+
`Run` objects in this flow.
|
|
2182
|
+
"""
|
|
2183
|
+
return self._filtered_children(*tags)
|
|
2184
|
+
|
|
2185
|
+
def __iter__(self) -> Iterator[Task]:
|
|
2186
|
+
"""
|
|
2187
|
+
Iterate over all children Run of this Flow.
|
|
2188
|
+
|
|
2189
|
+
Note that only runs in the current namespace are returned unless
|
|
2190
|
+
_namespace_check is False
|
|
2191
|
+
|
|
2192
|
+
Yields
|
|
2193
|
+
------
|
|
2194
|
+
Run
|
|
2195
|
+
A Run in this Flow
|
|
2196
|
+
"""
|
|
2197
|
+
for r in super(Flow, self).__iter__():
|
|
2198
|
+
yield r
|
|
2199
|
+
|
|
2200
|
+
def __getitem__(self, run_id: str) -> Run:
|
|
2201
|
+
"""
|
|
2202
|
+
Returns the Run object with the run ID 'run_id'
|
|
2203
|
+
|
|
2204
|
+
Parameters
|
|
2205
|
+
----------
|
|
2206
|
+
run_id : str
|
|
2207
|
+
Run OD
|
|
2208
|
+
|
|
2067
2209
|
Returns
|
|
2068
2210
|
-------
|
|
2069
|
-
|
|
2070
|
-
|
|
2211
|
+
Run
|
|
2212
|
+
Run for this run ID in this Flow
|
|
2213
|
+
|
|
2214
|
+
Raises
|
|
2215
|
+
------
|
|
2216
|
+
KeyError
|
|
2217
|
+
If the run_id does not identify a valid Run object
|
|
2071
2218
|
"""
|
|
2072
|
-
return self.
|
|
2219
|
+
return super(Flow, self).__getitem__(run_id)
|
|
2073
2220
|
|
|
2074
2221
|
def __getstate__(self):
|
|
2075
2222
|
return super(Flow, self).__getstate__()
|
|
@@ -2120,12 +2267,12 @@ class Metaflow(object):
|
|
|
2120
2267
|
"""
|
|
2121
2268
|
return list(self)
|
|
2122
2269
|
|
|
2123
|
-
def __iter__(self):
|
|
2270
|
+
def __iter__(self) -> Iterator[Flow]:
|
|
2124
2271
|
"""
|
|
2125
2272
|
Iterator over all flows present.
|
|
2126
2273
|
|
|
2127
|
-
Only flows present in the set namespace are returned. A flow is present in a
|
|
2128
|
-
it has at least one run that is in the namespace.
|
|
2274
|
+
Only flows present in the set namespace are returned. A flow is present in a
|
|
2275
|
+
namespace if it has at least one run that is in the namespace.
|
|
2129
2276
|
|
|
2130
2277
|
Yields
|
|
2131
2278
|
-------
|
|
@@ -2145,10 +2292,10 @@ class Metaflow(object):
|
|
|
2145
2292
|
except MetaflowNamespaceMismatch:
|
|
2146
2293
|
continue
|
|
2147
2294
|
|
|
2148
|
-
def __str__(self):
|
|
2295
|
+
def __str__(self) -> str:
|
|
2149
2296
|
return "Metaflow()"
|
|
2150
2297
|
|
|
2151
|
-
def __getitem__(self,
|
|
2298
|
+
def __getitem__(self, name: str) -> Flow:
|
|
2152
2299
|
"""
|
|
2153
2300
|
Returns a specific flow by name.
|
|
2154
2301
|
|
|
@@ -2156,13 +2303,13 @@ class Metaflow(object):
|
|
|
2156
2303
|
|
|
2157
2304
|
Parameters
|
|
2158
2305
|
----------
|
|
2159
|
-
|
|
2306
|
+
name : str
|
|
2160
2307
|
Name of the Flow
|
|
2161
2308
|
|
|
2162
2309
|
Returns
|
|
2163
2310
|
-------
|
|
2164
2311
|
Flow
|
|
2165
|
-
Flow with the given
|
|
2312
|
+
Flow with the given name.
|
|
2166
2313
|
"""
|
|
2167
2314
|
return Flow(id)
|
|
2168
2315
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import time
|
|
2
|
+
from .metadata import MetaDatum
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def clone_task_helper(
|
|
6
|
+
flow_name,
|
|
7
|
+
clone_run_id,
|
|
8
|
+
run_id,
|
|
9
|
+
step_name,
|
|
10
|
+
clone_task_id,
|
|
11
|
+
task_id,
|
|
12
|
+
flow_datastore,
|
|
13
|
+
metadata_service,
|
|
14
|
+
origin_ds_set=None,
|
|
15
|
+
attempt_id=0,
|
|
16
|
+
):
|
|
17
|
+
# 1. initialize output datastore
|
|
18
|
+
output = flow_datastore.get_task_datastore(
|
|
19
|
+
run_id, step_name, task_id, attempt=attempt_id, mode="w"
|
|
20
|
+
)
|
|
21
|
+
output.init_task()
|
|
22
|
+
|
|
23
|
+
origin_run_id, origin_step_name, origin_task_id = (
|
|
24
|
+
clone_run_id,
|
|
25
|
+
step_name,
|
|
26
|
+
clone_task_id,
|
|
27
|
+
)
|
|
28
|
+
# 2. initialize origin datastore
|
|
29
|
+
origin = None
|
|
30
|
+
if origin_ds_set:
|
|
31
|
+
origin = origin_ds_set.get_with_pathspec(
|
|
32
|
+
"{}/{}/{}".format(origin_run_id, origin_step_name, origin_task_id)
|
|
33
|
+
)
|
|
34
|
+
else:
|
|
35
|
+
origin = flow_datastore.get_task_datastore(
|
|
36
|
+
origin_run_id, origin_step_name, origin_task_id
|
|
37
|
+
)
|
|
38
|
+
metadata_tags = ["attempt_id:{0}".format(attempt_id)]
|
|
39
|
+
output.clone(origin)
|
|
40
|
+
_ = metadata_service.register_task_id(
|
|
41
|
+
run_id,
|
|
42
|
+
step_name,
|
|
43
|
+
task_id,
|
|
44
|
+
attempt_id,
|
|
45
|
+
)
|
|
46
|
+
metadata_service.register_metadata(
|
|
47
|
+
run_id,
|
|
48
|
+
step_name,
|
|
49
|
+
task_id,
|
|
50
|
+
[
|
|
51
|
+
MetaDatum(
|
|
52
|
+
field="origin-task-id",
|
|
53
|
+
value=str(origin_task_id),
|
|
54
|
+
type="origin-task-id",
|
|
55
|
+
tags=metadata_tags,
|
|
56
|
+
),
|
|
57
|
+
MetaDatum(
|
|
58
|
+
field="origin-run-id",
|
|
59
|
+
value=str(origin_run_id),
|
|
60
|
+
type="origin-run-id",
|
|
61
|
+
tags=metadata_tags,
|
|
62
|
+
),
|
|
63
|
+
MetaDatum(
|
|
64
|
+
field="attempt",
|
|
65
|
+
value=str(attempt_id),
|
|
66
|
+
type="attempt",
|
|
67
|
+
tags=metadata_tags,
|
|
68
|
+
),
|
|
69
|
+
],
|
|
70
|
+
)
|
|
71
|
+
output.done()
|