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

|
32
32
|
|
@@ -6,7 +6,18 @@ from tempfile import NamedTemporaryFile
|
|
6
6
|
import time
|
7
7
|
import metaflow.tracing as tracing
|
8
8
|
|
9
|
-
from typing import
|
9
|
+
from typing import (
|
10
|
+
Any,
|
11
|
+
Callable,
|
12
|
+
Iterable,
|
13
|
+
Iterator,
|
14
|
+
List,
|
15
|
+
Optional,
|
16
|
+
NoReturn,
|
17
|
+
Tuple,
|
18
|
+
TypeVar,
|
19
|
+
Union,
|
20
|
+
)
|
10
21
|
|
11
22
|
try:
|
12
23
|
# Python 2
|
@@ -30,7 +41,13 @@ class MulticoreException(Exception):
|
|
30
41
|
pass
|
31
42
|
|
32
43
|
|
33
|
-
|
44
|
+
_A = TypeVar("_A")
|
45
|
+
_R = TypeVar("_R")
|
46
|
+
|
47
|
+
|
48
|
+
def _spawn(
|
49
|
+
func: Callable[[_A], _R], arg: _A, dir: Optional[str]
|
50
|
+
) -> Union[Tuple[int, str], NoReturn]:
|
34
51
|
with NamedTemporaryFile(prefix="parallel_map_", dir=dir, delete=False) as tmpfile:
|
35
52
|
output_file = tmpfile.name
|
36
53
|
|
@@ -63,11 +80,11 @@ def _spawn(func, arg, dir):
|
|
63
80
|
|
64
81
|
|
65
82
|
def parallel_imap_unordered(
|
66
|
-
func: Callable[[
|
67
|
-
iterable: Iterable[
|
83
|
+
func: Callable[[_A], _R],
|
84
|
+
iterable: Iterable[_A],
|
68
85
|
max_parallel: Optional[int] = None,
|
69
86
|
dir: Optional[str] = None,
|
70
|
-
) -> Iterator[
|
87
|
+
) -> Iterator[_R]:
|
71
88
|
"""
|
72
89
|
Parallelizes execution of a function using multiprocessing. The result
|
73
90
|
order is not guaranteed.
|
@@ -79,9 +96,9 @@ def parallel_imap_unordered(
|
|
79
96
|
iterable : Iterable[Any]
|
80
97
|
Iterable over arguments to pass to fun
|
81
98
|
max_parallel int, optional, default None
|
82
|
-
Maximum parallelism. If not specified, uses the number of CPUs
|
99
|
+
Maximum parallelism. If not specified, it uses the number of CPUs
|
83
100
|
dir : str, optional, default None
|
84
|
-
If specified, directory where temporary files are created
|
101
|
+
If specified, it's the directory where temporary files are created
|
85
102
|
|
86
103
|
Yields
|
87
104
|
------
|
@@ -121,14 +138,14 @@ def parallel_imap_unordered(
|
|
121
138
|
|
122
139
|
|
123
140
|
def parallel_map(
|
124
|
-
func: Callable[[
|
125
|
-
iterable: Iterable[
|
141
|
+
func: Callable[[_A], _R],
|
142
|
+
iterable: Iterable[_A],
|
126
143
|
max_parallel: Optional[int] = None,
|
127
144
|
dir: Optional[str] = None,
|
128
|
-
) -> List[
|
145
|
+
) -> List[_R]:
|
129
146
|
"""
|
130
147
|
Parallelizes execution of a function using multiprocessing. The result
|
131
|
-
order is that of the arguments in `iterable
|
148
|
+
order is that of the arguments in `iterable`.
|
132
149
|
|
133
150
|
Parameters
|
134
151
|
----------
|
@@ -137,9 +154,9 @@ def parallel_map(
|
|
137
154
|
iterable : Iterable[Any]
|
138
155
|
Iterable over arguments to pass to fun
|
139
156
|
max_parallel int, optional, default None
|
140
|
-
Maximum parallelism. If not specified, uses the number of CPUs
|
157
|
+
Maximum parallelism. If not specified, it uses the number of CPUs
|
141
158
|
dir : str, optional, default None
|
142
|
-
If specified, directory where temporary files are created
|
159
|
+
If specified, it's the directory where temporary files are created
|
143
160
|
|
144
161
|
Returns
|
145
162
|
-------
|
@@ -155,4 +172,4 @@ def parallel_map(
|
|
155
172
|
res = parallel_imap_unordered(
|
156
173
|
wrapper, enumerate(iterable), max_parallel=max_parallel, dir=dir
|
157
174
|
)
|
158
|
-
return [r for
|
175
|
+
return [r for _, r in sorted(res)]
|
@@ -151,6 +151,7 @@ class DeployTimeField(object):
|
|
151
151
|
return self._check_type(val, deploy_time)
|
152
152
|
|
153
153
|
def _check_type(self, val, deploy_time):
|
154
|
+
|
154
155
|
# it is easy to introduce a deploy-time function that accidentally
|
155
156
|
# returns a value whose type is not compatible with what is defined
|
156
157
|
# in Parameter. Let's catch those mistakes early here, instead of
|
@@ -158,7 +159,7 @@ class DeployTimeField(object):
|
|
158
159
|
|
159
160
|
# note: this doesn't work with long in Python2 or types defined as
|
160
161
|
# click types, e.g. click.INT
|
161
|
-
TYPES = {bool: "bool", int: "int", float: "float", list: "list"}
|
162
|
+
TYPES = {bool: "bool", int: "int", float: "float", list: "list", dict: "dict"}
|
162
163
|
|
163
164
|
msg = (
|
164
165
|
"The value returned by the deploy-time function for "
|
@@ -166,7 +167,12 @@ class DeployTimeField(object):
|
|
166
167
|
% (self.parameter_name, self.field)
|
167
168
|
)
|
168
169
|
|
169
|
-
if self.parameter_type
|
170
|
+
if isinstance(self.parameter_type, list):
|
171
|
+
if not any(isinstance(val, x) for x in self.parameter_type):
|
172
|
+
msg += "Expected one of the following %s." % TYPES[self.parameter_type]
|
173
|
+
raise ParameterFieldTypeMismatch(msg)
|
174
|
+
return str(val) if self.return_str else val
|
175
|
+
elif self.parameter_type in TYPES:
|
170
176
|
if type(val) != self.parameter_type:
|
171
177
|
msg += "Expected a %s." % TYPES[self.parameter_type]
|
172
178
|
raise ParameterFieldTypeMismatch(msg)
|
@@ -522,7 +522,9 @@ class ArgoWorkflows(object):
|
|
522
522
|
params = set(
|
523
523
|
[param.name.lower() for var, param in self.flow._get_parameters()]
|
524
524
|
)
|
525
|
-
|
525
|
+
trigger_deco = self.flow._flow_decorators.get("trigger")[0]
|
526
|
+
trigger_deco.format_deploytime_value()
|
527
|
+
for event in trigger_deco.triggers:
|
526
528
|
parameters = {}
|
527
529
|
# TODO: Add a check to guard against names starting with numerals(?)
|
528
530
|
if not re.match(r"^[A-Za-z0-9_.-]+$", event["name"]):
|
@@ -562,9 +564,11 @@ class ArgoWorkflows(object):
|
|
562
564
|
|
563
565
|
# @trigger_on_finish decorator
|
564
566
|
if self.flow._flow_decorators.get("trigger_on_finish"):
|
565
|
-
|
566
|
-
|
567
|
-
]
|
567
|
+
trigger_on_finish_deco = self.flow._flow_decorators.get(
|
568
|
+
"trigger_on_finish"
|
569
|
+
)[0]
|
570
|
+
trigger_on_finish_deco.format_deploytime_value()
|
571
|
+
for event in trigger_on_finish_deco.triggers:
|
568
572
|
# Actual filters are deduced here since we don't have access to
|
569
573
|
# the current object in the @trigger_on_finish decorator.
|
570
574
|
triggers.append(
|
{metaflow-2.12.33 → metaflow-2.12.34}/metaflow/plugins/argo/argo_workflows_deployer_objects.py
RENAMED
@@ -10,7 +10,7 @@ from metaflow.metaflow_config import KUBERNETES_NAMESPACE
|
|
10
10
|
from metaflow.plugins.argo.argo_workflows import ArgoWorkflows
|
11
11
|
from metaflow.runner.deployer import Deployer, DeployedFlow, TriggeredRun
|
12
12
|
|
13
|
-
from metaflow.runner.utils import get_lower_level_group, handle_timeout
|
13
|
+
from metaflow.runner.utils import get_lower_level_group, handle_timeout, temporary_fifo
|
14
14
|
|
15
15
|
|
16
16
|
def generate_fake_flow_file_contents(
|
@@ -341,18 +341,14 @@ class ArgoWorkflowsDeployedFlow(DeployedFlow):
|
|
341
341
|
Exception
|
342
342
|
If there is an error during the trigger process.
|
343
343
|
"""
|
344
|
-
with
|
345
|
-
tfp_runner_attribute = tempfile.NamedTemporaryFile(
|
346
|
-
dir=temp_dir, delete=False
|
347
|
-
)
|
348
|
-
|
344
|
+
with temporary_fifo() as (attribute_file_path, attribute_file_fd):
|
349
345
|
# every subclass needs to have `self.deployer_kwargs`
|
350
346
|
command = get_lower_level_group(
|
351
347
|
self.deployer.api,
|
352
348
|
self.deployer.top_level_kwargs,
|
353
349
|
self.deployer.TYPE,
|
354
350
|
self.deployer.deployer_kwargs,
|
355
|
-
).trigger(deployer_attribute_file=
|
351
|
+
).trigger(deployer_attribute_file=attribute_file_path, **kwargs)
|
356
352
|
|
357
353
|
pid = self.deployer.spm.run_command(
|
358
354
|
[sys.executable, *command],
|
@@ -363,7 +359,7 @@ class ArgoWorkflowsDeployedFlow(DeployedFlow):
|
|
363
359
|
|
364
360
|
command_obj = self.deployer.spm.get(pid)
|
365
361
|
content = handle_timeout(
|
366
|
-
|
362
|
+
attribute_file_fd, command_obj, self.deployer.file_read_timeout
|
367
363
|
)
|
368
364
|
|
369
365
|
if command_obj.process.returncode == 0:
|
@@ -6,7 +6,7 @@ from typing import ClassVar, Optional, List
|
|
6
6
|
from metaflow.plugins.aws.step_functions.step_functions import StepFunctions
|
7
7
|
from metaflow.runner.deployer import DeployedFlow, TriggeredRun
|
8
8
|
|
9
|
-
from metaflow.runner.utils import get_lower_level_group, handle_timeout
|
9
|
+
from metaflow.runner.utils import get_lower_level_group, handle_timeout, temporary_fifo
|
10
10
|
|
11
11
|
|
12
12
|
class StepFunctionsTriggeredRun(TriggeredRun):
|
@@ -196,18 +196,14 @@ class StepFunctionsDeployedFlow(DeployedFlow):
|
|
196
196
|
Exception
|
197
197
|
If there is an error during the trigger process.
|
198
198
|
"""
|
199
|
-
with
|
200
|
-
tfp_runner_attribute = tempfile.NamedTemporaryFile(
|
201
|
-
dir=temp_dir, delete=False
|
202
|
-
)
|
203
|
-
|
199
|
+
with temporary_fifo() as (attribute_file_path, attribute_file_fd):
|
204
200
|
# every subclass needs to have `self.deployer_kwargs`
|
205
201
|
command = get_lower_level_group(
|
206
202
|
self.deployer.api,
|
207
203
|
self.deployer.top_level_kwargs,
|
208
204
|
self.deployer.TYPE,
|
209
205
|
self.deployer.deployer_kwargs,
|
210
|
-
).trigger(deployer_attribute_file=
|
206
|
+
).trigger(deployer_attribute_file=attribute_file_path, **kwargs)
|
211
207
|
|
212
208
|
pid = self.deployer.spm.run_command(
|
213
209
|
[sys.executable, *command],
|
@@ -218,7 +214,7 @@ class StepFunctionsDeployedFlow(DeployedFlow):
|
|
218
214
|
|
219
215
|
command_obj = self.deployer.spm.get(pid)
|
220
216
|
content = handle_timeout(
|
221
|
-
|
217
|
+
attribute_file_fd, command_obj, self.deployer.file_read_timeout
|
222
218
|
)
|
223
219
|
|
224
220
|
if command_obj.process.returncode == 0:
|
@@ -600,7 +600,9 @@ class S3(object):
|
|
600
600
|
# returned are Unicode.
|
601
601
|
key = getattr(key_value, "key", key_value)
|
602
602
|
if self._s3root is None:
|
603
|
-
|
603
|
+
# NOTE: S3 allows fragments as part of object names, e.g. /dataset #1/data.txt
|
604
|
+
# Without allow_fragments=False the parsed.path for an object name with fragments is incomplete.
|
605
|
+
parsed = urlparse(to_unicode(key), allow_fragments=False)
|
604
606
|
if parsed.scheme == "s3" and parsed.path:
|
605
607
|
return key
|
606
608
|
else:
|
@@ -765,7 +767,9 @@ class S3(object):
|
|
765
767
|
"""
|
766
768
|
|
767
769
|
url = self._url(key)
|
768
|
-
|
770
|
+
# NOTE: S3 allows fragments as part of object names, e.g. /dataset #1/data.txt
|
771
|
+
# Without allow_fragments=False the parsed src.path for an object name with fragments is incomplete.
|
772
|
+
src = urlparse(url, allow_fragments=False)
|
769
773
|
|
770
774
|
def _info(s3, tmp):
|
771
775
|
resp = s3.head_object(Bucket=src.netloc, Key=src.path.lstrip('/"'))
|
@@ -891,7 +895,9 @@ class S3(object):
|
|
891
895
|
DOWNLOAD_MAX_CHUNK = 2 * 1024 * 1024 * 1024 - 1
|
892
896
|
|
893
897
|
url, r = self._url_and_range(key)
|
894
|
-
|
898
|
+
# NOTE: S3 allows fragments as part of object names, e.g. /dataset #1/data.txt
|
899
|
+
# Without allow_fragments=False the parsed src.path for an object name with fragments is incomplete.
|
900
|
+
src = urlparse(url, allow_fragments=False)
|
895
901
|
|
896
902
|
def _download(s3, tmp):
|
897
903
|
if r:
|
@@ -1173,7 +1179,9 @@ class S3(object):
|
|
1173
1179
|
blob.close = lambda: None
|
1174
1180
|
|
1175
1181
|
url = self._url(key)
|
1176
|
-
|
1182
|
+
# NOTE: S3 allows fragments as part of object names, e.g. /dataset #1/data.txt
|
1183
|
+
# Without allow_fragments=False the parsed src.path for an object name with fragments is incomplete.
|
1184
|
+
src = urlparse(url, allow_fragments=False)
|
1177
1185
|
extra_args = None
|
1178
1186
|
if content_type or metadata or self._encryption:
|
1179
1187
|
extra_args = {}
|