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

|
32
32
|
|
@@ -45,6 +45,8 @@ class ParallelDecorator(StepDecorator):
|
|
45
45
|
if ubf_context == UBF_CONTROL:
|
46
46
|
num_parallel = cli_args.task.ubf_iter.num_parallel
|
47
47
|
cli_args.command_options["num-parallel"] = str(num_parallel)
|
48
|
+
if os.environ.get("METAFLOW_RUNTIME_ENVIRONMENT", "local") == "local":
|
49
|
+
cli_args.command_options["split_index"] = "0"
|
48
50
|
|
49
51
|
def step_init(
|
50
52
|
self, flow, graph, step_name, decorators, environment, flow_datastore, logger
|
@@ -126,6 +128,8 @@ class ParallelDecorator(StepDecorator):
|
|
126
128
|
tags=["attempt_id:{0}".format(0)],
|
127
129
|
)
|
128
130
|
]
|
131
|
+
flow._control_task_is_mapper_zero = True
|
132
|
+
|
129
133
|
metadata.register_metadata(run_id, step_name, task_id, task_metadata_list)
|
130
134
|
|
131
135
|
def task_decorate(
|
@@ -221,7 +225,6 @@ def _local_multinode_control_task_step_func(
|
|
221
225
|
"%s/%s/%s" % (run_id, step_name, mapper_task_id)
|
222
226
|
for mapper_task_id in mapper_task_ids
|
223
227
|
]
|
224
|
-
flow._control_task_is_mapper_zero = True
|
225
228
|
|
226
229
|
# run the step function ourselves
|
227
230
|
os.environ["MF_PARALLEL_NODE_INDEX"] = "0"
|
@@ -9,6 +9,7 @@ from __future__ import print_function
|
|
9
9
|
import os
|
10
10
|
import sys
|
11
11
|
import fcntl
|
12
|
+
import re
|
12
13
|
import time
|
13
14
|
import subprocess
|
14
15
|
from datetime import datetime
|
@@ -49,7 +50,13 @@ PROGRESS_INTERVAL = 300 # s
|
|
49
50
|
# The following is a list of the (data) artifacts used by the runtime while
|
50
51
|
# executing a flow. These are prefetched during the resume operation by
|
51
52
|
# leveraging the TaskDataStoreSet.
|
52
|
-
PREFETCH_DATA_ARTIFACTS = [
|
53
|
+
PREFETCH_DATA_ARTIFACTS = [
|
54
|
+
"_foreach_stack",
|
55
|
+
"_task_ok",
|
56
|
+
"_transition",
|
57
|
+
"_control_mapper_tasks",
|
58
|
+
"_control_task_is_mapper_zero",
|
59
|
+
]
|
53
60
|
RESUME_POLL_SECONDS = 60
|
54
61
|
|
55
62
|
# Runtime must use logsource=RUNTIME_LOG_SOURCE for all loglines that it
|
@@ -269,6 +276,8 @@ class NativeRuntime(object):
|
|
269
276
|
step_name,
|
270
277
|
task_id,
|
271
278
|
pathspec_index,
|
279
|
+
cloned_task_pathspec_index,
|
280
|
+
finished_tuple,
|
272
281
|
ubf_context,
|
273
282
|
generate_task_obj,
|
274
283
|
verbose=False,
|
@@ -281,8 +290,13 @@ class NativeRuntime(object):
|
|
281
290
|
task.ubf_context = ubf_context
|
282
291
|
new_task_id = task.task_id
|
283
292
|
self._cloned_tasks.append(task)
|
284
|
-
self._cloned_task_index.add(
|
285
|
-
|
293
|
+
self._cloned_task_index.add(cloned_task_pathspec_index)
|
294
|
+
task_pathspec = "{}/{}/{}".format(self._run_id, step_name, new_task_id)
|
295
|
+
else:
|
296
|
+
task_pathspec = "{}/{}/{}".format(self._run_id, step_name, new_task_id)
|
297
|
+
Task.clone_pathspec_mapping[task_pathspec] = "{}/{}/{}".format(
|
298
|
+
self._clone_run_id, step_name, task_id
|
299
|
+
)
|
286
300
|
if verbose:
|
287
301
|
self._logger(
|
288
302
|
"Cloning task from {}/{}/{}/{} to {}/{}/{}/{}".format(
|
@@ -308,6 +322,8 @@ class NativeRuntime(object):
|
|
308
322
|
self._metadata,
|
309
323
|
origin_ds_set=self._origin_ds_set,
|
310
324
|
)
|
325
|
+
self._finished[(step_name, finished_tuple)] = task_pathspec
|
326
|
+
self._is_cloned[task_pathspec] = True
|
311
327
|
except Exception as e:
|
312
328
|
self._logger(
|
313
329
|
"Cloning {}/{}/{}/{} failed with error: {}".format(
|
@@ -323,7 +339,8 @@ class NativeRuntime(object):
|
|
323
339
|
|
324
340
|
inputs = []
|
325
341
|
|
326
|
-
ubf_mapper_tasks_to_clone =
|
342
|
+
ubf_mapper_tasks_to_clone = set()
|
343
|
+
ubf_control_tasks = set()
|
327
344
|
# We only clone ubf mapper tasks if the control task is complete.
|
328
345
|
# Here we need to check which control tasks are complete, and then get the corresponding
|
329
346
|
# mapper tasks.
|
@@ -331,13 +348,25 @@ class NativeRuntime(object):
|
|
331
348
|
_, step_name, task_id = task_ds.pathspec.split("/")
|
332
349
|
pathspec_index = task_ds.pathspec_index
|
333
350
|
if task_ds["_task_ok"] and step_name != "_parameters":
|
334
|
-
#
|
351
|
+
# Control task contains "_control_mapper_tasks" but, in the case of
|
352
|
+
# @parallel decorator, the control task is also a mapper task so we
|
353
|
+
# need to distinguish this using _control_task_is_mapper_zero
|
335
354
|
control_mapper_tasks = (
|
336
355
|
[]
|
337
356
|
if "_control_mapper_tasks" not in task_ds
|
338
357
|
else task_ds["_control_mapper_tasks"]
|
339
358
|
)
|
340
|
-
|
359
|
+
if control_mapper_tasks:
|
360
|
+
if task_ds.get("_control_task_is_mapper_zero", False):
|
361
|
+
# Strip out the control task of list of mapper tasks
|
362
|
+
ubf_control_tasks.add(control_mapper_tasks[0])
|
363
|
+
ubf_mapper_tasks_to_clone.update(control_mapper_tasks[1:])
|
364
|
+
else:
|
365
|
+
ubf_mapper_tasks_to_clone.update(control_mapper_tasks)
|
366
|
+
# Since we only add mapper tasks here, if we are not in the list
|
367
|
+
# we are a control task
|
368
|
+
if task_ds.pathspec not in ubf_mapper_tasks_to_clone:
|
369
|
+
ubf_control_tasks.add(task_ds.pathspec)
|
341
370
|
|
342
371
|
for task_ds in self._origin_ds_set:
|
343
372
|
_, step_name, task_id = task_ds.pathspec.split("/")
|
@@ -350,33 +379,54 @@ class NativeRuntime(object):
|
|
350
379
|
):
|
351
380
|
# "_unbounded_foreach" is a special flag to indicate that the transition is an unbounded foreach.
|
352
381
|
# Both parent and splitted children tasks will have this flag set. The splitted control/mapper tasks
|
353
|
-
#
|
382
|
+
# are not foreach types because UBF is always followed by a join step.
|
354
383
|
is_ubf_task = (
|
355
384
|
"_unbounded_foreach" in task_ds and task_ds["_unbounded_foreach"]
|
356
|
-
) and (self._graph[step_name].
|
385
|
+
) and (self._graph[step_name].type != "foreach")
|
357
386
|
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
)
|
364
|
-
is_ubf_mapper_tasks = is_ubf_task and (not is_ubf_control_task)
|
365
|
-
if is_ubf_mapper_tasks and (
|
387
|
+
is_ubf_control_task = task_ds.pathspec in ubf_control_tasks
|
388
|
+
|
389
|
+
is_ubf_mapper_task = is_ubf_task and (not is_ubf_control_task)
|
390
|
+
|
391
|
+
if is_ubf_mapper_task and (
|
366
392
|
task_ds.pathspec not in ubf_mapper_tasks_to_clone
|
367
393
|
):
|
368
|
-
# Skip copying UBF mapper tasks if control
|
394
|
+
# Skip copying UBF mapper tasks if control task is incomplete.
|
369
395
|
continue
|
370
396
|
|
371
397
|
ubf_context = None
|
372
398
|
if is_ubf_task:
|
373
|
-
ubf_context = "ubf_test" if
|
399
|
+
ubf_context = "ubf_test" if is_ubf_mapper_task else "ubf_control"
|
400
|
+
|
401
|
+
finished_tuple = tuple(
|
402
|
+
[s._replace(value=0) for s in task_ds.get("_foreach_stack", ())]
|
403
|
+
)
|
404
|
+
cloned_task_pathspec_index = pathspec_index.split("/")[1]
|
405
|
+
if task_ds.get("_control_task_is_mapper_zero", False):
|
406
|
+
# Replace None with index 0 for control task as it is part of the
|
407
|
+
# UBF (as a mapper as well)
|
408
|
+
finished_tuple = finished_tuple[:-1] + (
|
409
|
+
finished_tuple[-1]._replace(index=0),
|
410
|
+
)
|
411
|
+
# We need this reverse override though because when we check
|
412
|
+
# if a task has been cloned in _queue_push, the index will be None
|
413
|
+
# because the _control_task_is_mapper_zero is set in the control
|
414
|
+
# task *itself* and *not* in the one that is launching the UBF nest.
|
415
|
+
# This means that _translate_index will use None.
|
416
|
+
cloned_task_pathspec_index = re.sub(
|
417
|
+
r"(\[(?:\d+, ?)*)0\]",
|
418
|
+
lambda m: (m.group(1) or "[") + "None]",
|
419
|
+
cloned_task_pathspec_index,
|
420
|
+
)
|
421
|
+
|
374
422
|
inputs.append(
|
375
423
|
(
|
376
424
|
step_name,
|
377
425
|
task_id,
|
378
426
|
pathspec_index,
|
379
|
-
|
427
|
+
cloned_task_pathspec_index,
|
428
|
+
finished_tuple,
|
429
|
+
is_ubf_mapper_task,
|
380
430
|
ubf_context,
|
381
431
|
)
|
382
432
|
)
|
@@ -388,15 +438,19 @@ class NativeRuntime(object):
|
|
388
438
|
step_name,
|
389
439
|
task_id,
|
390
440
|
pathspec_index,
|
441
|
+
cloned_task_pathspec_index,
|
442
|
+
finished_tuple,
|
391
443
|
ubf_context=ubf_context,
|
392
|
-
generate_task_obj=generate_task_obj and (not
|
444
|
+
generate_task_obj=generate_task_obj and (not is_ubf_mapper_task),
|
393
445
|
verbose=verbose,
|
394
446
|
)
|
395
447
|
for (
|
396
448
|
step_name,
|
397
449
|
task_id,
|
398
450
|
pathspec_index,
|
399
|
-
|
451
|
+
cloned_task_pathspec_index,
|
452
|
+
finished_tuple,
|
453
|
+
is_ubf_mapper_task,
|
400
454
|
ubf_context,
|
401
455
|
) in inputs
|
402
456
|
]
|
@@ -546,7 +600,6 @@ class NativeRuntime(object):
|
|
546
600
|
# Given the current task information (task_index), the type of transition,
|
547
601
|
# and the split index, return the new task index.
|
548
602
|
def _translate_index(self, task, next_step, type, split_index=None):
|
549
|
-
import re
|
550
603
|
|
551
604
|
match = re.match(r"^(.+)\[(.*)\]$", task.task_index)
|
552
605
|
if match:
|
@@ -640,15 +693,18 @@ class NativeRuntime(object):
|
|
640
693
|
# If the control task is cloned, all mapper tasks should have been cloned
|
641
694
|
# as well, so we no longer need to handle cloning of mapper tasks in runtime.
|
642
695
|
|
643
|
-
# Update _finished
|
644
|
-
#
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
696
|
+
# Update _finished if we are not cloned. If we were cloned, we already
|
697
|
+
# updated _finished with the new tasks. Note that the *value* of mapper
|
698
|
+
# tasks is incorrect and contains the pathspec of the *cloned* run
|
699
|
+
# but we don't use it for anything. We could look to clean it up though
|
700
|
+
if not task.is_cloned:
|
701
|
+
_, foreach_stack = task.finished_id
|
702
|
+
top = foreach_stack[-1]
|
703
|
+
bottom = list(foreach_stack[:-1])
|
704
|
+
for i in range(num_splits):
|
705
|
+
s = tuple(bottom + [top._replace(index=i)])
|
706
|
+
self._finished[(task.step, s)] = mapper_tasks[i]
|
707
|
+
self._is_cloned[mapper_tasks[i]] = False
|
652
708
|
|
653
709
|
# Find and check status of control task and retrieve its pathspec
|
654
710
|
# for retrieving unbounded foreach cardinality.
|
@@ -1080,7 +1136,7 @@ class Task(object):
|
|
1080
1136
|
# To avoid the edge case where the resume leader is selected but has not
|
1081
1137
|
# yet written the _resume_leader metadata, we will wait for a few seconds.
|
1082
1138
|
# We will wait for resume leader for at most 3 times.
|
1083
|
-
for
|
1139
|
+
for _ in range(3):
|
1084
1140
|
if ds.has_metadata("_resume_leader", add_attempt=False):
|
1085
1141
|
resume_leader = ds.load_metadata(
|
1086
1142
|
["_resume_leader"], add_attempt=False
|
@@ -0,0 +1 @@
|
|
1
|
+
metaflow_version = "2.12.36"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: metaflow
|
3
|
-
Version: 2.12.
|
3
|
+
Version: 2.12.36
|
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.36; extra == "stubs"
|
30
30
|
|
31
31
|

|
32
32
|
|
@@ -1 +0,0 @@
|
|
1
|
-
metaflow_version = "2.12.35"
|
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.35 → metaflow-2.12.36}/metaflow/_vendor/v3_6/importlib_metadata/_collections.py
RENAMED
File without changes
|
File without changes
|
{metaflow-2.12.35 → metaflow-2.12.36}/metaflow/_vendor/v3_6/importlib_metadata/_functools.py
RENAMED
File without changes
|
{metaflow-2.12.35 → metaflow-2.12.36}/metaflow/_vendor/v3_6/importlib_metadata/_itertools.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
|
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
|