ob-metaflow 2.13.0.1__tar.gz → 2.13.1.1__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.13.0.1/ob_metaflow.egg-info → ob_metaflow-2.13.1.1}/PKG-INFO +2 -2
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/metadata_provider/heartbeat.py +23 -8
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/metaflow_config.py +2 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/argo_client.py +0 -2
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/argo_workflows.py +86 -104
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/argo_workflows_cli.py +0 -1
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/argo_workflows_decorator.py +2 -4
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/jobset_input_paths.py +0 -1
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/aws_utils.py +6 -1
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/batch/batch_client.py +1 -3
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/batch/batch_decorator.py +11 -11
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/dynamo_db_client.py +0 -3
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/production_token.py +1 -1
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/step_functions.py +1 -1
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/step_functions_cli.py +0 -1
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/step_functions_decorator.py +0 -1
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/step_functions_deployer_objects.py +0 -1
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/kubernetes/kube_utils.py +55 -1
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/kubernetes/kubernetes.py +33 -80
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/kubernetes/kubernetes_cli.py +22 -5
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/kubernetes/kubernetes_decorator.py +49 -2
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/kubernetes/kubernetes_job.py +3 -6
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/kubernetes/kubernetes_jobsets.py +22 -5
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/pypi/bootstrap.py +87 -54
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/pypi/conda_environment.py +7 -6
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/pypi/micromamba.py +35 -21
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/pypi/pip.py +2 -4
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/pypi/utils.py +4 -2
- ob_metaflow-2.13.1.1/metaflow/version.py +1 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1/ob_metaflow.egg-info}/PKG-INFO +2 -2
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/ob_metaflow.egg-info/requires.txt +1 -1
- ob_metaflow-2.13.0.1/metaflow/version.py +0 -1
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/LICENSE +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/MANIFEST.in +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/README.md +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/R.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/_bashcomplete.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/_compat.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/_termui_impl.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/_textwrap.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/_unicodefun.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/_winconsole.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/core.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/decorators.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/exceptions.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/formatting.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/globals.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/parser.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/termui.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/testing.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/types.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/click/utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/importlib_metadata/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/importlib_metadata/_adapters.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/importlib_metadata/_collections.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/importlib_metadata/_compat.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/importlib_metadata/_functools.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/importlib_metadata/_itertools.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/importlib_metadata/_meta.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/importlib_metadata/_text.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/importlib_metadata/py.typed +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/_elffile.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/_manylinux.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/_musllinux.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/_parser.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/_structures.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/_tokenizer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/markers.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/py.typed +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/requirements.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/specifiers.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/tags.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/packaging/version.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_checkers.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_config.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_decorators.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_exceptions.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_functions.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_importhook.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_memo.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_pytest_plugin.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_suppression.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_transformer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_union_transformer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/_utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typeguard/py.typed +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/typing_extensions.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_5/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_5/importlib_metadata/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_5/importlib_metadata/_compat.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_5/zipp.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/importlib_metadata/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/importlib_metadata/_adapters.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/importlib_metadata/_collections.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/importlib_metadata/_compat.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/importlib_metadata/_functools.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/importlib_metadata/_itertools.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/importlib_metadata/_meta.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/importlib_metadata/_text.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/importlib_metadata/py.typed +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/typing_extensions.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/v3_6/zipp.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/_vendor/zipp.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cards.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cli.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cli_args.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cli_components/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cli_components/dump_cmd.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cli_components/init_cmd.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cli_components/run_cmds.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cli_components/step_cmd.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cli_components/utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/client/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/client/core.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/client/filecache.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/clone_util.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cmd/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cmd/configure_cmd.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cmd/develop/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cmd/develop/stub_generator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cmd/develop/stubs.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cmd/main_cli.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cmd/tutorials_cmd.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cmd/util.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/cmd_with_io.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/datastore/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/datastore/content_addressed_store.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/datastore/datastore_set.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/datastore/datastore_storage.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/datastore/exceptions.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/datastore/flow_datastore.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/datastore/inputs.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/datastore/task_datastore.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/debug.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/decorators.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/event_logger.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/events.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/exception.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/extension_support/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/extension_support/_empty_file.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/extension_support/cmd.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/extension_support/integrations.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/extension_support/plugins.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/flowspec.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/graph.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/includefile.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/info_file.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/integrations.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/lint.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/metadata_provider/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/metadata_provider/metadata.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/metadata_provider/util.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/metaflow_config_funcs.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/metaflow_current.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/metaflow_environment.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/metaflow_profile.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/metaflow_version.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/mflog/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/mflog/mflog.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/mflog/save_logs.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/mflog/save_logs_periodically.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/mflog/tee.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/monitor.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/multicore_utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/package.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/parameters.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/airflow.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/airflow_cli.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/airflow_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/airflow_utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/dag.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/exception.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/plumbing/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/plumbing/set_parameters.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/sensors/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/sensors/base_sensor.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/sensors/external_task_sensor.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/airflow/sensors/s3_sensor.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/argo_events.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/argo_workflows_deployer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/argo_workflows_deployer_objects.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/capture_error.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/generate_input_paths.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/aws_client.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/batch/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/batch/batch.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/batch/batch_cli.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/secrets_manager/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/event_bridge_client.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/schedule_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/set_batch_environment.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/step_functions_client.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/step_functions_deployer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/azure/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/azure/azure_credential.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/azure/azure_exceptions.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/azure/azure_secret_manager_secrets_provider.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/azure/azure_tail.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/azure/azure_utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/azure/blob_service_client_factory.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/azure/includefile_support.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_cli.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_client.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_creator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_datastore.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/base.html +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/basic.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/bundle.css +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/card.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/chevron/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/chevron/main.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/chevron/metadata.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/chevron/renderer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/chevron/tokenizer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/components.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/convert_to_native_type.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/main.js +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/renderer_tools.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_modules/test_cards.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_resolver.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_server.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/card_viewer/viewer.html +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/component_serializer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/cards/exception.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/catch_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datastores/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datastores/azure_storage.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datastores/gs_storage.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datastores/local_storage.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datastores/s3_storage.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datatools/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datatools/local.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datatools/s3/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datatools/s3/s3.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datatools/s3/s3op.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datatools/s3/s3tail.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/datatools/s3/s3util.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/debug_logger.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/debug_monitor.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/client.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/client_modules.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/communication/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/communication/bytestream.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/communication/channel.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/communication/socket_bytestream.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/communication/utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/configurations/emulate_test_lib/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/configurations/emulate_test_lib/server_mappings.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/configurations/test_lib_impl/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/consts.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/data_transferer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/exception_transferer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/override_decorators.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/server.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/stub.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/env_escape/utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/environment_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/events_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/frameworks/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/frameworks/pytorch.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/gcp/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/gcp/gs_exceptions.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/gcp/gs_storage_client_factory.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/gcp/gs_tail.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/gcp/gs_utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/gcp/includefile_support.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/kubernetes/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/kubernetes/kubernetes_client.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/logs_cli.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/metadata_providers/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/metadata_providers/local.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/metadata_providers/service.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/package_cli.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/parallel_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/project_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/pypi/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/pypi/conda_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/pypi/pypi_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/pypi/pypi_environment.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/resources_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/retry_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/secrets/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/secrets/inline_secrets_provider.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/secrets/secrets_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/storage_executor.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/tag_cli.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/test_unbounded_foreach_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/timeout_decorator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/procpoll.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/py.typed +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/pylint_wrapper.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/runner/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/runner/click_api.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/runner/deployer.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/runner/deployer_impl.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/runner/metaflow_runner.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/runner/nbdeploy.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/runner/nbrun.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/runner/subprocess_manager.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/runner/utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/runtime.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/sidecar/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/sidecar/sidecar.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/sidecar/sidecar_messages.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/sidecar/sidecar_subprocess.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/sidecar/sidecar_worker.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/system/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/system/system_logger.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/system/system_monitor.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/system/system_utils.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tagging_util.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/task.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tracing/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tracing/propagator.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tracing/span_exporter.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tracing/tracing_modules.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tuple_util.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/00-helloworld/README.md +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/00-helloworld/helloworld.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/01-playlist/README.md +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/01-playlist/movies.csv +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/01-playlist/playlist.ipynb +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/01-playlist/playlist.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/02-statistics/README.md +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/02-statistics/movies.csv +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/02-statistics/stats.ipynb +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/02-statistics/stats.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/03-playlist-redux/README.md +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/03-playlist-redux/playlist.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/04-playlist-plus/README.md +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/04-playlist-plus/playlist.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/05-hello-cloud/README.md +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/05-hello-cloud/hello-cloud.ipynb +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/05-hello-cloud/hello-cloud.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/06-statistics-redux/README.md +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/06-statistics-redux/stats.ipynb +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/07-worldview/README.md +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/07-worldview/worldview.ipynb +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/08-autopilot/README.md +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/tutorials/08-autopilot/autopilot.ipynb +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/unbounded_foreach.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/user_configs/__init__.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/user_configs/config_decorators.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/user_configs/config_options.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/user_configs/config_parameters.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/util.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/vendor.py +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/ob_metaflow.egg-info/SOURCES.txt +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/ob_metaflow.egg-info/dependency_links.txt +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/ob_metaflow.egg-info/entry_points.txt +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/ob_metaflow.egg-info/top_level.txt +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/setup.cfg +0 -0
- {ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ob-metaflow
|
|
3
|
-
Version: 2.13.
|
|
3
|
+
Version: 2.13.1.1
|
|
4
4
|
Summary: Metaflow: More Data Science, Less Engineering
|
|
5
5
|
Author: Netflix, Outerbounds & the Metaflow Community
|
|
6
6
|
Author-email: help@outerbounds.co
|
|
@@ -12,7 +12,7 @@ Requires-Dist: boto3
|
|
|
12
12
|
Requires-Dist: pylint
|
|
13
13
|
Requires-Dist: kubernetes
|
|
14
14
|
Provides-Extra: stubs
|
|
15
|
-
Requires-Dist: metaflow-stubs==2.13.
|
|
15
|
+
Requires-Dist: metaflow-stubs==2.13.1.1; extra == "stubs"
|
|
16
16
|
|
|
17
17
|

|
|
18
18
|
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import json
|
|
1
2
|
import time
|
|
3
|
+
from threading import Thread
|
|
4
|
+
|
|
2
5
|
import requests
|
|
3
|
-
import json
|
|
4
6
|
|
|
5
|
-
from threading import Thread
|
|
6
|
-
from metaflow.sidecar import MessageTypes, Message
|
|
7
|
-
from metaflow.metaflow_config import SERVICE_HEADERS
|
|
8
7
|
from metaflow.exception import MetaflowException
|
|
8
|
+
from metaflow.metaflow_config import SERVICE_HEADERS
|
|
9
|
+
from metaflow.sidecar import Message, MessageTypes
|
|
9
10
|
|
|
10
11
|
HB_URL_KEY = "hb_url"
|
|
11
12
|
|
|
@@ -52,13 +53,27 @@ class MetadataHeartBeat(object):
|
|
|
52
53
|
retry_counter = 0
|
|
53
54
|
except HeartBeatException as e:
|
|
54
55
|
retry_counter = retry_counter + 1
|
|
55
|
-
time.sleep(
|
|
56
|
+
time.sleep(1.5**retry_counter)
|
|
56
57
|
|
|
57
58
|
def _heartbeat(self):
|
|
58
59
|
if self.hb_url is not None:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
try:
|
|
61
|
+
response = requests.post(
|
|
62
|
+
url=self.hb_url, data="{}", headers=self.headers.copy()
|
|
63
|
+
)
|
|
64
|
+
except requests.exceptions.ConnectionError as e:
|
|
65
|
+
raise HeartBeatException(
|
|
66
|
+
"HeartBeat request (%s) failed" " (ConnectionError)" % (self.hb_url)
|
|
67
|
+
)
|
|
68
|
+
except requests.exceptions.Timeout as e:
|
|
69
|
+
raise HeartBeatException(
|
|
70
|
+
"HeartBeat request (%s) failed" " (Timeout)" % (self.hb_url)
|
|
71
|
+
)
|
|
72
|
+
except requests.exceptions.RequestException as e:
|
|
73
|
+
raise HeartBeatException(
|
|
74
|
+
"HeartBeat request (%s) failed"
|
|
75
|
+
" (RequestException) %s" % (self.hb_url, str(e))
|
|
76
|
+
)
|
|
62
77
|
# Unfortunately, response.json() returns a string that we need
|
|
63
78
|
# to cast to json; however when the request encounters an error
|
|
64
79
|
# the return type is a json blob :/
|
|
@@ -356,6 +356,8 @@ KUBERNETES_PERSISTENT_VOLUME_CLAIMS = from_conf(
|
|
|
356
356
|
KUBERNETES_SECRETS = from_conf("KUBERNETES_SECRETS", "")
|
|
357
357
|
# Default labels for kubernetes pods
|
|
358
358
|
KUBERNETES_LABELS = from_conf("KUBERNETES_LABELS", "")
|
|
359
|
+
# Default annotations for kubernetes pods
|
|
360
|
+
KUBERNETES_ANNOTATIONS = from_conf("KUBERNETES_ANNOTATIONS", "")
|
|
359
361
|
# Default GPU vendor to use by K8S jobs created by Metaflow (supports nvidia, amd)
|
|
360
362
|
KUBERNETES_GPU_VENDOR = from_conf("KUBERNETES_GPU_VENDOR", "nvidia")
|
|
361
363
|
# Default container image for K8S
|
|
@@ -7,12 +7,11 @@ import sys
|
|
|
7
7
|
from collections import defaultdict
|
|
8
8
|
from hashlib import sha1
|
|
9
9
|
from math import inf
|
|
10
|
-
from typing import List, Tuple
|
|
11
10
|
|
|
12
11
|
from metaflow import JSONType, current
|
|
13
12
|
from metaflow.decorators import flow_decorators
|
|
14
13
|
from metaflow.exception import MetaflowException
|
|
15
|
-
from metaflow.graph import
|
|
14
|
+
from metaflow.graph import FlowGraph
|
|
16
15
|
from metaflow.includefile import FilePathClass
|
|
17
16
|
from metaflow.metaflow_config import (
|
|
18
17
|
ARGO_EVENTS_EVENT,
|
|
@@ -39,9 +38,7 @@ from metaflow.metaflow_config import (
|
|
|
39
38
|
DEFAULT_SECRETS_BACKEND_TYPE,
|
|
40
39
|
GCP_SECRET_MANAGER_PREFIX,
|
|
41
40
|
KUBERNETES_FETCH_EC2_METADATA,
|
|
42
|
-
KUBERNETES_LABELS,
|
|
43
41
|
KUBERNETES_NAMESPACE,
|
|
44
|
-
KUBERNETES_NODE_SELECTOR,
|
|
45
42
|
KUBERNETES_SANDBOX_INIT_SCRIPT,
|
|
46
43
|
KUBERNETES_SECRETS,
|
|
47
44
|
S3_ENDPOINT_URL,
|
|
@@ -55,10 +52,7 @@ from metaflow.metaflow_config_funcs import config_values, init_config
|
|
|
55
52
|
from metaflow.mflog import BASH_SAVE_LOGS, bash_capture_logs, export_mflog_env_vars
|
|
56
53
|
from metaflow.parameters import deploy_time_eval
|
|
57
54
|
from metaflow.plugins.kubernetes.kube_utils import qos_requests_and_limits
|
|
58
|
-
|
|
59
|
-
parse_kube_keyvalue_list,
|
|
60
|
-
validate_kube_labels,
|
|
61
|
-
)
|
|
55
|
+
|
|
62
56
|
from metaflow.plugins.kubernetes.kubernetes_jobsets import KubernetesArgoJobSet
|
|
63
57
|
from metaflow.unbounded_foreach import UBF_CONTROL, UBF_TASK
|
|
64
58
|
from metaflow.user_configs.config_options import ConfigInput
|
|
@@ -174,7 +168,8 @@ class ArgoWorkflows(object):
|
|
|
174
168
|
self.triggers, self.trigger_options = self._process_triggers()
|
|
175
169
|
self._schedule, self._timezone = self._get_schedule()
|
|
176
170
|
|
|
177
|
-
self.
|
|
171
|
+
self._base_labels = self._base_kubernetes_labels()
|
|
172
|
+
self._base_annotations = self._base_kubernetes_annotations()
|
|
178
173
|
self._workflow_template = self._compile_workflow_template()
|
|
179
174
|
self._sensor = self._compile_sensor()
|
|
180
175
|
|
|
@@ -311,7 +306,7 @@ class ArgoWorkflows(object):
|
|
|
311
306
|
try:
|
|
312
307
|
# Check that the workflow was deployed through Metaflow
|
|
313
308
|
workflow_template["metadata"]["annotations"]["metaflow/owner"]
|
|
314
|
-
except KeyError
|
|
309
|
+
except KeyError:
|
|
315
310
|
raise ArgoWorkflowsException(
|
|
316
311
|
"An existing non-metaflow workflow with the same name as "
|
|
317
312
|
"*%s* already exists in Argo Workflows. \nPlease modify the "
|
|
@@ -325,18 +320,42 @@ class ArgoWorkflows(object):
|
|
|
325
320
|
except Exception as e:
|
|
326
321
|
raise ArgoWorkflowsException(str(e))
|
|
327
322
|
|
|
328
|
-
|
|
329
|
-
def _get_kubernetes_labels():
|
|
323
|
+
def _base_kubernetes_labels(self):
|
|
330
324
|
"""
|
|
331
|
-
Get Kubernetes labels
|
|
332
|
-
Parses the string into a dict and validates that values adhere to Kubernetes restrictions.
|
|
325
|
+
Get shared Kubernetes labels for Argo resources.
|
|
333
326
|
"""
|
|
334
|
-
if
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
327
|
+
# TODO: Add configuration through an environment variable or Metaflow config in the future if required.
|
|
328
|
+
labels = {"app.kubernetes.io/part-of": "metaflow"}
|
|
329
|
+
|
|
330
|
+
return labels
|
|
331
|
+
|
|
332
|
+
def _base_kubernetes_annotations(self):
|
|
333
|
+
"""
|
|
334
|
+
Get shared Kubernetes annotations for Argo resources.
|
|
335
|
+
"""
|
|
336
|
+
from datetime import datetime, timezone
|
|
337
|
+
|
|
338
|
+
# TODO: Add configuration through an environment variable or Metaflow config in the future if required.
|
|
339
|
+
# base annotations
|
|
340
|
+
annotations = {
|
|
341
|
+
"metaflow/production_token": self.production_token,
|
|
342
|
+
"metaflow/owner": self.username,
|
|
343
|
+
"metaflow/user": "argo-workflows",
|
|
344
|
+
"metaflow/flow_name": self.flow.name,
|
|
345
|
+
"metaflow/deployment_timestamp": str(
|
|
346
|
+
datetime.now(timezone.utc).isoformat()
|
|
347
|
+
),
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
if current.get("project_name"):
|
|
351
|
+
annotations.update(
|
|
352
|
+
{
|
|
353
|
+
"metaflow/project_name": current.project_name,
|
|
354
|
+
"metaflow/branch_name": current.branch_name,
|
|
355
|
+
"metaflow/project_flow_name": current.project_flow_name,
|
|
356
|
+
}
|
|
357
|
+
)
|
|
358
|
+
return annotations
|
|
340
359
|
|
|
341
360
|
def _get_schedule(self):
|
|
342
361
|
schedule = self.flow._flow_decorators.get("schedule")
|
|
@@ -412,7 +431,7 @@ class ArgoWorkflows(object):
|
|
|
412
431
|
"metaflow/production_token"
|
|
413
432
|
],
|
|
414
433
|
)
|
|
415
|
-
except KeyError
|
|
434
|
+
except KeyError:
|
|
416
435
|
raise ArgoWorkflowsException(
|
|
417
436
|
"An existing non-metaflow workflow with the same name as "
|
|
418
437
|
"*%s* already exists in Argo Workflows. \nPlease modify the "
|
|
@@ -677,18 +696,7 @@ class ArgoWorkflows(object):
|
|
|
677
696
|
# generate container templates at the top level (in WorkflowSpec) and maintain
|
|
678
697
|
# references to them within the DAGTask.
|
|
679
698
|
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
annotations = {
|
|
683
|
-
"metaflow/production_token": self.production_token,
|
|
684
|
-
"metaflow/owner": self.username,
|
|
685
|
-
"metaflow/user": "argo-workflows",
|
|
686
|
-
"metaflow/flow_name": self.flow.name,
|
|
687
|
-
"metaflow/deployment_timestamp": str(
|
|
688
|
-
datetime.now(timezone.utc).isoformat()
|
|
689
|
-
),
|
|
690
|
-
}
|
|
691
|
-
|
|
699
|
+
annotations = {}
|
|
692
700
|
if self._schedule is not None:
|
|
693
701
|
# timezone is an optional field and json dumps on None will result in null
|
|
694
702
|
# hence configuring it to an empty string
|
|
@@ -700,15 +708,6 @@ class ArgoWorkflows(object):
|
|
|
700
708
|
if self.parameters:
|
|
701
709
|
annotations.update({"metaflow/parameters": json.dumps(self.parameters)})
|
|
702
710
|
|
|
703
|
-
if current.get("project_name"):
|
|
704
|
-
annotations.update(
|
|
705
|
-
{
|
|
706
|
-
"metaflow/project_name": current.project_name,
|
|
707
|
-
"metaflow/branch_name": current.branch_name,
|
|
708
|
-
"metaflow/project_flow_name": current.project_flow_name,
|
|
709
|
-
}
|
|
710
|
-
)
|
|
711
|
-
|
|
712
711
|
# Some more annotations to populate the Argo UI nicely
|
|
713
712
|
if self.tags:
|
|
714
713
|
annotations.update({"metaflow/tags": json.dumps(self.tags)})
|
|
@@ -756,9 +755,10 @@ class ArgoWorkflows(object):
|
|
|
756
755
|
# is released, we should be able to support multi-namespace /
|
|
757
756
|
# multi-cluster scheduling.
|
|
758
757
|
.namespace(KUBERNETES_NAMESPACE)
|
|
759
|
-
.label("app.kubernetes.io/name", "metaflow-flow")
|
|
760
|
-
.label("app.kubernetes.io/part-of", "metaflow")
|
|
761
758
|
.annotations(annotations)
|
|
759
|
+
.annotations(self._base_annotations)
|
|
760
|
+
.labels(self._base_labels)
|
|
761
|
+
.label("app.kubernetes.io/name", "metaflow-flow")
|
|
762
762
|
)
|
|
763
763
|
.spec(
|
|
764
764
|
WorkflowSpec()
|
|
@@ -788,10 +788,14 @@ class ArgoWorkflows(object):
|
|
|
788
788
|
# Set workflow metadata
|
|
789
789
|
.workflow_metadata(
|
|
790
790
|
Metadata()
|
|
791
|
+
.labels(self._base_labels)
|
|
791
792
|
.label("app.kubernetes.io/name", "metaflow-run")
|
|
792
|
-
.label("app.kubernetes.io/part-of", "metaflow")
|
|
793
793
|
.annotations(
|
|
794
|
-
{
|
|
794
|
+
{
|
|
795
|
+
**annotations,
|
|
796
|
+
**self._base_annotations,
|
|
797
|
+
**{"metaflow/run_id": "argo-{{workflow.name}}"},
|
|
798
|
+
}
|
|
795
799
|
)
|
|
796
800
|
# TODO: Set dynamic labels using labels_from. Ideally, we would
|
|
797
801
|
# want to expose run_id as a label. It's easy to add labels,
|
|
@@ -824,10 +828,10 @@ class ArgoWorkflows(object):
|
|
|
824
828
|
# Set common pod metadata.
|
|
825
829
|
.pod_metadata(
|
|
826
830
|
Metadata()
|
|
831
|
+
.labels(self._base_labels)
|
|
827
832
|
.label("app.kubernetes.io/name", "metaflow-task")
|
|
828
|
-
.label("app.kubernetes.io/part-of", "metaflow")
|
|
829
833
|
.annotations(annotations)
|
|
830
|
-
.
|
|
834
|
+
.annotations(self._base_annotations)
|
|
831
835
|
)
|
|
832
836
|
# Set the entrypoint to flow name
|
|
833
837
|
.entrypoint(self.flow.name)
|
|
@@ -1911,15 +1915,7 @@ class ArgoWorkflows(object):
|
|
|
1911
1915
|
# twice, but due to issues with variable substitution, we will have to
|
|
1912
1916
|
# live with this routine.
|
|
1913
1917
|
if node.parallel_step:
|
|
1914
|
-
# Explicitly add the task-id-hint label. This is important because this label
|
|
1915
|
-
# is returned as an Output parameter of this step and is used subsequently as an
|
|
1916
|
-
# an input in the join step.
|
|
1917
|
-
kubernetes_labels = self.kubernetes_labels.copy()
|
|
1918
1918
|
jobset_name = "{{inputs.parameters.jobset-name}}"
|
|
1919
|
-
kubernetes_labels["task_id_entropy"] = (
|
|
1920
|
-
"{{inputs.parameters.task-id-entropy}}"
|
|
1921
|
-
)
|
|
1922
|
-
kubernetes_labels["num_parallel"] = "{{inputs.parameters.num-parallel}}"
|
|
1923
1919
|
jobset = KubernetesArgoJobSet(
|
|
1924
1920
|
kubernetes_sdk=kubernetes_sdk,
|
|
1925
1921
|
name=jobset_name,
|
|
@@ -1975,8 +1971,22 @@ class ArgoWorkflows(object):
|
|
|
1975
1971
|
for k, v in env.items():
|
|
1976
1972
|
jobset.environment_variable(k, v)
|
|
1977
1973
|
|
|
1978
|
-
|
|
1979
|
-
|
|
1974
|
+
# Set labels. Do not allow user-specified task labels to override internal ones.
|
|
1975
|
+
#
|
|
1976
|
+
# Explicitly add the task-id-hint label. This is important because this label
|
|
1977
|
+
# is returned as an Output parameter of this step and is used subsequently as an
|
|
1978
|
+
# an input in the join step.
|
|
1979
|
+
kubernetes_labels = {
|
|
1980
|
+
"task_id_entropy": "{{inputs.parameters.task-id-entropy}}",
|
|
1981
|
+
"num_parallel": "{{inputs.parameters.num-parallel}}",
|
|
1982
|
+
}
|
|
1983
|
+
jobset.labels(
|
|
1984
|
+
{
|
|
1985
|
+
**resources["labels"],
|
|
1986
|
+
**self._base_labels,
|
|
1987
|
+
**kubernetes_labels,
|
|
1988
|
+
}
|
|
1989
|
+
)
|
|
1980
1990
|
|
|
1981
1991
|
jobset.environment_variable(
|
|
1982
1992
|
"MF_MASTER_ADDR", jobset.jobset_control_addr
|
|
@@ -2005,27 +2015,23 @@ class ArgoWorkflows(object):
|
|
|
2005
2015
|
"TASK_ID_SUFFIX": "metadata.annotations['jobset.sigs.k8s.io/job-index']",
|
|
2006
2016
|
}
|
|
2007
2017
|
)
|
|
2018
|
+
|
|
2019
|
+
# Set annotations. Do not allow user-specified task-specific annotations to override internal ones.
|
|
2008
2020
|
annotations = {
|
|
2009
2021
|
# setting annotations explicitly as they wont be
|
|
2010
2022
|
# passed down from WorkflowTemplate level
|
|
2011
2023
|
"metaflow/step_name": node.name,
|
|
2012
2024
|
"metaflow/attempt": str(retry_count),
|
|
2013
2025
|
"metaflow/run_id": run_id,
|
|
2014
|
-
"metaflow/production_token": self.production_token,
|
|
2015
|
-
"metaflow/owner": self.username,
|
|
2016
|
-
"metaflow/user": "argo-workflows",
|
|
2017
|
-
"metaflow/flow_name": self.flow.name,
|
|
2018
2026
|
}
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
for k, v in annotations.items():
|
|
2028
|
-
jobset.annotation(k, v)
|
|
2027
|
+
|
|
2028
|
+
jobset.annotations(
|
|
2029
|
+
{
|
|
2030
|
+
**resources["annotations"],
|
|
2031
|
+
**self._base_annotations,
|
|
2032
|
+
**annotations,
|
|
2033
|
+
}
|
|
2034
|
+
)
|
|
2029
2035
|
|
|
2030
2036
|
jobset.control.replicas(1)
|
|
2031
2037
|
jobset.worker.replicas("{{=asInt(inputs.parameters.workerCount)}}")
|
|
@@ -2082,13 +2088,16 @@ class ArgoWorkflows(object):
|
|
|
2082
2088
|
minutes_between_retries=minutes_between_retries,
|
|
2083
2089
|
)
|
|
2084
2090
|
.metadata(
|
|
2085
|
-
ObjectMeta()
|
|
2091
|
+
ObjectMeta()
|
|
2092
|
+
.annotation("metaflow/step_name", node.name)
|
|
2086
2093
|
# Unfortunately, we can't set the task_id since it is generated
|
|
2087
2094
|
# inside the pod. However, it can be inferred from the annotation
|
|
2088
2095
|
# set by argo-workflows - `workflows.argoproj.io/outputs` - refer
|
|
2089
2096
|
# the field 'task-id' in 'parameters'
|
|
2090
2097
|
# .annotation("metaflow/task_id", ...)
|
|
2091
2098
|
.annotation("metaflow/attempt", retry_count)
|
|
2099
|
+
.annotations(resources["annotations"])
|
|
2100
|
+
.labels(resources["labels"])
|
|
2092
2101
|
)
|
|
2093
2102
|
# Set emptyDir volume for state management
|
|
2094
2103
|
.empty_dir_volume("out")
|
|
@@ -2871,33 +2880,6 @@ class ArgoWorkflows(object):
|
|
|
2871
2880
|
"sdk (https://pypi.org/project/kubernetes/) first."
|
|
2872
2881
|
)
|
|
2873
2882
|
|
|
2874
|
-
labels = {"app.kubernetes.io/part-of": "metaflow"}
|
|
2875
|
-
|
|
2876
|
-
annotations = {
|
|
2877
|
-
"metaflow/production_token": self.production_token,
|
|
2878
|
-
"metaflow/owner": self.username,
|
|
2879
|
-
"metaflow/user": "argo-workflows",
|
|
2880
|
-
"metaflow/flow_name": self.flow.name,
|
|
2881
|
-
}
|
|
2882
|
-
if current.get("project_name"):
|
|
2883
|
-
annotations.update(
|
|
2884
|
-
{
|
|
2885
|
-
"metaflow/project_name": current.project_name,
|
|
2886
|
-
"metaflow/branch_name": current.branch_name,
|
|
2887
|
-
"metaflow/project_flow_name": current.project_flow_name,
|
|
2888
|
-
}
|
|
2889
|
-
)
|
|
2890
|
-
|
|
2891
|
-
# Useful to paint the UI
|
|
2892
|
-
trigger_annotations = {
|
|
2893
|
-
"metaflow/triggered_by": json.dumps(
|
|
2894
|
-
[
|
|
2895
|
-
{key: trigger.get(key) for key in ["name", "type"]}
|
|
2896
|
-
for trigger in self.triggers
|
|
2897
|
-
]
|
|
2898
|
-
)
|
|
2899
|
-
}
|
|
2900
|
-
|
|
2901
2883
|
return (
|
|
2902
2884
|
Sensor()
|
|
2903
2885
|
.metadata(
|
|
@@ -2905,10 +2887,9 @@ class ArgoWorkflows(object):
|
|
|
2905
2887
|
ObjectMeta()
|
|
2906
2888
|
.name(ArgoWorkflows._sensor_name(self.name))
|
|
2907
2889
|
.namespace(KUBERNETES_NAMESPACE)
|
|
2890
|
+
.labels(self._base_labels)
|
|
2908
2891
|
.label("app.kubernetes.io/name", "metaflow-sensor")
|
|
2909
|
-
.
|
|
2910
|
-
.labels(self.kubernetes_labels)
|
|
2911
|
-
.annotations(annotations)
|
|
2892
|
+
.annotations(self._base_annotations)
|
|
2912
2893
|
)
|
|
2913
2894
|
.spec(
|
|
2914
2895
|
SensorSpec().template(
|
|
@@ -2918,7 +2899,7 @@ class ArgoWorkflows(object):
|
|
|
2918
2899
|
ObjectMeta()
|
|
2919
2900
|
.label("app.kubernetes.io/name", "metaflow-sensor")
|
|
2920
2901
|
.label("app.kubernetes.io/part-of", "metaflow")
|
|
2921
|
-
.annotations(
|
|
2902
|
+
.annotations(self._base_annotations)
|
|
2922
2903
|
)
|
|
2923
2904
|
.container(
|
|
2924
2905
|
# Run sensor in guaranteed QoS. The sensor isn't doing a lot
|
|
@@ -2965,6 +2946,7 @@ class ArgoWorkflows(object):
|
|
|
2965
2946
|
"metadata": {
|
|
2966
2947
|
"generateName": "%s-" % self.name,
|
|
2967
2948
|
"namespace": KUBERNETES_NAMESPACE,
|
|
2949
|
+
# Useful to paint the UI
|
|
2968
2950
|
"annotations": {
|
|
2969
2951
|
"metaflow/triggered_by": json.dumps(
|
|
2970
2952
|
[
|
{ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/argo/argo_workflows_decorator.py
RENAMED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import os
|
|
3
|
-
import time
|
|
4
3
|
|
|
5
4
|
|
|
6
5
|
from metaflow import current
|
|
7
6
|
from metaflow.decorators import StepDecorator
|
|
8
7
|
from metaflow.events import Trigger
|
|
9
8
|
from metaflow.metadata_provider import MetaDatum
|
|
10
|
-
from metaflow.
|
|
11
|
-
from metaflow.graph import DAGNode, FlowGraph
|
|
9
|
+
from metaflow.graph import FlowGraph
|
|
12
10
|
from metaflow.flowspec import FlowSpec
|
|
13
11
|
from .argo_events import ArgoEvent
|
|
14
12
|
|
|
@@ -42,7 +40,7 @@ class ArgoWorkflowsInternalDecorator(StepDecorator):
|
|
|
42
40
|
if payload != "null": # Argo-Workflow's None
|
|
43
41
|
try:
|
|
44
42
|
payload = json.loads(payload)
|
|
45
|
-
except (TypeError, ValueError)
|
|
43
|
+
except (TypeError, ValueError):
|
|
46
44
|
# There could be arbitrary events that Metaflow doesn't know of
|
|
47
45
|
payload = {}
|
|
48
46
|
triggers.append(
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import re
|
|
2
|
-
import requests
|
|
3
2
|
|
|
4
3
|
from metaflow.exception import MetaflowException
|
|
5
4
|
from metaflow.metaflow_config import MAX_MEMORY_PER_TASK, MAX_CPU_PER_TASK
|
|
@@ -31,6 +30,10 @@ def get_ec2_instance_metadata():
|
|
|
31
30
|
- ec2-region
|
|
32
31
|
- ec2-availability-zone
|
|
33
32
|
"""
|
|
33
|
+
|
|
34
|
+
# TODO: Remove dependency on requests
|
|
35
|
+
import requests
|
|
36
|
+
|
|
34
37
|
meta = {}
|
|
35
38
|
# Capture AWS instance identity metadata. This is best-effort only since
|
|
36
39
|
# access to this end-point might be blocked on AWS and not available
|
|
@@ -160,6 +163,8 @@ def compute_resource_attributes(decos, compute_deco, step_name, resource_default
|
|
|
160
163
|
# Here we don't have ints, so we compare the value and raise
|
|
161
164
|
# an exception if not equal
|
|
162
165
|
if my_val != v:
|
|
166
|
+
# TODO: Throw a better exception since the user has no
|
|
167
|
+
# knowledge of 'compute' decorator
|
|
163
168
|
raise MetaflowException(
|
|
164
169
|
"'resources' and compute decorator have conflicting "
|
|
165
170
|
"values for '%s'. Please use consistent values or "
|
|
@@ -1,34 +1,30 @@
|
|
|
1
1
|
import os
|
|
2
|
-
import sys
|
|
3
2
|
import platform
|
|
4
|
-
import
|
|
3
|
+
import sys
|
|
5
4
|
import time
|
|
6
5
|
|
|
7
|
-
from metaflow import util
|
|
8
6
|
from metaflow import R, current
|
|
9
|
-
|
|
10
7
|
from metaflow.decorators import StepDecorator
|
|
11
|
-
from metaflow.plugins.resources_decorator import ResourcesDecorator
|
|
12
|
-
from metaflow.plugins.timeout_decorator import get_run_time_limit_for_task
|
|
13
8
|
from metaflow.metadata_provider import MetaDatum
|
|
14
9
|
from metaflow.metadata_provider.util import sync_local_metadata_to_datastore
|
|
15
10
|
from metaflow.metaflow_config import (
|
|
16
|
-
ECS_S3_ACCESS_IAM_ROLE,
|
|
17
|
-
BATCH_JOB_QUEUE,
|
|
18
11
|
BATCH_CONTAINER_IMAGE,
|
|
19
12
|
BATCH_CONTAINER_REGISTRY,
|
|
20
|
-
|
|
13
|
+
BATCH_JOB_QUEUE,
|
|
21
14
|
DATASTORE_LOCAL_DIR,
|
|
15
|
+
ECS_FARGATE_EXECUTION_ROLE,
|
|
16
|
+
ECS_S3_ACCESS_IAM_ROLE,
|
|
22
17
|
)
|
|
18
|
+
from metaflow.plugins.timeout_decorator import get_run_time_limit_for_task
|
|
23
19
|
from metaflow.sidecar import Sidecar
|
|
24
20
|
from metaflow.unbounded_foreach import UBF_CONTROL
|
|
25
21
|
|
|
26
|
-
from .batch import BatchException
|
|
27
22
|
from ..aws_utils import (
|
|
28
23
|
compute_resource_attributes,
|
|
29
24
|
get_docker_registry,
|
|
30
25
|
get_ec2_instance_metadata,
|
|
31
26
|
)
|
|
27
|
+
from .batch import BatchException
|
|
32
28
|
|
|
33
29
|
|
|
34
30
|
class BatchDecorator(StepDecorator):
|
|
@@ -280,6 +276,10 @@ class BatchDecorator(StepDecorator):
|
|
|
280
276
|
# Metaflow would be running the container agent compatible with
|
|
281
277
|
# version V4.
|
|
282
278
|
# https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint.html
|
|
279
|
+
|
|
280
|
+
# TODO: Remove dependency on requests
|
|
281
|
+
import requests
|
|
282
|
+
|
|
283
283
|
try:
|
|
284
284
|
logs_meta = (
|
|
285
285
|
requests.get(url=os.environ["ECS_CONTAINER_METADATA_URI_V4"])
|
|
@@ -386,7 +386,7 @@ class BatchDecorator(StepDecorator):
|
|
|
386
386
|
len(flow._control_mapper_tasks),
|
|
387
387
|
)
|
|
388
388
|
)
|
|
389
|
-
except Exception
|
|
389
|
+
except Exception:
|
|
390
390
|
pass
|
|
391
391
|
raise Exception(
|
|
392
392
|
"Batch secondary workers did not finish in %s seconds" % TIMEOUT
|
{ob_metaflow-2.13.0.1 → ob_metaflow-2.13.1.1}/metaflow/plugins/aws/step_functions/step_functions.py
RENAMED
|
@@ -236,7 +236,7 @@ class StepFunctions(object):
|
|
|
236
236
|
return parameters.get("metaflow.owner"), parameters.get(
|
|
237
237
|
"metaflow.production_token"
|
|
238
238
|
)
|
|
239
|
-
except KeyError
|
|
239
|
+
except KeyError:
|
|
240
240
|
raise StepFunctionsException(
|
|
241
241
|
"An existing non-metaflow "
|
|
242
242
|
"workflow with the same name as "
|
|
@@ -4,7 +4,6 @@ import re
|
|
|
4
4
|
from hashlib import sha1
|
|
5
5
|
|
|
6
6
|
from metaflow import JSONType, current, decorators, parameters
|
|
7
|
-
from metaflow.client.core import get_metadata
|
|
8
7
|
from metaflow._vendor import click
|
|
9
8
|
from metaflow.exception import MetaflowException, MetaflowInternalError
|
|
10
9
|
from metaflow.metaflow_config import (
|