metaflow 2.15.15__py2.py3-none-any.whl → 2.15.16__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.
- metaflow/cmd/develop/stub_generator.py +30 -16
- metaflow/plugins/argo/argo_workflows_deployer_objects.py +6 -49
- metaflow/plugins/aws/aws_client.py +6 -0
- metaflow/plugins/datatools/s3/s3op.py +1 -1
- metaflow/plugins/metadata_providers/service.py +12 -8
- metaflow/runner/deployer.py +49 -0
- metaflow/version.py +1 -1
- {metaflow-2.15.15.dist-info → metaflow-2.15.16.dist-info}/METADATA +2 -2
- {metaflow-2.15.15.dist-info → metaflow-2.15.16.dist-info}/RECORD +16 -16
- {metaflow-2.15.15.data → metaflow-2.15.16.data}/data/share/metaflow/devtools/Makefile +0 -0
- {metaflow-2.15.15.data → metaflow-2.15.16.data}/data/share/metaflow/devtools/Tiltfile +0 -0
- {metaflow-2.15.15.data → metaflow-2.15.16.data}/data/share/metaflow/devtools/pick_services.sh +0 -0
- {metaflow-2.15.15.dist-info → metaflow-2.15.16.dist-info}/WHEEL +0 -0
- {metaflow-2.15.15.dist-info → metaflow-2.15.16.dist-info}/entry_points.txt +0 -0
- {metaflow-2.15.15.dist-info → metaflow-2.15.16.dist-info}/licenses/LICENSE +0 -0
- {metaflow-2.15.15.dist-info → metaflow-2.15.16.dist-info}/top_level.txt +0 -0
@@ -488,9 +488,6 @@ class StubGenerator:
|
|
488
488
|
self._imports.add(name)
|
489
489
|
|
490
490
|
def _add_to_typing_check(name, is_module=False):
|
491
|
-
# if name != self._current_module_name:
|
492
|
-
# self._typing_imports.add(name)
|
493
|
-
#
|
494
491
|
if name == "None":
|
495
492
|
return
|
496
493
|
if is_module:
|
@@ -504,6 +501,24 @@ class StubGenerator:
|
|
504
501
|
# the current file
|
505
502
|
self._typing_imports.add(splits[0])
|
506
503
|
|
504
|
+
def _format_qualified_class_name(cls: type) -> str:
|
505
|
+
"""Helper to format a class with its qualified module name"""
|
506
|
+
# Special case for NoneType - return None
|
507
|
+
if cls.__name__ == "NoneType":
|
508
|
+
return "None"
|
509
|
+
|
510
|
+
module = inspect.getmodule(cls)
|
511
|
+
if (
|
512
|
+
module
|
513
|
+
and module.__name__ != "builtins"
|
514
|
+
and module.__name__ != "__main__"
|
515
|
+
):
|
516
|
+
module_name = self._get_module_name_alias(module.__name__)
|
517
|
+
_add_to_typing_check(module_name, is_module=True)
|
518
|
+
return f"{module_name}.{cls.__name__}"
|
519
|
+
else:
|
520
|
+
return cls.__name__
|
521
|
+
|
507
522
|
if isinstance(element, str):
|
508
523
|
# Special case for self referential things (particularly in a class)
|
509
524
|
if element == self._current_name:
|
@@ -557,19 +572,15 @@ class StubGenerator:
|
|
557
572
|
return element.__name__
|
558
573
|
elif isinstance(element, type(Ellipsis)):
|
559
574
|
return "..."
|
560
|
-
# elif (
|
561
|
-
# isinstance(element, typing._GenericAlias)
|
562
|
-
# and hasattr(element, "_name")
|
563
|
-
# and element._name in ("List", "Tuple", "Dict", "Set")
|
564
|
-
# ):
|
565
|
-
# # 3.7 has these as _GenericAlias but they don't behave like the ones in 3.10
|
566
|
-
# _add_to_import("typing")
|
567
|
-
# return str(element)
|
568
575
|
elif isinstance(element, typing._GenericAlias):
|
569
576
|
# We need to check things recursively in __args__ if it exists
|
570
577
|
args_str = []
|
571
578
|
for arg in getattr(element, "__args__", []):
|
572
|
-
|
579
|
+
# Special handling for class objects in type arguments
|
580
|
+
if isinstance(arg, type):
|
581
|
+
args_str.append(_format_qualified_class_name(arg))
|
582
|
+
else:
|
583
|
+
args_str.append(self._get_element_name_with_module(arg))
|
573
584
|
|
574
585
|
_add_to_import("typing")
|
575
586
|
if element._name:
|
@@ -584,12 +595,15 @@ class StubGenerator:
|
|
584
595
|
args_str = [call_args, args_str[-1]]
|
585
596
|
return "typing.%s[%s]" % (element._name, ", ".join(args_str))
|
586
597
|
else:
|
587
|
-
|
598
|
+
# Handle the case where we have a generic type without a _name
|
599
|
+
origin = element.__origin__
|
600
|
+
if isinstance(origin, type):
|
601
|
+
origin_str = _format_qualified_class_name(origin)
|
602
|
+
else:
|
603
|
+
origin_str = str(origin)
|
604
|
+
return "%s[%s]" % (origin_str, ", ".join(args_str))
|
588
605
|
elif isinstance(element, ForwardRef):
|
589
606
|
f_arg = self._get_module_name_alias(element.__forward_arg__)
|
590
|
-
# if f_arg in ("Run", "Task"): # HACK -- forward references in current.py
|
591
|
-
# _add_to_import("metaflow")
|
592
|
-
# f_arg = "metaflow.%s" % f_arg
|
593
607
|
_add_to_typing_check(f_arg)
|
594
608
|
return '"%s"' % f_arg
|
595
609
|
elif inspect.getmodule(element) == inspect.getmodule(typing):
|
@@ -9,59 +9,16 @@ from metaflow.exception import MetaflowException
|
|
9
9
|
from metaflow.plugins.argo.argo_client import ArgoClient
|
10
10
|
from metaflow.metaflow_config import KUBERNETES_NAMESPACE
|
11
11
|
from metaflow.plugins.argo.argo_workflows import ArgoWorkflows
|
12
|
-
from metaflow.runner.deployer import
|
12
|
+
from metaflow.runner.deployer import (
|
13
|
+
Deployer,
|
14
|
+
DeployedFlow,
|
15
|
+
TriggeredRun,
|
16
|
+
generate_fake_flow_file_contents,
|
17
|
+
)
|
13
18
|
|
14
19
|
from metaflow.runner.utils import get_lower_level_group, handle_timeout, temporary_fifo
|
15
20
|
|
16
21
|
|
17
|
-
def generate_fake_flow_file_contents(
|
18
|
-
flow_name: str, param_info: dict, project_name: Optional[str] = None
|
19
|
-
):
|
20
|
-
params_code = ""
|
21
|
-
for _, param_details in param_info.items():
|
22
|
-
param_python_var_name = param_details["python_var_name"]
|
23
|
-
param_name = param_details["name"]
|
24
|
-
param_type = param_details["type"]
|
25
|
-
param_help = param_details["description"]
|
26
|
-
param_required = param_details["is_required"]
|
27
|
-
|
28
|
-
if param_type == "JSON":
|
29
|
-
params_code += (
|
30
|
-
f" {param_python_var_name} = Parameter('{param_name}', "
|
31
|
-
f"type=JSONType, help='''{param_help}''', required={param_required})\n"
|
32
|
-
)
|
33
|
-
elif param_type == "FilePath":
|
34
|
-
is_text = param_details.get("is_text", True)
|
35
|
-
encoding = param_details.get("encoding", "utf-8")
|
36
|
-
params_code += (
|
37
|
-
f" {param_python_var_name} = IncludeFile('{param_name}', "
|
38
|
-
f"is_text={is_text}, encoding='{encoding}', help='''{param_help}''', "
|
39
|
-
f"required={param_required})\n"
|
40
|
-
)
|
41
|
-
else:
|
42
|
-
params_code += (
|
43
|
-
f" {param_python_var_name} = Parameter('{param_name}', "
|
44
|
-
f"type={param_type}, help='''{param_help}''', required={param_required})\n"
|
45
|
-
)
|
46
|
-
|
47
|
-
project_decorator = f"@project(name='{project_name}')\n" if project_name else ""
|
48
|
-
|
49
|
-
contents = f"""\
|
50
|
-
from metaflow import FlowSpec, Parameter, IncludeFile, JSONType, step, project
|
51
|
-
{project_decorator}class {flow_name}(FlowSpec):
|
52
|
-
{params_code}
|
53
|
-
@step
|
54
|
-
def start(self):
|
55
|
-
self.next(self.end)
|
56
|
-
@step
|
57
|
-
def end(self):
|
58
|
-
pass
|
59
|
-
if __name__ == '__main__':
|
60
|
-
{flow_name}()
|
61
|
-
"""
|
62
|
-
return contents
|
63
|
-
|
64
|
-
|
65
22
|
class ArgoWorkflowsTriggeredRun(TriggeredRun):
|
66
23
|
"""
|
67
24
|
A class representing a triggered Argo Workflow execution.
|
@@ -35,6 +35,12 @@ class Boto3ClientProvider(object):
|
|
35
35
|
"Could not import module 'boto3'. Install boto3 first."
|
36
36
|
)
|
37
37
|
|
38
|
+
# Convert dictionary config to Config object if needed
|
39
|
+
if "config" in client_params and not isinstance(
|
40
|
+
client_params["config"], Config
|
41
|
+
):
|
42
|
+
client_params["config"] = Config(**client_params["config"])
|
43
|
+
|
38
44
|
if module == "s3" and (
|
39
45
|
"config" not in client_params or client_params["config"].retries is None
|
40
46
|
):
|
@@ -131,7 +131,7 @@ def normalize_client_error(err):
|
|
131
131
|
except ValueError:
|
132
132
|
if error_code in ("AccessDenied", "AllAccessDisabled", "InvalidAccessKeyId"):
|
133
133
|
return 403
|
134
|
-
if error_code
|
134
|
+
if error_code in ("NoSuchKey", "NoSuchBucket"):
|
135
135
|
return 404
|
136
136
|
if error_code == "InvalidRange":
|
137
137
|
return 416
|
@@ -72,14 +72,18 @@ class ServiceMetadataProvider(MetadataProvider):
|
|
72
72
|
@classmethod
|
73
73
|
def compute_info(cls, val):
|
74
74
|
v = val.rstrip("/")
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
75
|
+
for i in range(SERVICE_RETRY_COUNT):
|
76
|
+
try:
|
77
|
+
resp = cls._session.get(
|
78
|
+
os.path.join(v, "ping"), headers=SERVICE_HEADERS.copy()
|
79
|
+
)
|
80
|
+
resp.raise_for_status()
|
81
|
+
except: # noqa E722
|
82
|
+
time.sleep(2 ** (i - 1))
|
83
|
+
else:
|
84
|
+
return v
|
85
|
+
|
86
|
+
raise ValueError("Metaflow service [%s] unreachable." % v)
|
83
87
|
|
84
88
|
@classmethod
|
85
89
|
def default_info(cls):
|
metaflow/runner/deployer.py
CHANGED
@@ -7,6 +7,55 @@ from typing import ClassVar, Dict, Optional, TYPE_CHECKING
|
|
7
7
|
from metaflow.exception import MetaflowNotFound
|
8
8
|
from metaflow.metaflow_config import DEFAULT_FROM_DEPLOYMENT_IMPL
|
9
9
|
|
10
|
+
|
11
|
+
def generate_fake_flow_file_contents(
|
12
|
+
flow_name: str, param_info: dict, project_name: Optional[str] = None
|
13
|
+
):
|
14
|
+
params_code = ""
|
15
|
+
for _, param_details in param_info.items():
|
16
|
+
param_python_var_name = param_details["python_var_name"]
|
17
|
+
param_name = param_details["name"]
|
18
|
+
param_type = param_details["type"]
|
19
|
+
param_help = param_details["description"]
|
20
|
+
param_required = param_details["is_required"]
|
21
|
+
|
22
|
+
if param_type == "JSON":
|
23
|
+
params_code += (
|
24
|
+
f" {param_python_var_name} = Parameter('{param_name}', "
|
25
|
+
f"type=JSONType, help='''{param_help}''', required={param_required})\n"
|
26
|
+
)
|
27
|
+
elif param_type == "FilePath":
|
28
|
+
is_text = param_details.get("is_text", True)
|
29
|
+
encoding = param_details.get("encoding", "utf-8")
|
30
|
+
params_code += (
|
31
|
+
f" {param_python_var_name} = IncludeFile('{param_name}', "
|
32
|
+
f"is_text={is_text}, encoding='{encoding}', help='''{param_help}''', "
|
33
|
+
f"required={param_required})\n"
|
34
|
+
)
|
35
|
+
else:
|
36
|
+
params_code += (
|
37
|
+
f" {param_python_var_name} = Parameter('{param_name}', "
|
38
|
+
f"type={param_type}, help='''{param_help}''', required={param_required})\n"
|
39
|
+
)
|
40
|
+
|
41
|
+
project_decorator = f"@project(name='{project_name}')\n" if project_name else ""
|
42
|
+
|
43
|
+
contents = f"""\
|
44
|
+
from metaflow import FlowSpec, Parameter, IncludeFile, JSONType, step, project
|
45
|
+
{project_decorator}class {flow_name}(FlowSpec):
|
46
|
+
{params_code}
|
47
|
+
@step
|
48
|
+
def start(self):
|
49
|
+
self.next(self.end)
|
50
|
+
@step
|
51
|
+
def end(self):
|
52
|
+
pass
|
53
|
+
if __name__ == '__main__':
|
54
|
+
{flow_name}()
|
55
|
+
"""
|
56
|
+
return contents
|
57
|
+
|
58
|
+
|
10
59
|
if TYPE_CHECKING:
|
11
60
|
import metaflow
|
12
61
|
import metaflow.runner.deployer_impl
|
metaflow/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
metaflow_version = "2.15.
|
1
|
+
metaflow_version = "2.15.16"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: metaflow
|
3
|
-
Version: 2.15.
|
3
|
+
Version: 2.15.16
|
4
4
|
Summary: Metaflow: More AI and ML, 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.15.
|
29
|
+
Requires-Dist: metaflow-stubs==2.15.16; extra == "stubs"
|
30
30
|
Dynamic: author
|
31
31
|
Dynamic: author-email
|
32
32
|
Dynamic: classifier
|
@@ -37,7 +37,7 @@ metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
|
|
37
37
|
metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
|
38
38
|
metaflow/util.py,sha256=MCXCjcGwpuR7y9euBf1GTNRHPtlh6fCpdPMEtbULefw,14554
|
39
39
|
metaflow/vendor.py,sha256=EDZokNMrx1PU07jNMiWFMFtC7TL03pMXZ1kKn13k-2g,5139
|
40
|
-
metaflow/version.py,sha256=
|
40
|
+
metaflow/version.py,sha256=YpO6EM1pbJPb-iNbMpxXLeHlRbuglsV3WHXkWdqr2gA,29
|
41
41
|
metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
|
42
42
|
metaflow/_vendor/typing_extensions.py,sha256=q9zxWa6p6CzF1zZvSkygSlklduHf_b3K7MCxGz7MJRc,134519
|
43
43
|
metaflow/_vendor/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
|
@@ -150,7 +150,7 @@ metaflow/cmd/tutorials_cmd.py,sha256=8FdlKkicTOhCIDKcBR5b0Oz6giDvS-EMY3o9skIrRqw
|
|
150
150
|
metaflow/cmd/util.py,sha256=jS_0rUjOnGGzPT65fzRLdGjrYAOOLA4jU2S0HJLV0oc,406
|
151
151
|
metaflow/cmd/code/__init__.py,sha256=VO4dNM9M9LHYy5nTgEiJvCV1RBl8lpDlYGJm6GIcaBA,7413
|
152
152
|
metaflow/cmd/develop/__init__.py,sha256=p1Sy8yU1MEKSrH5ttOWOZvNcI1qYu6J6jghdTHwPgOw,689
|
153
|
-
metaflow/cmd/develop/stub_generator.py,sha256=
|
153
|
+
metaflow/cmd/develop/stub_generator.py,sha256=8Ap5rCC2lKOq4KQJ_LTuhQGj2xXYJ_Nnc1h842PsGBs,65929
|
154
154
|
metaflow/cmd/develop/stubs.py,sha256=J8DtpaN3okiPeeAqhxuUe9wQDlW4YYmZgKsVZLlVt0k,11181
|
155
155
|
metaflow/datastore/__init__.py,sha256=VxP6ddJt3rwiCkpiSfAhyVkUCOe1pgZZsytVEJzFmSQ,155
|
156
156
|
metaflow/datastore/content_addressed_store.py,sha256=6T7tNqL29kpmecyMLHF35RhoSBOb-OZcExnsB65AvnI,7641
|
@@ -210,12 +210,12 @@ metaflow/plugins/argo/argo_workflows.py,sha256=oX-e4o_CxTQP5DJ7zMQwckcobXZJz6hPx
|
|
210
210
|
metaflow/plugins/argo/argo_workflows_cli.py,sha256=1bdG8BQgwyfHooBidyY1Aw52uwjCxq2Edt0bO7qezWM,38375
|
211
211
|
metaflow/plugins/argo/argo_workflows_decorator.py,sha256=ogCSBmwsC2C3eusydrgjuAJd4qK18f1sI4jJwA4Fd-o,7800
|
212
212
|
metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
|
213
|
-
metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=
|
213
|
+
metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=7OiapcIM_r-aBkuIobhofgLC5NRJHC-p9bvBmxvhqoM,12500
|
214
214
|
metaflow/plugins/argo/capture_error.py,sha256=Ys9dscGrTpW-ZCirLBU0gD9qBM0BjxyxGlUMKcwewQc,1852
|
215
215
|
metaflow/plugins/argo/generate_input_paths.py,sha256=loYsI6RFX9LlFsHb7Fe-mzlTTtRdySoOu7sYDy-uXK0,881
|
216
216
|
metaflow/plugins/argo/jobset_input_paths.py,sha256=-h0E_e0w6FMiBUod9Rf_XOSCtZv_C0exacw4q1SfIfg,501
|
217
217
|
metaflow/plugins/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
218
|
-
metaflow/plugins/aws/aws_client.py,sha256=
|
218
|
+
metaflow/plugins/aws/aws_client.py,sha256=BTiLMXa1agjja-N73oWinaOZHs-lGPbfKJG8CqdRgaU,4287
|
219
219
|
metaflow/plugins/aws/aws_utils.py,sha256=kNd61C54Y3WxrL7KSjoKydRjBQ1p3exc9QXux-jZyDE,7510
|
220
220
|
metaflow/plugins/aws/batch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
221
221
|
metaflow/plugins/aws/batch/batch.py,sha256=e9ssahWM18GnipPK2sqYB-ztx9w7Eoo7YtWyEtufYxs,17787
|
@@ -279,7 +279,7 @@ metaflow/plugins/datatools/__init__.py,sha256=ge4L16OBQLy2J_MMvoHg3lMfdm-MluQgRW
|
|
279
279
|
metaflow/plugins/datatools/local.py,sha256=FJvMOBcjdyhSPHmdLocBSiIT0rmKkKBmsaclxH75x08,4233
|
280
280
|
metaflow/plugins/datatools/s3/__init__.py,sha256=14tr9fPjN3ULW5IOfKHeG7Uhjmgm7LMtQHfz1SFv-h8,248
|
281
281
|
metaflow/plugins/datatools/s3/s3.py,sha256=3xrWD6pXoVRpuAQHyLGVya79UIE0S8AqAqe2prg4yMw,67182
|
282
|
-
metaflow/plugins/datatools/s3/s3op.py,sha256=
|
282
|
+
metaflow/plugins/datatools/s3/s3op.py,sha256=nDFgc5m0ud-uK4D2_vyweGpGoMjESxu3TlX86zA1MdQ,47561
|
283
283
|
metaflow/plugins/datatools/s3/s3tail.py,sha256=boQjQGQMI-bvTqcMP2y7uSlSYLcvWOy7J3ZUaF78NAA,2597
|
284
284
|
metaflow/plugins/datatools/s3/s3util.py,sha256=FgRgaVmEq7-i2dV7q8XK5w5PfFt-xJjZa8WrK8IJfdI,3769
|
285
285
|
metaflow/plugins/env_escape/__init__.py,sha256=tGNUZnmPvk52eNs__VK443b3CZ7ogEFTT-s9_n_HF8Q,8837
|
@@ -323,7 +323,7 @@ metaflow/plugins/kubernetes/spot_metadata_cli.py,sha256=an0nWCxgflmqIPBCBrlb4m3D
|
|
323
323
|
metaflow/plugins/kubernetes/spot_monitor_sidecar.py,sha256=zrWU-smQwPnL6MBHmzTxWyEA00R6iKKQbhhy50xFwQ8,3832
|
324
324
|
metaflow/plugins/metadata_providers/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
325
325
|
metaflow/plugins/metadata_providers/local.py,sha256=Z0CXaGZJbAkj4II3WspJi-uCCtShH64yaXZQ5i9Ym7g,24390
|
326
|
-
metaflow/plugins/metadata_providers/service.py,sha256=
|
326
|
+
metaflow/plugins/metadata_providers/service.py,sha256=5UlK0R5M9_nq2J6MgJgCZwqAC3bEsofFbglq1K4p4QI,22942
|
327
327
|
metaflow/plugins/pypi/__init__.py,sha256=0YFZpXvX7HCkyBFglatual7XGifdA1RwC3U4kcizyak,1037
|
328
328
|
metaflow/plugins/pypi/bootstrap.py,sha256=NaQboUVNJc90gmUa69-cK_T3G7piHNNsUSaN96IJoic,14745
|
329
329
|
metaflow/plugins/pypi/conda_decorator.py,sha256=N0HGiaS1mRsa6qT4eYzu2C3DHtas22QIXowW4vEl44M,15961
|
@@ -342,7 +342,7 @@ metaflow/plugins/uv/bootstrap.py,sha256=nKucPuEk6IEuu9R3aJtaTaOsD1eZjmQ4iz0t4vYF
|
|
342
342
|
metaflow/plugins/uv/uv_environment.py,sha256=6hUaWrTgqHyzS6igGQUXpS6jb_GHv3Wq9ZrWhZgEals,2587
|
343
343
|
metaflow/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
344
344
|
metaflow/runner/click_api.py,sha256=u9Y1bu9vN13ektBs-L8lg2oxb5oYvGe1dPJjV2shMAw,23727
|
345
|
-
metaflow/runner/deployer.py,sha256=
|
345
|
+
metaflow/runner/deployer.py,sha256=U-hwf4gVzwUlXgnkfTW3y1daGXvo5eP4HTQZwb-vS0g,11058
|
346
346
|
metaflow/runner/deployer_impl.py,sha256=zTING0_fwP44JcGo69DuNrVut5KqdBVzYOM7MYTZgIY,7049
|
347
347
|
metaflow/runner/metaflow_runner.py,sha256=BaDAp-3tCPwJRy_R8hLTAu6L0qjjuQmjeo-L1inhr_c,17498
|
348
348
|
metaflow/runner/nbdeploy.py,sha256=Sp5w-6nCZwjHaRBHWxi8udya-RYnJOB76KNLjB4L7Gs,4166
|
@@ -389,12 +389,12 @@ metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
389
389
|
metaflow/user_configs/config_decorators.py,sha256=qCKVAvd0NKgaCxQ2OThes5-DYHXq6A1HqURubYNeFdw,20481
|
390
390
|
metaflow/user_configs/config_options.py,sha256=aB53M-2WkDPo_TRLAcC8v89Wy8-oxflfW4l-xlb5pDI,21089
|
391
391
|
metaflow/user_configs/config_parameters.py,sha256=Eyiqcz4YV_z4algDHAh2gaejGFgIdHk8Vix9AUdPSh0,20989
|
392
|
-
metaflow-2.15.
|
393
|
-
metaflow-2.15.
|
394
|
-
metaflow-2.15.
|
395
|
-
metaflow-2.15.
|
396
|
-
metaflow-2.15.
|
397
|
-
metaflow-2.15.
|
398
|
-
metaflow-2.15.
|
399
|
-
metaflow-2.15.
|
400
|
-
metaflow-2.15.
|
392
|
+
metaflow-2.15.16.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
|
393
|
+
metaflow-2.15.16.data/data/share/metaflow/devtools/Tiltfile,sha256=P5_rn_F3xYLN1_cEAQ9mNeS22HG2rb8beKIz2RIK6fU,20634
|
394
|
+
metaflow-2.15.16.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
|
395
|
+
metaflow-2.15.16.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
|
396
|
+
metaflow-2.15.16.dist-info/METADATA,sha256=tJxdSSfjh56YThcF7BrwHK50l86Ku5Pb-KFZt0nSiyU,6742
|
397
|
+
metaflow-2.15.16.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
|
398
|
+
metaflow-2.15.16.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
|
399
|
+
metaflow-2.15.16.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
|
400
|
+
metaflow-2.15.16.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{metaflow-2.15.15.data → metaflow-2.15.16.data}/data/share/metaflow/devtools/pick_services.sh
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|