ob-metaflow 2.16.6.5rc3__tar.gz → 2.16.8.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ob-metaflow might be problematic. Click here for more details.
- {ob_metaflow-2.16.6.5rc3/ob_metaflow.egg-info → ob_metaflow-2.16.8.1}/PKG-INFO +2 -2
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/devtools/Tiltfile +2 -76
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/devtools/pick_services.sh +0 -1
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/core.py +3 -4
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/imghdr/__init__.py +11 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/__init__.py +427 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/composer.py +139 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/constructor.py +748 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/cyaml.py +101 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/dumper.py +62 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/emitter.py +1137 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/error.py +75 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/events.py +86 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/loader.py +63 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/nodes.py +49 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/parser.py +589 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/reader.py +185 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/representer.py +389 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/resolver.py +227 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/scanner.py +1435 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/serializer.py +111 -0
- ob_metaflow-2.16.8.1/metaflow/_vendor/yaml/tokens.py +104 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cli.py +11 -2
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/client/core.py +6 -1
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/extension_support/__init__.py +4 -3
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metaflow_environment.py +14 -6
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/package/__init__.py +18 -9
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/packaging_sys/__init__.py +53 -43
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/packaging_sys/backend.py +21 -6
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/packaging_sys/tar_backend.py +16 -3
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/packaging_sys/v1.py +21 -21
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/convert_to_native_type.py +7 -1
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/kubernetes/kubernetes_jobsets.py +3 -13
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/pypi/conda_decorator.py +4 -2
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/runner/click_api.py +14 -7
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/runner/subprocess_manager.py +20 -12
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/vendor.py +23 -6
- ob_metaflow-2.16.8.1/metaflow/version.py +1 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1/ob_metaflow.egg-info}/PKG-INFO +2 -2
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/ob_metaflow.egg-info/SOURCES.txt +17 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/ob_metaflow.egg-info/requires.txt +1 -1
- ob_metaflow-2.16.6.5rc3/metaflow/version.py +0 -1
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/LICENSE +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/MANIFEST.in +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/README.md +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/devtools/Makefile +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/R.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/_bashcomplete.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/_compat.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/_termui_impl.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/_textwrap.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/_unicodefun.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/_winconsole.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/decorators.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/exceptions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/formatting.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/globals.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/parser.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/termui.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/testing.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/types.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/click/utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/importlib_metadata/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/importlib_metadata/_adapters.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/importlib_metadata/_collections.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/importlib_metadata/_compat.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/importlib_metadata/_functools.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/importlib_metadata/_itertools.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/importlib_metadata/_meta.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/importlib_metadata/_text.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/importlib_metadata/py.typed +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/_elffile.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/_manylinux.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/_musllinux.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/_parser.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/_structures.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/_tokenizer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/markers.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/py.typed +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/requirements.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/specifiers.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/tags.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/packaging/version.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_checkers.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_config.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_decorators.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_exceptions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_functions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_importhook.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_memo.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_pytest_plugin.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_suppression.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_transformer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_union_transformer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/_utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typeguard/py.typed +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/typing_extensions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/importlib_metadata/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/importlib_metadata/_adapters.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/importlib_metadata/_collections.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/importlib_metadata/_compat.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/importlib_metadata/_functools.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/importlib_metadata/_itertools.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/importlib_metadata/_meta.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/importlib_metadata/_text.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/importlib_metadata/py.typed +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/typing_extensions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_6/zipp.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/importlib_metadata/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/importlib_metadata/_adapters.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/importlib_metadata/_collections.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/importlib_metadata/_compat.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/importlib_metadata/_functools.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/importlib_metadata/_itertools.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/importlib_metadata/_meta.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/importlib_metadata/_text.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/importlib_metadata/py.typed +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_checkers.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_config.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_decorators.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_exceptions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_functions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_importhook.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_memo.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_pytest_plugin.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_suppression.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_transformer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_union_transformer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/_utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typeguard/py.typed +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/typing_extensions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/v3_7/zipp.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/_vendor/zipp.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cards.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cli_args.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cli_components/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cli_components/dump_cmd.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cli_components/init_cmd.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cli_components/run_cmds.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cli_components/step_cmd.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cli_components/utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/client/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/client/filecache.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/clone_util.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd/code/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd/configure_cmd.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd/develop/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd/develop/stub_generator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd/develop/stubs.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd/main_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd/make_wrapper.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd/tutorials_cmd.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd/util.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/cmd_with_io.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/datastore/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/datastore/content_addressed_store.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/datastore/datastore_set.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/datastore/datastore_storage.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/datastore/exceptions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/datastore/flow_datastore.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/datastore/inputs.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/datastore/task_datastore.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/debug.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/decorators.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/event_logger.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/events.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/exception.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/extension_support/_empty_file.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/extension_support/cmd.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/extension_support/integrations.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/extension_support/plugins.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/flowspec.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/graph.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/includefile.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/integrations.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/lint.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/meta_files.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metadata_provider/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metadata_provider/heartbeat.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metadata_provider/metadata.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metadata_provider/util.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metaflow_config.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metaflow_config_funcs.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metaflow_current.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metaflow_git.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metaflow_profile.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/metaflow_version.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/mflog/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/mflog/mflog.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/mflog/save_logs.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/mflog/save_logs_periodically.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/mflog/tee.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/monitor.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/multicore_utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/packaging_sys/distribution_support.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/packaging_sys/utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/parameters.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/airflow.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/airflow_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/airflow_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/airflow_utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/dag.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/exception.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/plumbing/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/plumbing/set_parameters.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/sensors/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/sensors/base_sensor.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/sensors/external_task_sensor.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/airflow/sensors/s3_sensor.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/argo_client.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/argo_events.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/argo_workflows.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/argo_workflows_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/argo_workflows_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/argo_workflows_deployer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/argo_workflows_deployer_objects.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/capture_error.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/exit_hooks.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/generate_input_paths.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/argo/jobset_input_paths.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/aws_client.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/aws_utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/batch/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/batch/batch.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/batch/batch_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/batch/batch_client.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/batch/batch_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/secrets_manager/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/dynamo_db_client.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/event_bridge_client.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/production_token.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/schedule_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/set_batch_environment.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/step_functions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/step_functions_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/step_functions_client.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/step_functions_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/step_functions_deployer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/aws/step_functions/step_functions_deployer_objects.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/azure/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/azure/azure_credential.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/azure/azure_exceptions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/azure/azure_secret_manager_secrets_provider.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/azure/azure_tail.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/azure/azure_utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/azure/blob_service_client_factory.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/azure/includefile_support.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_client.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_creator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_datastore.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/base.html +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/basic.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/bundle.css +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/card.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/chevron/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/chevron/main.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/chevron/metadata.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/chevron/renderer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/chevron/tokenizer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/components.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/main.js +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/renderer_tools.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_modules/test_cards.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_resolver.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_server.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/card_viewer/viewer.html +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/component_serializer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/exception.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/cards/metadata.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/catch_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datastores/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datastores/azure_storage.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datastores/gs_storage.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datastores/local_storage.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datastores/s3_storage.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datatools/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datatools/local.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datatools/s3/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datatools/s3/s3.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datatools/s3/s3op.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datatools/s3/s3tail.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/datatools/s3/s3util.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/debug_logger.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/debug_monitor.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/client.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/client_modules.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/communication/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/communication/bytestream.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/communication/channel.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/communication/socket_bytestream.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/communication/utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/configurations/emulate_test_lib/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/configurations/emulate_test_lib/overrides.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/configurations/emulate_test_lib/server_mappings.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/configurations/test_lib_impl/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/consts.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/data_transferer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/exception_transferer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/override_decorators.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/server.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/stub.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/env_escape/utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/environment_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/events_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/exit_hook/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/exit_hook/exit_hook_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/exit_hook/exit_hook_script.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/frameworks/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/frameworks/pytorch.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/gcp/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/gcp/gs_exceptions.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/gcp/gs_storage_client_factory.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/gcp/gs_tail.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/gcp/gs_utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/gcp/includefile_support.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/kubernetes/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/kubernetes/kube_utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/kubernetes/kubernetes.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/kubernetes/kubernetes_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/kubernetes/kubernetes_client.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/kubernetes/kubernetes_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/kubernetes/kubernetes_job.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/kubernetes/spot_metadata_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/kubernetes/spot_monitor_sidecar.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/logs_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/metadata_providers/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/metadata_providers/local.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/metadata_providers/service.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/package_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/parallel_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/project_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/pypi/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/pypi/bootstrap.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/pypi/conda_environment.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/pypi/micromamba.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/pypi/parsers.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/pypi/pip.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/pypi/pypi_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/pypi/pypi_environment.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/pypi/utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/resources_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/retry_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/secrets/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/secrets/inline_secrets_provider.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/secrets/secrets_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/secrets/secrets_func.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/secrets/secrets_spec.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/secrets/utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/storage_executor.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/tag_cli.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/test_unbounded_foreach_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/timeout_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/uv/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/uv/bootstrap.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/plugins/uv/uv_environment.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/procpoll.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/py.typed +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/pylint_wrapper.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/runner/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/runner/deployer.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/runner/deployer_impl.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/runner/metaflow_runner.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/runner/nbdeploy.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/runner/nbrun.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/runner/utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/runtime.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/sidecar/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/sidecar/sidecar.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/sidecar/sidecar_messages.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/sidecar/sidecar_subprocess.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/sidecar/sidecar_worker.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/system/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/system/system_logger.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/system/system_monitor.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/system/system_utils.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tagging_util.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/task.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tracing/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tracing/propagator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tracing/span_exporter.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tracing/tracing_modules.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tuple_util.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/00-helloworld/README.md +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/00-helloworld/helloworld.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/01-playlist/README.md +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/01-playlist/movies.csv +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/01-playlist/playlist.ipynb +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/01-playlist/playlist.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/02-statistics/README.md +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/02-statistics/movies.csv +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/02-statistics/stats.ipynb +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/02-statistics/stats.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/03-playlist-redux/README.md +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/03-playlist-redux/playlist.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/04-playlist-plus/README.md +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/04-playlist-plus/playlist.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/05-hello-cloud/README.md +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/05-hello-cloud/hello-cloud.ipynb +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/05-hello-cloud/hello-cloud.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/06-statistics-redux/README.md +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/06-statistics-redux/stats.ipynb +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/07-worldview/README.md +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/07-worldview/worldview.ipynb +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/08-autopilot/README.md +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/tutorials/08-autopilot/autopilot.ipynb +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/unbounded_foreach.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/user_configs/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/user_configs/config_options.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/user_configs/config_parameters.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/user_decorators/__init__.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/user_decorators/common.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/user_decorators/mutable_flow.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/user_decorators/mutable_step.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/user_decorators/user_flow_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/user_decorators/user_step_decorator.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/metaflow/util.py +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/ob_metaflow.egg-info/dependency_links.txt +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/ob_metaflow.egg-info/entry_points.txt +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/ob_metaflow.egg-info/top_level.txt +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/setup.cfg +0 -0
- {ob_metaflow-2.16.6.5rc3 → ob_metaflow-2.16.8.1}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ob-metaflow
|
|
3
|
-
Version: 2.16.
|
|
3
|
+
Version: 2.16.8.1
|
|
4
4
|
Summary: Metaflow: More AI and ML, Less Engineering
|
|
5
5
|
Author: Netflix, Outerbounds & the Metaflow Community
|
|
6
6
|
Author-email: help@outerbounds.co
|
|
@@ -12,7 +12,7 @@ Requires-Dist: boto3
|
|
|
12
12
|
Requires-Dist: pylint
|
|
13
13
|
Requires-Dist: kubernetes
|
|
14
14
|
Provides-Extra: stubs
|
|
15
|
-
Requires-Dist: metaflow-stubs==2.16.
|
|
15
|
+
Requires-Dist: metaflow-stubs==2.16.8.1; extra == "stubs"
|
|
16
16
|
Dynamic: author
|
|
17
17
|
Dynamic: author-email
|
|
18
18
|
Dynamic: description
|
|
@@ -14,17 +14,6 @@
|
|
|
14
14
|
version_settings(constraint='>=0.22.2')
|
|
15
15
|
allow_k8s_contexts('minikube')
|
|
16
16
|
|
|
17
|
-
# Version configuration for components
|
|
18
|
-
JOBSET_VERSION = os.getenv("JOBSET_VERSION", "v0.6.0")
|
|
19
|
-
|
|
20
|
-
# Argo Workflows versions
|
|
21
|
-
ARGO_WORKFLOWS_HELM_CHART_VERSION = os.getenv("ARGO_WORKFLOWS_HELM_CHART_VERSION", "0.45.2") # Helm chart version
|
|
22
|
-
ARGO_WORKFLOWS_IMAGE_TAG = os.getenv("ARGO_WORKFLOWS_IMAGE_TAG", "v3.6.0") # Argo Workflows application version
|
|
23
|
-
|
|
24
|
-
# Argo Events versions
|
|
25
|
-
ARGO_EVENTS_HELM_CHART_VERSION = os.getenv("ARGO_EVENTS_HELM_CHART_VERSION", "2.4.8") # Helm chart version
|
|
26
|
-
ARGO_EVENTS_IMAGE_TAG = os.getenv("ARGO_EVENTS_IMAGE_TAG", "v1.9.2") # Argo Events application version
|
|
27
|
-
|
|
28
17
|
components = {
|
|
29
18
|
"metadata-service": ["postgresql"],
|
|
30
19
|
"ui": ["postgresql", "minio"],
|
|
@@ -32,10 +21,9 @@ components = {
|
|
|
32
21
|
"postgresql": [],
|
|
33
22
|
"argo-workflows": [],
|
|
34
23
|
"argo-events": ["argo-workflows"],
|
|
35
|
-
"jobset": [],
|
|
36
24
|
}
|
|
37
25
|
|
|
38
|
-
services_env = os.getenv("SERVICES", "
|
|
26
|
+
services_env = os.getenv("SERVICES", "").strip().lower()
|
|
39
27
|
|
|
40
28
|
if services_env:
|
|
41
29
|
if services_env == "all":
|
|
@@ -217,7 +205,6 @@ if "postgresql" in enabled_components:
|
|
|
217
205
|
if "argo-workflows" in enabled_components:
|
|
218
206
|
helm_remote(
|
|
219
207
|
'argo-workflows',
|
|
220
|
-
version=ARGO_WORKFLOWS_HELM_CHART_VERSION,
|
|
221
208
|
repo_name='argo',
|
|
222
209
|
repo_url='https://argoproj.github.io/argo-helm',
|
|
223
210
|
set=[
|
|
@@ -233,9 +220,7 @@ if "argo-workflows" in enabled_components:
|
|
|
233
220
|
'controller.resources.requests.memory=128Mi',
|
|
234
221
|
'controller.resources.requests.cpu=50m',
|
|
235
222
|
'controller.resources.limits.memory=256Mi',
|
|
236
|
-
'controller.resources.limits.cpu=100m'
|
|
237
|
-
# Image version overrides
|
|
238
|
-
'images.tag=%s' % ARGO_WORKFLOWS_IMAGE_TAG,
|
|
223
|
+
'controller.resources.limits.cpu=100m'
|
|
239
224
|
]
|
|
240
225
|
)
|
|
241
226
|
|
|
@@ -322,7 +307,6 @@ if "argo-workflows" in enabled_components:
|
|
|
322
307
|
if "argo-events" in enabled_components:
|
|
323
308
|
helm_remote(
|
|
324
309
|
'argo-events',
|
|
325
|
-
version=ARGO_EVENTS_HELM_CHART_VERSION,
|
|
326
310
|
repo_name='argo',
|
|
327
311
|
repo_url='https://argoproj.github.io/argo-helm',
|
|
328
312
|
set=[
|
|
@@ -350,8 +334,6 @@ if "argo-events" in enabled_components:
|
|
|
350
334
|
'configs.jetstream.versions[1].natsImage=nats:2.9.15',
|
|
351
335
|
'configs.jetstream.versions[1].startCommand=/nats-server',
|
|
352
336
|
'configs.jetstream.versions[1].version=2.9.15',
|
|
353
|
-
# Image version overrides
|
|
354
|
-
'global.image.tag=%s' % ARGO_EVENTS_IMAGE_TAG,
|
|
355
337
|
]
|
|
356
338
|
)
|
|
357
339
|
|
|
@@ -559,62 +541,6 @@ if "argo-events" in enabled_components:
|
|
|
559
541
|
config_resources.append('argo-events-controller-manager')
|
|
560
542
|
config_resources.append('argo-events-webhook-eventsource-svc')
|
|
561
543
|
|
|
562
|
-
#################################################
|
|
563
|
-
# JOBSET
|
|
564
|
-
#################################################
|
|
565
|
-
if "jobset" in enabled_components:
|
|
566
|
-
# Apply JobSet manifests directly from GitHub releases
|
|
567
|
-
jobset_manifest_url = "https://github.com/kubernetes-sigs/jobset/releases/download/%s/manifests.yaml" % JOBSET_VERSION
|
|
568
|
-
|
|
569
|
-
cmd = "curl -sSL %s" % (jobset_manifest_url)
|
|
570
|
-
k8s_yaml(
|
|
571
|
-
local(
|
|
572
|
-
cmd,
|
|
573
|
-
)
|
|
574
|
-
)
|
|
575
|
-
|
|
576
|
-
k8s_resource(
|
|
577
|
-
'jobset-controller-manager',
|
|
578
|
-
labels=['jobset'],
|
|
579
|
-
)
|
|
580
|
-
|
|
581
|
-
metaflow_config["METAFLOW_KUBERNETES_JOBSET_ENABLED"] = "true"
|
|
582
|
-
|
|
583
|
-
config_resources.append('jobset-controller-manager')
|
|
584
|
-
|
|
585
|
-
# ClusterRole for jobset operations
|
|
586
|
-
k8s_yaml(encode_yaml({
|
|
587
|
-
'apiVersion': 'rbac.authorization.k8s.io/v1',
|
|
588
|
-
'kind': 'ClusterRole',
|
|
589
|
-
'metadata': {
|
|
590
|
-
'name': 'jobset-full-access'
|
|
591
|
-
},
|
|
592
|
-
'rules': [{
|
|
593
|
-
'apiGroups': ['jobset.x-k8s.io'],
|
|
594
|
-
'resources': ['jobsets'],
|
|
595
|
-
'verbs': ['*']
|
|
596
|
-
}]
|
|
597
|
-
}))
|
|
598
|
-
|
|
599
|
-
# ClusterRoleBinding for default service account to access jobsets
|
|
600
|
-
k8s_yaml(encode_yaml({
|
|
601
|
-
'apiVersion': 'rbac.authorization.k8s.io/v1',
|
|
602
|
-
'kind': 'ClusterRoleBinding',
|
|
603
|
-
'metadata': {
|
|
604
|
-
'name': 'default-jobset-binding'
|
|
605
|
-
},
|
|
606
|
-
'subjects': [{
|
|
607
|
-
'kind': 'ServiceAccount',
|
|
608
|
-
'name': 'default',
|
|
609
|
-
'namespace': 'default'
|
|
610
|
-
}],
|
|
611
|
-
'roleRef': {
|
|
612
|
-
'kind': 'ClusterRole',
|
|
613
|
-
'name': 'jobset-full-access',
|
|
614
|
-
'apiGroup': 'rbac.authorization.k8s.io'
|
|
615
|
-
}
|
|
616
|
-
}))
|
|
617
|
-
|
|
618
544
|
#################################################
|
|
619
545
|
# METADATA SERVICE
|
|
620
546
|
#################################################
|
|
@@ -719,7 +719,7 @@ class BaseCommand(object):
|
|
|
719
719
|
prog_name=None,
|
|
720
720
|
complete_var=None,
|
|
721
721
|
standalone_mode=True,
|
|
722
|
-
**extra
|
|
722
|
+
**extra
|
|
723
723
|
):
|
|
724
724
|
"""This is the way to invoke a script with all the bells and
|
|
725
725
|
whistles as a command line application. This will always terminate
|
|
@@ -1101,7 +1101,7 @@ class MultiCommand(Command):
|
|
|
1101
1101
|
subcommand_metavar=None,
|
|
1102
1102
|
chain=False,
|
|
1103
1103
|
result_callback=None,
|
|
1104
|
-
**attrs
|
|
1104
|
+
**attrs
|
|
1105
1105
|
):
|
|
1106
1106
|
Command.__init__(self, name, **attrs)
|
|
1107
1107
|
if no_args_is_help is None:
|
|
@@ -1463,7 +1463,6 @@ class Parameter(object):
|
|
|
1463
1463
|
parameter. The old callback format will still work, but it will
|
|
1464
1464
|
raise a warning to give you a chance to migrate the code easier.
|
|
1465
1465
|
"""
|
|
1466
|
-
|
|
1467
1466
|
param_type_name = "parameter"
|
|
1468
1467
|
|
|
1469
1468
|
def __init__(
|
|
@@ -1709,7 +1708,7 @@ class Option(Parameter):
|
|
|
1709
1708
|
hidden=False,
|
|
1710
1709
|
show_choices=True,
|
|
1711
1710
|
show_envvar=False,
|
|
1712
|
-
**attrs
|
|
1711
|
+
**attrs
|
|
1713
1712
|
):
|
|
1714
1713
|
default_is_missing = attrs.get("default", _missing) is _missing
|
|
1715
1714
|
Parameter.__init__(self, param_decls, type=type, **attrs)
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
"""Recognize image file formats based on their first few bytes."""
|
|
2
2
|
|
|
3
3
|
from os import PathLike
|
|
4
|
+
import warnings
|
|
4
5
|
|
|
5
6
|
__all__ = ["what"]
|
|
6
7
|
|
|
8
|
+
|
|
9
|
+
# python-deadlib: Replace deprecation warning not to raise exception
|
|
10
|
+
warnings.warn(
|
|
11
|
+
f"{__name__} was removed in Python 3.13. "
|
|
12
|
+
f"Please be aware that you are currently NOT using standard '{__name__}', "
|
|
13
|
+
f"but instead a separately installed 'standard-{__name__}'.",
|
|
14
|
+
DeprecationWarning, stacklevel=2
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
7
18
|
#-------------------------#
|
|
8
19
|
# Recognize image headers #
|
|
9
20
|
#-------------------------#
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
|
|
2
|
+
from .error import *
|
|
3
|
+
|
|
4
|
+
from .tokens import *
|
|
5
|
+
from .events import *
|
|
6
|
+
from .nodes import *
|
|
7
|
+
|
|
8
|
+
from .loader import *
|
|
9
|
+
from .dumper import *
|
|
10
|
+
|
|
11
|
+
__version__ = '5.3.1'
|
|
12
|
+
try:
|
|
13
|
+
from .cyaml import *
|
|
14
|
+
__with_libyaml__ = True
|
|
15
|
+
except ImportError:
|
|
16
|
+
__with_libyaml__ = False
|
|
17
|
+
|
|
18
|
+
import io
|
|
19
|
+
|
|
20
|
+
#------------------------------------------------------------------------------
|
|
21
|
+
# Warnings control
|
|
22
|
+
#------------------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
# 'Global' warnings state:
|
|
25
|
+
_warnings_enabled = {
|
|
26
|
+
'YAMLLoadWarning': True,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
# Get or set global warnings' state
|
|
30
|
+
def warnings(settings=None):
|
|
31
|
+
if settings is None:
|
|
32
|
+
return _warnings_enabled
|
|
33
|
+
|
|
34
|
+
if type(settings) is dict:
|
|
35
|
+
for key in settings:
|
|
36
|
+
if key in _warnings_enabled:
|
|
37
|
+
_warnings_enabled[key] = settings[key]
|
|
38
|
+
|
|
39
|
+
# Warn when load() is called without Loader=...
|
|
40
|
+
class YAMLLoadWarning(RuntimeWarning):
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
def load_warning(method):
|
|
44
|
+
if _warnings_enabled['YAMLLoadWarning'] is False:
|
|
45
|
+
return
|
|
46
|
+
|
|
47
|
+
import warnings
|
|
48
|
+
|
|
49
|
+
message = (
|
|
50
|
+
"calling yaml.%s() without Loader=... is deprecated, as the "
|
|
51
|
+
"default Loader is unsafe. Please read "
|
|
52
|
+
"https://msg.pyyaml.org/load for full details."
|
|
53
|
+
) % method
|
|
54
|
+
|
|
55
|
+
warnings.warn(message, YAMLLoadWarning, stacklevel=3)
|
|
56
|
+
|
|
57
|
+
#------------------------------------------------------------------------------
|
|
58
|
+
def scan(stream, Loader=Loader):
|
|
59
|
+
"""
|
|
60
|
+
Scan a YAML stream and produce scanning tokens.
|
|
61
|
+
"""
|
|
62
|
+
loader = Loader(stream)
|
|
63
|
+
try:
|
|
64
|
+
while loader.check_token():
|
|
65
|
+
yield loader.get_token()
|
|
66
|
+
finally:
|
|
67
|
+
loader.dispose()
|
|
68
|
+
|
|
69
|
+
def parse(stream, Loader=Loader):
|
|
70
|
+
"""
|
|
71
|
+
Parse a YAML stream and produce parsing events.
|
|
72
|
+
"""
|
|
73
|
+
loader = Loader(stream)
|
|
74
|
+
try:
|
|
75
|
+
while loader.check_event():
|
|
76
|
+
yield loader.get_event()
|
|
77
|
+
finally:
|
|
78
|
+
loader.dispose()
|
|
79
|
+
|
|
80
|
+
def compose(stream, Loader=Loader):
|
|
81
|
+
"""
|
|
82
|
+
Parse the first YAML document in a stream
|
|
83
|
+
and produce the corresponding representation tree.
|
|
84
|
+
"""
|
|
85
|
+
loader = Loader(stream)
|
|
86
|
+
try:
|
|
87
|
+
return loader.get_single_node()
|
|
88
|
+
finally:
|
|
89
|
+
loader.dispose()
|
|
90
|
+
|
|
91
|
+
def compose_all(stream, Loader=Loader):
|
|
92
|
+
"""
|
|
93
|
+
Parse all YAML documents in a stream
|
|
94
|
+
and produce corresponding representation trees.
|
|
95
|
+
"""
|
|
96
|
+
loader = Loader(stream)
|
|
97
|
+
try:
|
|
98
|
+
while loader.check_node():
|
|
99
|
+
yield loader.get_node()
|
|
100
|
+
finally:
|
|
101
|
+
loader.dispose()
|
|
102
|
+
|
|
103
|
+
def load(stream, Loader=None):
|
|
104
|
+
"""
|
|
105
|
+
Parse the first YAML document in a stream
|
|
106
|
+
and produce the corresponding Python object.
|
|
107
|
+
"""
|
|
108
|
+
if Loader is None:
|
|
109
|
+
load_warning('load')
|
|
110
|
+
Loader = FullLoader
|
|
111
|
+
|
|
112
|
+
loader = Loader(stream)
|
|
113
|
+
try:
|
|
114
|
+
return loader.get_single_data()
|
|
115
|
+
finally:
|
|
116
|
+
loader.dispose()
|
|
117
|
+
|
|
118
|
+
def load_all(stream, Loader=None):
|
|
119
|
+
"""
|
|
120
|
+
Parse all YAML documents in a stream
|
|
121
|
+
and produce corresponding Python objects.
|
|
122
|
+
"""
|
|
123
|
+
if Loader is None:
|
|
124
|
+
load_warning('load_all')
|
|
125
|
+
Loader = FullLoader
|
|
126
|
+
|
|
127
|
+
loader = Loader(stream)
|
|
128
|
+
try:
|
|
129
|
+
while loader.check_data():
|
|
130
|
+
yield loader.get_data()
|
|
131
|
+
finally:
|
|
132
|
+
loader.dispose()
|
|
133
|
+
|
|
134
|
+
def full_load(stream):
|
|
135
|
+
"""
|
|
136
|
+
Parse the first YAML document in a stream
|
|
137
|
+
and produce the corresponding Python object.
|
|
138
|
+
|
|
139
|
+
Resolve all tags except those known to be
|
|
140
|
+
unsafe on untrusted input.
|
|
141
|
+
"""
|
|
142
|
+
return load(stream, FullLoader)
|
|
143
|
+
|
|
144
|
+
def full_load_all(stream):
|
|
145
|
+
"""
|
|
146
|
+
Parse all YAML documents in a stream
|
|
147
|
+
and produce corresponding Python objects.
|
|
148
|
+
|
|
149
|
+
Resolve all tags except those known to be
|
|
150
|
+
unsafe on untrusted input.
|
|
151
|
+
"""
|
|
152
|
+
return load_all(stream, FullLoader)
|
|
153
|
+
|
|
154
|
+
def safe_load(stream):
|
|
155
|
+
"""
|
|
156
|
+
Parse the first YAML document in a stream
|
|
157
|
+
and produce the corresponding Python object.
|
|
158
|
+
|
|
159
|
+
Resolve only basic YAML tags. This is known
|
|
160
|
+
to be safe for untrusted input.
|
|
161
|
+
"""
|
|
162
|
+
return load(stream, SafeLoader)
|
|
163
|
+
|
|
164
|
+
def safe_load_all(stream):
|
|
165
|
+
"""
|
|
166
|
+
Parse all YAML documents in a stream
|
|
167
|
+
and produce corresponding Python objects.
|
|
168
|
+
|
|
169
|
+
Resolve only basic YAML tags. This is known
|
|
170
|
+
to be safe for untrusted input.
|
|
171
|
+
"""
|
|
172
|
+
return load_all(stream, SafeLoader)
|
|
173
|
+
|
|
174
|
+
def unsafe_load(stream):
|
|
175
|
+
"""
|
|
176
|
+
Parse the first YAML document in a stream
|
|
177
|
+
and produce the corresponding Python object.
|
|
178
|
+
|
|
179
|
+
Resolve all tags, even those known to be
|
|
180
|
+
unsafe on untrusted input.
|
|
181
|
+
"""
|
|
182
|
+
return load(stream, UnsafeLoader)
|
|
183
|
+
|
|
184
|
+
def unsafe_load_all(stream):
|
|
185
|
+
"""
|
|
186
|
+
Parse all YAML documents in a stream
|
|
187
|
+
and produce corresponding Python objects.
|
|
188
|
+
|
|
189
|
+
Resolve all tags, even those known to be
|
|
190
|
+
unsafe on untrusted input.
|
|
191
|
+
"""
|
|
192
|
+
return load_all(stream, UnsafeLoader)
|
|
193
|
+
|
|
194
|
+
def emit(events, stream=None, Dumper=Dumper,
|
|
195
|
+
canonical=None, indent=None, width=None,
|
|
196
|
+
allow_unicode=None, line_break=None):
|
|
197
|
+
"""
|
|
198
|
+
Emit YAML parsing events into a stream.
|
|
199
|
+
If stream is None, return the produced string instead.
|
|
200
|
+
"""
|
|
201
|
+
getvalue = None
|
|
202
|
+
if stream is None:
|
|
203
|
+
stream = io.StringIO()
|
|
204
|
+
getvalue = stream.getvalue
|
|
205
|
+
dumper = Dumper(stream, canonical=canonical, indent=indent, width=width,
|
|
206
|
+
allow_unicode=allow_unicode, line_break=line_break)
|
|
207
|
+
try:
|
|
208
|
+
for event in events:
|
|
209
|
+
dumper.emit(event)
|
|
210
|
+
finally:
|
|
211
|
+
dumper.dispose()
|
|
212
|
+
if getvalue:
|
|
213
|
+
return getvalue()
|
|
214
|
+
|
|
215
|
+
def serialize_all(nodes, stream=None, Dumper=Dumper,
|
|
216
|
+
canonical=None, indent=None, width=None,
|
|
217
|
+
allow_unicode=None, line_break=None,
|
|
218
|
+
encoding=None, explicit_start=None, explicit_end=None,
|
|
219
|
+
version=None, tags=None):
|
|
220
|
+
"""
|
|
221
|
+
Serialize a sequence of representation trees into a YAML stream.
|
|
222
|
+
If stream is None, return the produced string instead.
|
|
223
|
+
"""
|
|
224
|
+
getvalue = None
|
|
225
|
+
if stream is None:
|
|
226
|
+
if encoding is None:
|
|
227
|
+
stream = io.StringIO()
|
|
228
|
+
else:
|
|
229
|
+
stream = io.BytesIO()
|
|
230
|
+
getvalue = stream.getvalue
|
|
231
|
+
dumper = Dumper(stream, canonical=canonical, indent=indent, width=width,
|
|
232
|
+
allow_unicode=allow_unicode, line_break=line_break,
|
|
233
|
+
encoding=encoding, version=version, tags=tags,
|
|
234
|
+
explicit_start=explicit_start, explicit_end=explicit_end)
|
|
235
|
+
try:
|
|
236
|
+
dumper.open()
|
|
237
|
+
for node in nodes:
|
|
238
|
+
dumper.serialize(node)
|
|
239
|
+
dumper.close()
|
|
240
|
+
finally:
|
|
241
|
+
dumper.dispose()
|
|
242
|
+
if getvalue:
|
|
243
|
+
return getvalue()
|
|
244
|
+
|
|
245
|
+
def serialize(node, stream=None, Dumper=Dumper, **kwds):
|
|
246
|
+
"""
|
|
247
|
+
Serialize a representation tree into a YAML stream.
|
|
248
|
+
If stream is None, return the produced string instead.
|
|
249
|
+
"""
|
|
250
|
+
return serialize_all([node], stream, Dumper=Dumper, **kwds)
|
|
251
|
+
|
|
252
|
+
def dump_all(documents, stream=None, Dumper=Dumper,
|
|
253
|
+
default_style=None, default_flow_style=False,
|
|
254
|
+
canonical=None, indent=None, width=None,
|
|
255
|
+
allow_unicode=None, line_break=None,
|
|
256
|
+
encoding=None, explicit_start=None, explicit_end=None,
|
|
257
|
+
version=None, tags=None, sort_keys=True):
|
|
258
|
+
"""
|
|
259
|
+
Serialize a sequence of Python objects into a YAML stream.
|
|
260
|
+
If stream is None, return the produced string instead.
|
|
261
|
+
"""
|
|
262
|
+
getvalue = None
|
|
263
|
+
if stream is None:
|
|
264
|
+
if encoding is None:
|
|
265
|
+
stream = io.StringIO()
|
|
266
|
+
else:
|
|
267
|
+
stream = io.BytesIO()
|
|
268
|
+
getvalue = stream.getvalue
|
|
269
|
+
dumper = Dumper(stream, default_style=default_style,
|
|
270
|
+
default_flow_style=default_flow_style,
|
|
271
|
+
canonical=canonical, indent=indent, width=width,
|
|
272
|
+
allow_unicode=allow_unicode, line_break=line_break,
|
|
273
|
+
encoding=encoding, version=version, tags=tags,
|
|
274
|
+
explicit_start=explicit_start, explicit_end=explicit_end, sort_keys=sort_keys)
|
|
275
|
+
try:
|
|
276
|
+
dumper.open()
|
|
277
|
+
for data in documents:
|
|
278
|
+
dumper.represent(data)
|
|
279
|
+
dumper.close()
|
|
280
|
+
finally:
|
|
281
|
+
dumper.dispose()
|
|
282
|
+
if getvalue:
|
|
283
|
+
return getvalue()
|
|
284
|
+
|
|
285
|
+
def dump(data, stream=None, Dumper=Dumper, **kwds):
|
|
286
|
+
"""
|
|
287
|
+
Serialize a Python object into a YAML stream.
|
|
288
|
+
If stream is None, return the produced string instead.
|
|
289
|
+
"""
|
|
290
|
+
return dump_all([data], stream, Dumper=Dumper, **kwds)
|
|
291
|
+
|
|
292
|
+
def safe_dump_all(documents, stream=None, **kwds):
|
|
293
|
+
"""
|
|
294
|
+
Serialize a sequence of Python objects into a YAML stream.
|
|
295
|
+
Produce only basic YAML tags.
|
|
296
|
+
If stream is None, return the produced string instead.
|
|
297
|
+
"""
|
|
298
|
+
return dump_all(documents, stream, Dumper=SafeDumper, **kwds)
|
|
299
|
+
|
|
300
|
+
def safe_dump(data, stream=None, **kwds):
|
|
301
|
+
"""
|
|
302
|
+
Serialize a Python object into a YAML stream.
|
|
303
|
+
Produce only basic YAML tags.
|
|
304
|
+
If stream is None, return the produced string instead.
|
|
305
|
+
"""
|
|
306
|
+
return dump_all([data], stream, Dumper=SafeDumper, **kwds)
|
|
307
|
+
|
|
308
|
+
def add_implicit_resolver(tag, regexp, first=None,
|
|
309
|
+
Loader=None, Dumper=Dumper):
|
|
310
|
+
"""
|
|
311
|
+
Add an implicit scalar detector.
|
|
312
|
+
If an implicit scalar value matches the given regexp,
|
|
313
|
+
the corresponding tag is assigned to the scalar.
|
|
314
|
+
first is a sequence of possible initial characters or None.
|
|
315
|
+
"""
|
|
316
|
+
if Loader is None:
|
|
317
|
+
loader.Loader.add_implicit_resolver(tag, regexp, first)
|
|
318
|
+
loader.FullLoader.add_implicit_resolver(tag, regexp, first)
|
|
319
|
+
loader.UnsafeLoader.add_implicit_resolver(tag, regexp, first)
|
|
320
|
+
else:
|
|
321
|
+
Loader.add_implicit_resolver(tag, regexp, first)
|
|
322
|
+
Dumper.add_implicit_resolver(tag, regexp, first)
|
|
323
|
+
|
|
324
|
+
def add_path_resolver(tag, path, kind=None, Loader=None, Dumper=Dumper):
|
|
325
|
+
"""
|
|
326
|
+
Add a path based resolver for the given tag.
|
|
327
|
+
A path is a list of keys that forms a path
|
|
328
|
+
to a node in the representation tree.
|
|
329
|
+
Keys can be string values, integers, or None.
|
|
330
|
+
"""
|
|
331
|
+
if Loader is None:
|
|
332
|
+
loader.Loader.add_path_resolver(tag, path, kind)
|
|
333
|
+
loader.FullLoader.add_path_resolver(tag, path, kind)
|
|
334
|
+
loader.UnsafeLoader.add_path_resolver(tag, path, kind)
|
|
335
|
+
else:
|
|
336
|
+
Loader.add_path_resolver(tag, path, kind)
|
|
337
|
+
Dumper.add_path_resolver(tag, path, kind)
|
|
338
|
+
|
|
339
|
+
def add_constructor(tag, constructor, Loader=None):
|
|
340
|
+
"""
|
|
341
|
+
Add a constructor for the given tag.
|
|
342
|
+
Constructor is a function that accepts a Loader instance
|
|
343
|
+
and a node object and produces the corresponding Python object.
|
|
344
|
+
"""
|
|
345
|
+
if Loader is None:
|
|
346
|
+
loader.Loader.add_constructor(tag, constructor)
|
|
347
|
+
loader.FullLoader.add_constructor(tag, constructor)
|
|
348
|
+
loader.UnsafeLoader.add_constructor(tag, constructor)
|
|
349
|
+
else:
|
|
350
|
+
Loader.add_constructor(tag, constructor)
|
|
351
|
+
|
|
352
|
+
def add_multi_constructor(tag_prefix, multi_constructor, Loader=None):
|
|
353
|
+
"""
|
|
354
|
+
Add a multi-constructor for the given tag prefix.
|
|
355
|
+
Multi-constructor is called for a node if its tag starts with tag_prefix.
|
|
356
|
+
Multi-constructor accepts a Loader instance, a tag suffix,
|
|
357
|
+
and a node object and produces the corresponding Python object.
|
|
358
|
+
"""
|
|
359
|
+
if Loader is None:
|
|
360
|
+
loader.Loader.add_multi_constructor(tag_prefix, multi_constructor)
|
|
361
|
+
loader.FullLoader.add_multi_constructor(tag_prefix, multi_constructor)
|
|
362
|
+
loader.UnsafeLoader.add_multi_constructor(tag_prefix, multi_constructor)
|
|
363
|
+
else:
|
|
364
|
+
Loader.add_multi_constructor(tag_prefix, multi_constructor)
|
|
365
|
+
|
|
366
|
+
def add_representer(data_type, representer, Dumper=Dumper):
|
|
367
|
+
"""
|
|
368
|
+
Add a representer for the given type.
|
|
369
|
+
Representer is a function accepting a Dumper instance
|
|
370
|
+
and an instance of the given data type
|
|
371
|
+
and producing the corresponding representation node.
|
|
372
|
+
"""
|
|
373
|
+
Dumper.add_representer(data_type, representer)
|
|
374
|
+
|
|
375
|
+
def add_multi_representer(data_type, multi_representer, Dumper=Dumper):
|
|
376
|
+
"""
|
|
377
|
+
Add a representer for the given type.
|
|
378
|
+
Multi-representer is a function accepting a Dumper instance
|
|
379
|
+
and an instance of the given data type or subtype
|
|
380
|
+
and producing the corresponding representation node.
|
|
381
|
+
"""
|
|
382
|
+
Dumper.add_multi_representer(data_type, multi_representer)
|
|
383
|
+
|
|
384
|
+
class YAMLObjectMetaclass(type):
|
|
385
|
+
"""
|
|
386
|
+
The metaclass for YAMLObject.
|
|
387
|
+
"""
|
|
388
|
+
def __init__(cls, name, bases, kwds):
|
|
389
|
+
super(YAMLObjectMetaclass, cls).__init__(name, bases, kwds)
|
|
390
|
+
if 'yaml_tag' in kwds and kwds['yaml_tag'] is not None:
|
|
391
|
+
if isinstance(cls.yaml_loader, list):
|
|
392
|
+
for loader in cls.yaml_loader:
|
|
393
|
+
loader.add_constructor(cls.yaml_tag, cls.from_yaml)
|
|
394
|
+
else:
|
|
395
|
+
cls.yaml_loader.add_constructor(cls.yaml_tag, cls.from_yaml)
|
|
396
|
+
|
|
397
|
+
cls.yaml_dumper.add_representer(cls, cls.to_yaml)
|
|
398
|
+
|
|
399
|
+
class YAMLObject(metaclass=YAMLObjectMetaclass):
|
|
400
|
+
"""
|
|
401
|
+
An object that can dump itself to a YAML stream
|
|
402
|
+
and load itself from a YAML stream.
|
|
403
|
+
"""
|
|
404
|
+
|
|
405
|
+
__slots__ = () # no direct instantiation, so allow immutable subclasses
|
|
406
|
+
|
|
407
|
+
yaml_loader = [Loader, FullLoader, UnsafeLoader]
|
|
408
|
+
yaml_dumper = Dumper
|
|
409
|
+
|
|
410
|
+
yaml_tag = None
|
|
411
|
+
yaml_flow_style = None
|
|
412
|
+
|
|
413
|
+
@classmethod
|
|
414
|
+
def from_yaml(cls, loader, node):
|
|
415
|
+
"""
|
|
416
|
+
Convert a representation node to a Python object.
|
|
417
|
+
"""
|
|
418
|
+
return loader.construct_yaml_object(node, cls)
|
|
419
|
+
|
|
420
|
+
@classmethod
|
|
421
|
+
def to_yaml(cls, dumper, data):
|
|
422
|
+
"""
|
|
423
|
+
Convert a Python object to a representation node.
|
|
424
|
+
"""
|
|
425
|
+
return dumper.represent_yaml_object(cls.yaml_tag, data, cls,
|
|
426
|
+
flow_style=cls.yaml_flow_style)
|
|
427
|
+
|