ob-metaflow 2.12.30.2__py2.py3-none-any.whl → 2.13.6.1__py2.py3-none-any.whl
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.
- metaflow/__init__.py +3 -0
- metaflow/cards.py +1 -0
- metaflow/cli.py +185 -717
- metaflow/cli_args.py +17 -0
- metaflow/cli_components/__init__.py +0 -0
- metaflow/cli_components/dump_cmd.py +96 -0
- metaflow/cli_components/init_cmd.py +51 -0
- metaflow/cli_components/run_cmds.py +362 -0
- metaflow/cli_components/step_cmd.py +176 -0
- metaflow/cli_components/utils.py +140 -0
- metaflow/cmd/develop/stub_generator.py +9 -2
- metaflow/datastore/flow_datastore.py +2 -2
- metaflow/decorators.py +63 -2
- metaflow/exception.py +8 -2
- metaflow/extension_support/plugins.py +42 -27
- metaflow/flowspec.py +176 -23
- metaflow/graph.py +28 -27
- metaflow/includefile.py +50 -22
- metaflow/lint.py +35 -20
- metaflow/metadata_provider/heartbeat.py +23 -8
- metaflow/metaflow_config.py +10 -1
- metaflow/multicore_utils.py +31 -14
- metaflow/package.py +17 -3
- metaflow/parameters.py +97 -25
- metaflow/plugins/__init__.py +22 -0
- metaflow/plugins/airflow/airflow.py +18 -17
- metaflow/plugins/airflow/airflow_cli.py +1 -0
- metaflow/plugins/argo/argo_client.py +0 -2
- metaflow/plugins/argo/argo_workflows.py +195 -132
- metaflow/plugins/argo/argo_workflows_cli.py +1 -1
- metaflow/plugins/argo/argo_workflows_decorator.py +2 -4
- metaflow/plugins/argo/argo_workflows_deployer_objects.py +51 -9
- metaflow/plugins/argo/jobset_input_paths.py +0 -1
- metaflow/plugins/aws/aws_utils.py +6 -1
- metaflow/plugins/aws/batch/batch_client.py +1 -3
- metaflow/plugins/aws/batch/batch_decorator.py +13 -13
- metaflow/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.py +13 -10
- metaflow/plugins/aws/step_functions/dynamo_db_client.py +0 -3
- metaflow/plugins/aws/step_functions/production_token.py +1 -1
- metaflow/plugins/aws/step_functions/step_functions.py +33 -1
- metaflow/plugins/aws/step_functions/step_functions_cli.py +1 -1
- metaflow/plugins/aws/step_functions/step_functions_decorator.py +0 -1
- metaflow/plugins/aws/step_functions/step_functions_deployer_objects.py +7 -9
- metaflow/plugins/cards/card_cli.py +7 -2
- metaflow/plugins/cards/card_creator.py +1 -0
- metaflow/plugins/cards/card_decorator.py +79 -8
- metaflow/plugins/cards/card_modules/basic.py +56 -5
- metaflow/plugins/cards/card_modules/card.py +16 -1
- metaflow/plugins/cards/card_modules/components.py +64 -16
- metaflow/plugins/cards/card_modules/main.js +27 -25
- metaflow/plugins/cards/card_modules/test_cards.py +4 -4
- metaflow/plugins/cards/component_serializer.py +1 -1
- metaflow/plugins/datatools/s3/s3.py +12 -4
- metaflow/plugins/datatools/s3/s3op.py +3 -3
- metaflow/plugins/events_decorator.py +338 -186
- metaflow/plugins/kubernetes/kube_utils.py +84 -1
- metaflow/plugins/kubernetes/kubernetes.py +40 -92
- metaflow/plugins/kubernetes/kubernetes_cli.py +32 -7
- metaflow/plugins/kubernetes/kubernetes_decorator.py +76 -4
- metaflow/plugins/kubernetes/kubernetes_job.py +23 -20
- metaflow/plugins/kubernetes/kubernetes_jobsets.py +41 -20
- metaflow/plugins/kubernetes/spot_metadata_cli.py +69 -0
- metaflow/plugins/kubernetes/spot_monitor_sidecar.py +109 -0
- metaflow/plugins/parallel_decorator.py +4 -1
- metaflow/plugins/project_decorator.py +33 -5
- metaflow/plugins/pypi/bootstrap.py +249 -81
- metaflow/plugins/pypi/conda_decorator.py +20 -10
- metaflow/plugins/pypi/conda_environment.py +83 -27
- metaflow/plugins/pypi/micromamba.py +82 -37
- metaflow/plugins/pypi/pip.py +9 -6
- metaflow/plugins/pypi/pypi_decorator.py +11 -9
- metaflow/plugins/pypi/utils.py +4 -2
- metaflow/plugins/timeout_decorator.py +2 -2
- metaflow/runner/click_api.py +240 -50
- metaflow/runner/deployer.py +1 -1
- metaflow/runner/deployer_impl.py +12 -11
- metaflow/runner/metaflow_runner.py +68 -34
- metaflow/runner/nbdeploy.py +2 -0
- metaflow/runner/nbrun.py +1 -1
- metaflow/runner/subprocess_manager.py +61 -10
- metaflow/runner/utils.py +208 -44
- metaflow/runtime.py +216 -112
- metaflow/sidecar/sidecar_worker.py +1 -1
- metaflow/tracing/tracing_modules.py +4 -1
- metaflow/user_configs/__init__.py +0 -0
- metaflow/user_configs/config_decorators.py +563 -0
- metaflow/user_configs/config_options.py +548 -0
- metaflow/user_configs/config_parameters.py +436 -0
- metaflow/util.py +22 -0
- metaflow/version.py +1 -1
- {ob_metaflow-2.12.30.2.dist-info → ob_metaflow-2.13.6.1.dist-info}/METADATA +12 -3
- {ob_metaflow-2.12.30.2.dist-info → ob_metaflow-2.13.6.1.dist-info}/RECORD +96 -84
- {ob_metaflow-2.12.30.2.dist-info → ob_metaflow-2.13.6.1.dist-info}/WHEEL +1 -1
- {ob_metaflow-2.12.30.2.dist-info → ob_metaflow-2.13.6.1.dist-info}/LICENSE +0 -0
- {ob_metaflow-2.12.30.2.dist-info → ob_metaflow-2.13.6.1.dist-info}/entry_points.txt +0 -0
- {ob_metaflow-2.12.30.2.dist-info → ob_metaflow-2.13.6.1.dist-info}/top_level.txt +0 -0
|
@@ -38,7 +38,7 @@ class TestEditableCard(MetaflowCard):
|
|
|
38
38
|
|
|
39
39
|
ALLOW_USER_COMPONENTS = True
|
|
40
40
|
|
|
41
|
-
def __init__(self,
|
|
41
|
+
def __init__(self, components=[], **kwargs):
|
|
42
42
|
self._components = components
|
|
43
43
|
|
|
44
44
|
def render(self, task):
|
|
@@ -52,7 +52,7 @@ class TestEditableCard2(MetaflowCard):
|
|
|
52
52
|
|
|
53
53
|
ALLOW_USER_COMPONENTS = True
|
|
54
54
|
|
|
55
|
-
def __init__(self,
|
|
55
|
+
def __init__(self, components=[], **kwargs):
|
|
56
56
|
self._components = components
|
|
57
57
|
|
|
58
58
|
def render(self, task):
|
|
@@ -64,7 +64,7 @@ class TestNonEditableCard(MetaflowCard):
|
|
|
64
64
|
|
|
65
65
|
seperator = "$&#!!@*"
|
|
66
66
|
|
|
67
|
-
def __init__(self,
|
|
67
|
+
def __init__(self, components=[], **kwargs):
|
|
68
68
|
self._components = components
|
|
69
69
|
|
|
70
70
|
def render(self, task):
|
|
@@ -193,7 +193,7 @@ class TestRefreshComponentCard(MetaflowCard):
|
|
|
193
193
|
|
|
194
194
|
type = "test_component_refresh_card"
|
|
195
195
|
|
|
196
|
-
def __init__(self,
|
|
196
|
+
def __init__(self, components=[], **kwargs):
|
|
197
197
|
self._components = components
|
|
198
198
|
|
|
199
199
|
def render(self, task) -> str:
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
from .card_modules import MetaflowCardComponent
|
|
2
|
+
from .card_modules.card import create_component_id
|
|
2
3
|
from .card_modules.basic import ErrorComponent, SectionComponent
|
|
3
4
|
from .card_modules.components import (
|
|
4
5
|
UserComponent,
|
|
5
|
-
create_component_id,
|
|
6
6
|
StubComponent,
|
|
7
7
|
)
|
|
8
8
|
from .exception import ComponentOverwriteNotSupportedException
|
|
@@ -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 = {}
|
|
@@ -722,8 +722,8 @@ def cli():
|
|
|
722
722
|
pass
|
|
723
723
|
|
|
724
724
|
|
|
725
|
-
@tracing.cli_entrypoint("s3op/list")
|
|
726
725
|
@cli.command("list", help="List S3 objects")
|
|
726
|
+
@tracing.cli_entrypoint("s3op/list")
|
|
727
727
|
@click.option(
|
|
728
728
|
"--recursive/--no-recursive",
|
|
729
729
|
default=False,
|
|
@@ -782,8 +782,8 @@ def lst(
|
|
|
782
782
|
print(format_result_line(idx, url.prefix, url.url, str(size)))
|
|
783
783
|
|
|
784
784
|
|
|
785
|
-
@tracing.cli_entrypoint("s3op/put")
|
|
786
785
|
@cli.command(help="Upload files to S3")
|
|
786
|
+
@tracing.cli_entrypoint("s3op/put")
|
|
787
787
|
@click.option(
|
|
788
788
|
"--file",
|
|
789
789
|
"files",
|
|
@@ -977,8 +977,8 @@ def _populate_prefixes(prefixes, inputs):
|
|
|
977
977
|
return prefixes, is_transient_retry
|
|
978
978
|
|
|
979
979
|
|
|
980
|
-
@tracing.cli_entrypoint("s3op/get")
|
|
981
980
|
@cli.command(help="Download files from S3")
|
|
981
|
+
@tracing.cli_entrypoint("s3op/get")
|
|
982
982
|
@click.option(
|
|
983
983
|
"--recursive/--no-recursive",
|
|
984
984
|
default=False,
|