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

|
32
32
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import inspect
|
2
|
+
import os
|
2
3
|
import sys
|
3
4
|
import traceback
|
4
5
|
from datetime import datetime
|
@@ -9,11 +10,11 @@ from metaflow._vendor import click
|
|
9
10
|
|
10
11
|
from . import decorators, lint, metaflow_version, namespace, parameters, plugins
|
11
12
|
from .cli_args import cli_args
|
12
|
-
from .client.core import get_metadata
|
13
13
|
from .datastore import FlowDataStore, TaskDataStore, TaskDataStoreSet
|
14
14
|
from .exception import CommandException, MetaflowException
|
15
15
|
from .graph import FlowGraph
|
16
16
|
from .metaflow_config import (
|
17
|
+
DECOSPECS,
|
17
18
|
DEFAULT_DATASTORE,
|
18
19
|
DEFAULT_ENVIRONMENT,
|
19
20
|
DEFAULT_EVENT_LOGGER,
|
@@ -118,6 +119,26 @@ def logger(body="", system_msg=False, head="", bad=False, timestamp=True, nl=Tru
|
|
118
119
|
click.secho(body, bold=system_msg, fg=LOGGER_BAD_COLOR if bad else None, nl=nl)
|
119
120
|
|
120
121
|
|
122
|
+
def config_merge_cb(ctx, param, value):
|
123
|
+
# Callback to:
|
124
|
+
# - read the Click auto_envvar variable from both the
|
125
|
+
# environment AND the configuration
|
126
|
+
# - merge that value with the value passed in the command line (value)
|
127
|
+
# - return the value as a tuple
|
128
|
+
# Note that this function gets called even if there is no option passed on the
|
129
|
+
# command line.
|
130
|
+
# NOTE: Assumes that ctx.auto_envvar_prefix is set to METAFLOW (same as in
|
131
|
+
# from_conf)
|
132
|
+
|
133
|
+
# Special case where DECOSPECS and value are the same. This happens
|
134
|
+
# when there is no --with option at the TL and DECOSPECS is read from
|
135
|
+
# the env var. In this case, click also passes it as value
|
136
|
+
splits = DECOSPECS.split()
|
137
|
+
if len(splits) == len(value) and all([a == b for (a, b) in zip(splits, value)]):
|
138
|
+
return value
|
139
|
+
return tuple(list(value) + DECOSPECS.split())
|
140
|
+
|
141
|
+
|
121
142
|
@click.group()
|
122
143
|
def cli(ctx):
|
123
144
|
pass
|
@@ -618,7 +639,7 @@ def resume(
|
|
618
639
|
resume_identifier=None,
|
619
640
|
runner_attribute_file=None,
|
620
641
|
):
|
621
|
-
before_run(obj, tags, decospecs
|
642
|
+
before_run(obj, tags, decospecs)
|
622
643
|
|
623
644
|
if origin_run_id is None:
|
624
645
|
origin_run_id = get_latest_run_id(obj.echo, obj.flow.name)
|
@@ -678,7 +699,12 @@ def resume(
|
|
678
699
|
runtime.persist_constants()
|
679
700
|
write_file(
|
680
701
|
runner_attribute_file,
|
681
|
-
"%s:%s"
|
702
|
+
"%s@%s:%s"
|
703
|
+
% (
|
704
|
+
obj.metadata.__class__.TYPE,
|
705
|
+
obj.metadata.__class__.INFO,
|
706
|
+
"/".join((obj.flow.name, runtime.run_id)),
|
707
|
+
),
|
682
708
|
)
|
683
709
|
if clone_only:
|
684
710
|
runtime.clone_original_run()
|
@@ -716,7 +742,7 @@ def run(
|
|
716
742
|
):
|
717
743
|
if user_namespace is not None:
|
718
744
|
namespace(user_namespace or None)
|
719
|
-
before_run(obj, tags, decospecs
|
745
|
+
before_run(obj, tags, decospecs)
|
720
746
|
|
721
747
|
runtime = NativeRuntime(
|
722
748
|
obj.flow,
|
@@ -741,7 +767,12 @@ def run(
|
|
741
767
|
runtime.persist_constants()
|
742
768
|
write_file(
|
743
769
|
runner_attribute_file,
|
744
|
-
"%s:%s"
|
770
|
+
"%s@%s:%s"
|
771
|
+
% (
|
772
|
+
obj.metadata.__class__.TYPE,
|
773
|
+
obj.metadata.__class__.INFO,
|
774
|
+
"/".join((obj.flow.name, runtime.run_id)),
|
775
|
+
),
|
745
776
|
)
|
746
777
|
runtime.execute()
|
747
778
|
|
@@ -764,9 +795,20 @@ def before_run(obj, tags, decospecs):
|
|
764
795
|
# A downside is that we need to have the following decorators handling
|
765
796
|
# in two places in this module and make sure _init_step_decorators
|
766
797
|
# doesn't get called twice.
|
767
|
-
|
768
|
-
|
798
|
+
|
799
|
+
# We want the order to be the following:
|
800
|
+
# - run level decospecs
|
801
|
+
# - top level decospecs
|
802
|
+
# - environment decospecs
|
803
|
+
all_decospecs = (
|
804
|
+
list(decospecs or [])
|
805
|
+
+ obj.tl_decospecs
|
806
|
+
+ list(obj.environment.decospecs() or [])
|
807
|
+
)
|
808
|
+
if all_decospecs:
|
809
|
+
decorators._attach_decorators(obj.flow, all_decospecs)
|
769
810
|
obj.graph = FlowGraph(obj.flow.__class__)
|
811
|
+
|
770
812
|
obj.check(obj.graph, obj.flow, obj.environment, pylint=obj.pylint)
|
771
813
|
# obj.environment.init_environment(obj.logger)
|
772
814
|
|
@@ -837,6 +879,7 @@ def version(obj):
|
|
837
879
|
multiple=True,
|
838
880
|
help="Add a decorator to all steps. You can specify this option "
|
839
881
|
"multiple times to attach multiple decorators in steps.",
|
882
|
+
callback=config_merge_cb,
|
840
883
|
)
|
841
884
|
@click.option(
|
842
885
|
"--pylint/--no-pylint",
|
@@ -955,8 +998,11 @@ def start(
|
|
955
998
|
deco_options,
|
956
999
|
)
|
957
1000
|
|
958
|
-
|
959
|
-
|
1001
|
+
# In the case of run/resume, we will want to apply the TL decospecs
|
1002
|
+
# *after* the run decospecs so that they don't take precedence. In other
|
1003
|
+
# words, for the same decorator, we want `myflow.py run --with foo` to
|
1004
|
+
# take precedence over any other `foo` decospec
|
1005
|
+
ctx.obj.tl_decospecs = list(decospecs or [])
|
960
1006
|
|
961
1007
|
# initialize current and parameter context for deploy-time parameters
|
962
1008
|
current._set_env(flow=ctx.obj.flow, is_running=False)
|
@@ -967,7 +1013,14 @@ def start(
|
|
967
1013
|
if ctx.invoked_subcommand not in ("run", "resume"):
|
968
1014
|
# run/resume are special cases because they can add more decorators with --with,
|
969
1015
|
# so they have to take care of themselves.
|
970
|
-
|
1016
|
+
all_decospecs = ctx.obj.tl_decospecs + list(
|
1017
|
+
ctx.obj.environment.decospecs() or []
|
1018
|
+
)
|
1019
|
+
if all_decospecs:
|
1020
|
+
decorators._attach_decorators(ctx.obj.flow, all_decospecs)
|
1021
|
+
# Regenerate graph if we attached more decorators
|
1022
|
+
ctx.obj.graph = FlowGraph(ctx.obj.flow.__class__)
|
1023
|
+
|
971
1024
|
decorators._init_step_decorators(
|
972
1025
|
ctx.obj.flow,
|
973
1026
|
ctx.obj.graph,
|
@@ -975,6 +1028,7 @@ def start(
|
|
975
1028
|
ctx.obj.flow_datastore,
|
976
1029
|
ctx.obj.logger,
|
977
1030
|
)
|
1031
|
+
|
978
1032
|
# TODO (savin): Enable lazy instantiation of package
|
979
1033
|
ctx.obj.package = None
|
980
1034
|
if ctx.invoked_subcommand is None:
|
@@ -158,13 +158,14 @@ class Decorator(object):
|
|
158
158
|
attr_list.append("%s=%s" % (k, str(v)))
|
159
159
|
else:
|
160
160
|
attr_list.append("%s=%s" % (k, json.dumps(v).replace('"', '\\"')))
|
161
|
+
|
161
162
|
attrstr = ",".join(attr_list)
|
162
163
|
return "%s:%s" % (self.name, attrstr)
|
163
164
|
else:
|
164
165
|
return self.name
|
165
166
|
|
166
167
|
def __str__(self):
|
167
|
-
mode = "
|
168
|
+
mode = "static" if self.statically_defined else "dynamic"
|
168
169
|
attrs = " ".join("%s=%s" % x for x in self.attributes.items())
|
169
170
|
if attrs:
|
170
171
|
attrs = " " + attrs
|
@@ -450,6 +451,18 @@ def _base_step_decorator(decotype, *args, **kwargs):
|
|
450
451
|
return wrap
|
451
452
|
|
452
453
|
|
454
|
+
_all_step_decos = None
|
455
|
+
|
456
|
+
|
457
|
+
def _get_all_step_decos():
|
458
|
+
global _all_step_decos
|
459
|
+
if _all_step_decos is None:
|
460
|
+
from .plugins import STEP_DECORATORS
|
461
|
+
|
462
|
+
_all_step_decos = {decotype.name: decotype for decotype in STEP_DECORATORS}
|
463
|
+
return _all_step_decos
|
464
|
+
|
465
|
+
|
453
466
|
def _attach_decorators(flow, decospecs):
|
454
467
|
"""
|
455
468
|
Attach decorators to all steps during runtime. This has the same
|
@@ -462,6 +475,7 @@ def _attach_decorators(flow, decospecs):
|
|
462
475
|
#
|
463
476
|
# Note that each step gets its own instance of the decorator class,
|
464
477
|
# so decorator can maintain step-specific state.
|
478
|
+
|
465
479
|
for step in flow:
|
466
480
|
_attach_decorators_to_step(step, decospecs)
|
467
481
|
|
@@ -472,9 +486,8 @@ def _attach_decorators_to_step(step, decospecs):
|
|
472
486
|
effect as if you defined the decorators statically in the source for
|
473
487
|
the step.
|
474
488
|
"""
|
475
|
-
from .plugins import STEP_DECORATORS
|
476
489
|
|
477
|
-
decos =
|
490
|
+
decos = _get_all_step_decos()
|
478
491
|
|
479
492
|
for decospec in decospecs:
|
480
493
|
splits = decospec.split(":", 1)
|
@@ -249,6 +249,14 @@ CONTACT_INFO = from_conf(
|
|
249
249
|
},
|
250
250
|
)
|
251
251
|
|
252
|
+
|
253
|
+
###
|
254
|
+
# Decorators
|
255
|
+
###
|
256
|
+
# Format is a space separated string of decospecs (what is passed
|
257
|
+
# using --with)
|
258
|
+
DECOSPECS = from_conf("DECOSPECS", "")
|
259
|
+
|
252
260
|
###
|
253
261
|
# AWS Batch configuration
|
254
262
|
###
|
@@ -496,6 +504,8 @@ def get_pinned_conda_libs(python_version, datastore_type):
|
|
496
504
|
try:
|
497
505
|
from metaflow.extension_support import get_modules
|
498
506
|
|
507
|
+
_TOGGLE_DECOSPECS = []
|
508
|
+
|
499
509
|
ext_modules = get_modules("config")
|
500
510
|
for m in ext_modules:
|
501
511
|
# We load into globals whatever we have in extension_module
|
@@ -519,8 +529,18 @@ try:
|
|
519
529
|
return d1
|
520
530
|
|
521
531
|
globals()[n] = _new_get_pinned_conda_libs
|
532
|
+
elif n == "TOGGLE_DECOSPECS":
|
533
|
+
if any([x.startswith("-") for x in o]):
|
534
|
+
raise ValueError("Removing decospecs is not currently supported")
|
535
|
+
if any(" " in x for x in o):
|
536
|
+
raise ValueError("Decospecs cannot contain spaces")
|
537
|
+
_TOGGLE_DECOSPECS.extend(o)
|
522
538
|
elif not n.startswith("__") and not isinstance(o, types.ModuleType):
|
523
539
|
globals()[n] = o
|
540
|
+
# If DECOSPECS is set, use that, else extrapolate from extensions
|
541
|
+
if not DECOSPECS:
|
542
|
+
DECOSPECS = " ".join(_TOGGLE_DECOSPECS)
|
543
|
+
|
524
544
|
finally:
|
525
545
|
# Erase all temporary names to avoid leaking things
|
526
546
|
for _n in [
|
@@ -537,6 +557,7 @@ finally:
|
|
537
557
|
"v",
|
538
558
|
"f1",
|
539
559
|
"f2",
|
560
|
+
"_TOGGLE_DECOSPECS",
|
540
561
|
]:
|
541
562
|
try:
|
542
563
|
del globals()[_n]
|
@@ -184,6 +184,12 @@ class ArgoWorkflows(object):
|
|
184
184
|
# allowed by Metaflow - guaranteeing uniqueness.
|
185
185
|
return name.replace("_", "-")
|
186
186
|
|
187
|
+
@staticmethod
|
188
|
+
def _sensor_name(name):
|
189
|
+
# Unfortunately, Argo Events Sensor names don't allow for
|
190
|
+
# dots (sensors run into an error) which rules out self.name :(
|
191
|
+
return name.replace(".", "-")
|
192
|
+
|
187
193
|
@staticmethod
|
188
194
|
def list_templates(flow_name, all=False):
|
189
195
|
client = ArgoClient(namespace=KUBERNETES_NAMESPACE)
|
@@ -216,7 +222,7 @@ class ArgoWorkflows(object):
|
|
216
222
|
|
217
223
|
# The workflow might have sensors attached to it, which consume actual resources.
|
218
224
|
# Try to delete these as well.
|
219
|
-
sensor_deleted = client.delete_sensor(name)
|
225
|
+
sensor_deleted = client.delete_sensor(ArgoWorkflows._sensor_name(name))
|
220
226
|
|
221
227
|
# After cleaning up related resources, delete the workflow in question.
|
222
228
|
# Failure in deleting is treated as critical and will be made visible to the user
|
@@ -333,10 +339,9 @@ class ArgoWorkflows(object):
|
|
333
339
|
argo_client.schedule_workflow_template(
|
334
340
|
self.name, self._schedule, self._timezone
|
335
341
|
)
|
336
|
-
# Register sensor.
|
337
|
-
# dots (sensors run into an error) which rules out self.name :(
|
342
|
+
# Register sensor.
|
338
343
|
# Metaflow will overwrite any existing sensor.
|
339
|
-
sensor_name = self.name
|
344
|
+
sensor_name = ArgoWorkflows._sensor_name(self.name)
|
340
345
|
if self._sensor:
|
341
346
|
argo_client.register_sensor(sensor_name, self._sensor.to_json())
|
342
347
|
else:
|
@@ -2039,7 +2044,7 @@ class ArgoWorkflows(object):
|
|
2039
2044
|
.metadata(
|
2040
2045
|
# Sensor metadata.
|
2041
2046
|
ObjectMeta()
|
2042
|
-
.name(self.name
|
2047
|
+
.name(ArgoWorkflows._sensor_name(self.name))
|
2043
2048
|
.namespace(KUBERNETES_NAMESPACE)
|
2044
2049
|
.label("app.kubernetes.io/name", "metaflow-sensor")
|
2045
2050
|
.label("app.kubernetes.io/part-of", "metaflow")
|
@@ -0,0 +1 @@
|
|
1
|
+
metaflow_version = "2.12.2"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: metaflow
|
3
|
-
Version: 2.12.
|
3
|
+
Version: 2.12.2
|
4
4
|
Summary: Metaflow: More Data Science, Less Engineering
|
5
5
|
Author: Metaflow Developers
|
6
6
|
Author-email: help@metaflow.org
|
@@ -26,7 +26,7 @@ License-File: LICENSE
|
|
26
26
|
Requires-Dist: requests
|
27
27
|
Requires-Dist: boto3
|
28
28
|
Provides-Extra: stubs
|
29
|
-
Requires-Dist: metaflow-stubs==2.12.
|
29
|
+
Requires-Dist: metaflow-stubs==2.12.2; extra == "stubs"
|
30
30
|
|
31
31
|

|
32
32
|
|
@@ -1 +0,0 @@
|
|
1
|
-
metaflow_version = "2.12.0"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{metaflow-2.12.0 → metaflow-2.12.2}/metaflow/_vendor/v3_6/importlib_metadata/_collections.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|