ob-metaflow 2.16.8.2rc0__py2.py3-none-any.whl → 2.16.8.2rc2__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.

Files changed (61) hide show
  1. metaflow/_vendor/click/core.py +4 -3
  2. metaflow/_vendor/imghdr/__init__.py +1 -7
  3. metaflow/cli.py +2 -11
  4. metaflow/cli_components/run_cmds.py +15 -0
  5. metaflow/client/core.py +1 -6
  6. metaflow/extension_support/__init__.py +3 -4
  7. metaflow/flowspec.py +113 -1
  8. metaflow/graph.py +134 -10
  9. metaflow/lint.py +70 -3
  10. metaflow/metaflow_environment.py +6 -14
  11. metaflow/package/__init__.py +9 -18
  12. metaflow/packaging_sys/__init__.py +43 -53
  13. metaflow/packaging_sys/backend.py +6 -21
  14. metaflow/packaging_sys/tar_backend.py +3 -16
  15. metaflow/packaging_sys/v1.py +21 -21
  16. metaflow/plugins/argo/argo_client.py +14 -31
  17. metaflow/plugins/argo/argo_workflows.py +22 -66
  18. metaflow/plugins/argo/argo_workflows_cli.py +2 -1
  19. metaflow/plugins/argo/argo_workflows_deployer_objects.py +0 -69
  20. metaflow/plugins/aws/step_functions/step_functions.py +6 -0
  21. metaflow/plugins/aws/step_functions/step_functions_deployer_objects.py +0 -30
  22. metaflow/plugins/cards/card_modules/basic.py +14 -2
  23. metaflow/plugins/cards/card_modules/convert_to_native_type.py +1 -7
  24. metaflow/plugins/kubernetes/kubernetes_decorator.py +1 -1
  25. metaflow/plugins/kubernetes/kubernetes_jobsets.py +28 -26
  26. metaflow/plugins/pypi/conda_decorator.py +2 -4
  27. metaflow/runner/click_api.py +7 -14
  28. metaflow/runner/deployer.py +7 -160
  29. metaflow/runner/subprocess_manager.py +12 -20
  30. metaflow/runtime.py +102 -27
  31. metaflow/task.py +46 -25
  32. metaflow/user_decorators/mutable_flow.py +1 -3
  33. metaflow/util.py +29 -0
  34. metaflow/vendor.py +6 -23
  35. metaflow/version.py +1 -1
  36. {ob_metaflow-2.16.8.2rc0.dist-info → ob_metaflow-2.16.8.2rc2.dist-info}/METADATA +2 -2
  37. {ob_metaflow-2.16.8.2rc0.dist-info → ob_metaflow-2.16.8.2rc2.dist-info}/RECORD +44 -61
  38. metaflow/_vendor/yaml/__init__.py +0 -427
  39. metaflow/_vendor/yaml/composer.py +0 -139
  40. metaflow/_vendor/yaml/constructor.py +0 -748
  41. metaflow/_vendor/yaml/cyaml.py +0 -101
  42. metaflow/_vendor/yaml/dumper.py +0 -62
  43. metaflow/_vendor/yaml/emitter.py +0 -1137
  44. metaflow/_vendor/yaml/error.py +0 -75
  45. metaflow/_vendor/yaml/events.py +0 -86
  46. metaflow/_vendor/yaml/loader.py +0 -63
  47. metaflow/_vendor/yaml/nodes.py +0 -49
  48. metaflow/_vendor/yaml/parser.py +0 -589
  49. metaflow/_vendor/yaml/reader.py +0 -185
  50. metaflow/_vendor/yaml/representer.py +0 -389
  51. metaflow/_vendor/yaml/resolver.py +0 -227
  52. metaflow/_vendor/yaml/scanner.py +0 -1435
  53. metaflow/_vendor/yaml/serializer.py +0 -111
  54. metaflow/_vendor/yaml/tokens.py +0 -104
  55. {ob_metaflow-2.16.8.2rc0.data → ob_metaflow-2.16.8.2rc2.data}/data/share/metaflow/devtools/Makefile +0 -0
  56. {ob_metaflow-2.16.8.2rc0.data → ob_metaflow-2.16.8.2rc2.data}/data/share/metaflow/devtools/Tiltfile +0 -0
  57. {ob_metaflow-2.16.8.2rc0.data → ob_metaflow-2.16.8.2rc2.data}/data/share/metaflow/devtools/pick_services.sh +0 -0
  58. {ob_metaflow-2.16.8.2rc0.dist-info → ob_metaflow-2.16.8.2rc2.dist-info}/WHEEL +0 -0
  59. {ob_metaflow-2.16.8.2rc0.dist-info → ob_metaflow-2.16.8.2rc2.dist-info}/entry_points.txt +0 -0
  60. {ob_metaflow-2.16.8.2rc0.dist-info → ob_metaflow-2.16.8.2rc2.dist-info}/licenses/LICENSE +0 -0
  61. {ob_metaflow-2.16.8.2rc0.dist-info → ob_metaflow-2.16.8.2rc2.dist-info}/top_level.txt +0 -0
metaflow/runtime.py CHANGED
@@ -37,7 +37,7 @@ from .debug import debug
37
37
  from .decorators import flow_decorators
38
38
  from .flowspec import _FlowState
39
39
  from .mflog import mflog, RUNTIME_LOG_SOURCE
40
- from .util import to_unicode, compress_list, unicode_type
40
+ from .util import to_unicode, compress_list, unicode_type, get_split_branch_for_node
41
41
  from .clone_util import clone_task_helper
42
42
  from .unbounded_foreach import (
43
43
  CONTROL_TASK_TAG,
@@ -820,39 +820,90 @@ class NativeRuntime(object):
820
820
  # matching_split is the split-parent of the finished task
821
821
  matching_split = self._graph[self._graph[next_step].split_parents[-1]]
822
822
  _, foreach_stack = task.finished_id
823
- index = ""
823
+
824
+ direct_parents = set(self._graph[next_step].in_funcs)
825
+
826
+ # next step is a foreach join
824
827
  if matching_split.type == "foreach":
825
- # next step is a foreach join
828
+ top_frame = task.finished_id[1][-1]
829
+ num_splits = top_frame.num_splits
826
830
 
827
- def siblings(foreach_stack):
828
- top = foreach_stack[-1]
829
- bottom = list(foreach_stack[:-1])
830
- for index in range(top.num_splits):
831
- yield tuple(bottom + [top._replace(index=index)])
832
-
833
- # required tasks are all split-siblings of the finished task
834
- required_tasks = [
835
- self._finished.get((task.step, s)) for s in siblings(foreach_stack)
836
- ]
837
- join_type = "foreach"
838
- index = self._translate_index(task, next_step, "join")
839
- else:
840
- # next step is a split
841
- # required tasks are all branches joined by the next step
842
- required_tasks = [
843
- self._finished.get((step, foreach_stack))
844
- for step in self._graph[next_step].in_funcs
845
- ]
846
- join_type = "linear"
847
- index = self._translate_index(task, next_step, "linear")
831
+ finished_for_each_index = {}
832
+ for finished_id, pathspec in self._finished.items():
833
+ finished_step, finished_foreach_stack = finished_id
848
834
 
849
- if all(required_tasks):
850
- # all tasks to be joined are ready. Schedule the next join step.
835
+ if finished_step not in direct_parents:
836
+ continue
837
+
838
+ if (
839
+ len(finished_foreach_stack) != len(task.finished_id[1])
840
+ or finished_foreach_stack[:-1] != task.finished_id[1][:-1]
841
+ ):
842
+ continue
843
+
844
+ current_index = finished_foreach_stack[-1].index
845
+ finished_for_each_index[current_index] = pathspec
846
+
847
+ if (
848
+ num_splits is not None
849
+ and len(finished_for_each_index) == num_splits
850
+ ):
851
+ required_tasks = list(finished_for_each_index.values())
852
+ index = self._translate_index(task, next_step, "join")
853
+ self._queue_push(
854
+ next_step,
855
+ {"input_paths": required_tasks, "join_type": "foreach"},
856
+ index,
857
+ )
858
+ elif matching_split.type == "split-switch":
859
+ required_tasks = [task.path]
860
+ join_type = "split-switch"
861
+ index = self._translate_index(task, next_step, "linear")
851
862
  self._queue_push(
852
863
  next_step,
853
864
  {"input_paths": required_tasks, "join_type": join_type},
854
865
  index,
855
866
  )
867
+ else:
868
+ split_node_name = matching_split.name
869
+ expected_branches = set(matching_split.out_funcs)
870
+
871
+ resolved_and_finished = {}
872
+ for finished_id, pathspec in self._finished.items():
873
+ finished_step, finished_foreach_stack = finished_id
874
+
875
+ if finished_step not in direct_parents:
876
+ continue
877
+
878
+ if finished_foreach_stack != foreach_stack:
879
+ continue
880
+
881
+ branch = get_split_branch_for_node(
882
+ self._graph, finished_step, split_node_name
883
+ )
884
+ if branch in expected_branches:
885
+ resolved_and_finished[branch] = pathspec
886
+
887
+ if set(resolved_and_finished.keys()) == expected_branches:
888
+ required_tasks = list(resolved_and_finished.values())
889
+ index = self._translate_index(task, next_step, "linear")
890
+ self._queue_push(
891
+ next_step,
892
+ {"input_paths": required_tasks, "join_type": "linear"},
893
+ index,
894
+ )
895
+
896
+ def _queue_task_switch(self, task, next_steps):
897
+ if len(next_steps) != 1:
898
+ msg = (
899
+ "Step *{step}* is a switch statement but runtime got {actual} transitions. "
900
+ "Expected exactly 1 chosen step."
901
+ )
902
+ raise Exception(msg.format(step=task.step, actual=len(next_steps)))
903
+
904
+ chosen_step = next_steps[0]
905
+ index = self._translate_index(task, chosen_step, "linear")
906
+ self._queue_push(chosen_step, {"input_paths": [task.path]}, index)
856
907
 
857
908
  def _queue_task_foreach(self, task, next_steps):
858
909
  # CHECK: this condition should be enforced by the linter but
@@ -930,7 +981,28 @@ class NativeRuntime(object):
930
981
  next_steps = []
931
982
  foreach = None
932
983
  expected = self._graph[task.step].out_funcs
933
- if next_steps != expected:
984
+ if self._graph[task.step].type == "split-switch":
985
+ if len(next_steps) != 1:
986
+ msg = (
987
+ "Switch step *{step}* should transition to exactly "
988
+ "one step at runtime, but got: {actual}"
989
+ )
990
+ raise MetaflowInternalError(
991
+ msg.format(step=task.step, actual=", ".join(next_steps))
992
+ )
993
+ if next_steps[0] not in expected:
994
+ msg = (
995
+ "Switch step *{step}* transitioned to unexpected "
996
+ "step *{actual}*. Expected one of: {expected}"
997
+ )
998
+ raise MetaflowInternalError(
999
+ msg.format(
1000
+ step=task.step,
1001
+ actual=next_steps[0],
1002
+ expected=", ".join(expected),
1003
+ )
1004
+ )
1005
+ elif next_steps != expected:
934
1006
  msg = (
935
1007
  "Based on static analysis of the code, step *{step}* "
936
1008
  "was expected to transition to step(s) *{expected}*. "
@@ -954,6 +1026,9 @@ class NativeRuntime(object):
954
1026
  elif foreach:
955
1027
  # Next step is a foreach child
956
1028
  self._queue_task_foreach(task, next_steps)
1029
+ elif self._graph[task.step].type == "split-switch":
1030
+ # Next step is switch - queue the chosen step
1031
+ self._queue_task_switch(task, next_steps)
957
1032
  else:
958
1033
  # Next steps are normal linear steps
959
1034
  for step in next_steps:
metaflow/task.py CHANGED
@@ -670,31 +670,49 @@ class MetaflowTask(object):
670
670
 
671
671
  if join_type:
672
672
  # Join step:
673
-
674
- # Ensure that we have the right number of inputs. The
675
- # foreach case is checked above.
676
- if join_type != "foreach" and len(inputs) != len(node.in_funcs):
677
- raise MetaflowDataMissing(
678
- "Join *%s* expected %d "
679
- "inputs but only %d inputs "
680
- "were found" % (step_name, len(node.in_funcs), len(inputs))
673
+ passdown_params = None
674
+
675
+ # Ensure that we have the right number of inputs.
676
+ if join_type not in ("foreach", "split-switch"):
677
+ # Find the corresponding split node from the graph.
678
+ split_node = self.flow._graph[node.split_parents[-1]]
679
+ # The number of expected inputs is the number of branches from that split.
680
+ expected_inputs = len(split_node.out_funcs)
681
+
682
+ if len(inputs) != expected_inputs:
683
+ raise MetaflowDataMissing(
684
+ "Join *%s* expected %d inputs but only %d inputs "
685
+ "were found" % (step_name, expected_inputs, len(inputs))
686
+ )
687
+ if join_type == "split-switch":
688
+ # Switch joins only have one input path (the chosen branch from the switch).
689
+ # This occurs when a switch leads directly to a step without other converging branches.
690
+ if len(inputs) > 1:
691
+ raise MetaflowInternalError(
692
+ f"Step *{step_name}* is a switch join but gets multiple inputs"
693
+ )
694
+ # Use input datastore directly - no need to copy parameters since we're not
695
+ # creating a new output datastore
696
+ self.flow._set_datastore(inputs[0])
697
+ passdown_params = False
698
+ else:
699
+ # Multiple input contexts are passed in as an argument
700
+ # to the step function.
701
+ input_obj = Inputs(self._clone_flow(inp) for inp in inputs)
702
+ self.flow._set_datastore(output)
703
+ passdown_params = True
704
+ # initialize parameters (if they exist)
705
+ # We take Parameter values from the first input,
706
+ # which is always safe since parameters are read-only
707
+ if passdown_params is not None:
708
+ current._update_env(
709
+ {
710
+ "parameter_names": self._init_parameters(
711
+ inputs[0], passdown=passdown_params
712
+ ),
713
+ "graph_info": self.flow._graph_info,
714
+ }
681
715
  )
682
-
683
- # Multiple input contexts are passed in as an argument
684
- # to the step function.
685
- input_obj = Inputs(self._clone_flow(inp) for inp in inputs)
686
- self.flow._set_datastore(output)
687
- # initialize parameters (if they exist)
688
- # We take Parameter values from the first input,
689
- # which is always safe since parameters are read-only
690
- current._update_env(
691
- {
692
- "parameter_names": self._init_parameters(
693
- inputs[0], passdown=True
694
- ),
695
- "graph_info": self.flow._graph_info,
696
- }
697
- )
698
716
  else:
699
717
  # Linear step:
700
718
  # We are running with a single input context.
@@ -752,7 +770,10 @@ class MetaflowTask(object):
752
770
  )
753
771
 
754
772
  if join_type:
755
- self._exec_step_function(step_func, orig_step_func, input_obj)
773
+ if join_type == "split-switch":
774
+ self._exec_step_function(step_func, orig_step_func)
775
+ else:
776
+ self._exec_step_function(step_func, orig_step_func, input_obj)
756
777
  else:
757
778
  self._exec_step_function(step_func, orig_step_func)
758
779
 
@@ -347,10 +347,8 @@ class MutableFlow:
347
347
  "Mutable flow adding flow decorator '%s'" % deco_type
348
348
  )
349
349
 
350
- # self._flow_cls._flow_decorators is a dictionary of form :
351
- # <deco_name> : [deco_instance, deco_instance, ...]
352
350
  existing_deco = [
353
- d for d in self._flow_cls._flow_decorators if d == flow_deco.name
351
+ d for d in self._flow_cls._flow_decorators if d.name == flow_deco.name
354
352
  ]
355
353
 
356
354
  if flow_deco.allow_multiple or not existing_deco:
metaflow/util.py CHANGED
@@ -212,6 +212,35 @@ def write_latest_run_id(obj, run_id):
212
212
  f.write(str(run_id))
213
213
 
214
214
 
215
+ def get_split_branch_for_node(graph, node_name, split_node_name):
216
+ """
217
+ Walks backwards from a node to find which branch of a given split
218
+ it belongs to. The branches are the direct children of the split node.
219
+ """
220
+
221
+ # The branches are the direct children of the split node
222
+ split_branches = set(graph[split_node_name].out_funcs)
223
+
224
+ # Use a queue for breadth-first search backwards
225
+ q = [node_name]
226
+ visited = {node_name}
227
+
228
+ while q:
229
+ current_name = q.pop(0)
230
+
231
+ # If we have reached one of the original branches, we are done
232
+ if current_name in split_branches:
233
+ return current_name
234
+
235
+ # Add this node's parents to the queue to continue searching
236
+ for parent_name in graph[current_name].in_funcs:
237
+ if parent_name not in visited:
238
+ visited.add(parent_name)
239
+ q.append(parent_name)
240
+
241
+ return None
242
+
243
+
215
244
  def get_object_package_version(obj):
216
245
  """
217
246
  Return the top level package name and package version that defines the
metaflow/vendor.py CHANGED
@@ -63,29 +63,14 @@ def find_vendored_libs(vendor_dir, whitelist, whitelist_dirs):
63
63
  return vendored_libs, paths
64
64
 
65
65
 
66
- def fetch_licenses(*info_dirs, vendor_dir):
67
- for dist_info in info_dirs:
68
- metadata_file = dist_info / "METADATA"
69
- if not metadata_file.exists():
70
- continue
71
-
72
- project_name = None
73
- for line in metadata_file.read_text("utf-8").splitlines():
74
- if line.startswith("Name: "):
75
- project_name = line.split("Name: ", 1)[1].strip()
76
- break
77
- if not project_name:
66
+ def fetch_licenses(*info_dir, vendor_dir):
67
+ for file in chain.from_iterable(map(iter_subtree, info_dir)):
68
+ if "LICENSE" in file.name:
69
+ library = file.parent.name.split("-")[0]
70
+ shutil.copy(file, vendor_dir / ("%s.LICENSE" % library))
71
+ else:
78
72
  continue
79
73
 
80
- for item in dist_info.iterdir():
81
- if item.is_file() and re.search(r"(LICENSE|COPYING)", item.name, re.I):
82
- shutil.copy(item, vendor_dir / f"{project_name}.LICENSE")
83
- elif item.is_dir() and item.name.lower() == "licenses":
84
- for license_file in item.iterdir():
85
- if license_file.is_file():
86
- dest_name = f"{project_name}.{license_file.name}"
87
- shutil.copy(license_file, vendor_dir / dest_name)
88
-
89
74
 
90
75
  def vendor(vendor_dir):
91
76
  # remove everything
@@ -123,8 +108,6 @@ def vendor(vendor_dir):
123
108
  "-r",
124
109
  "_vendor/vendor_%s.txt" % subdir,
125
110
  "--no-compile",
126
- "--no-binary",
127
- ":all:",
128
111
  ]
129
112
  )
130
113
 
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.16.8.2rc0"
1
+ metaflow_version = "2.16.8.2rc2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ob-metaflow
3
- Version: 2.16.8.2rc0
3
+ Version: 2.16.8.2rc2
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.8.2rc0; extra == "stubs"
15
+ Requires-Dist: metaflow-stubs==2.16.8.2rc2; extra == "stubs"
16
16
  Dynamic: author
17
17
  Dynamic: author-email
18
18
  Dynamic: description
@@ -1,7 +1,7 @@
1
1
  metaflow/R.py,sha256=CqVfIatvmjciuICNnoyyNGrwE7Va9iXfLdFbQa52hwA,3958
2
2
  metaflow/__init__.py,sha256=bS5KESnJIVfDYZIYf_CEYsUOj49014PFuUWtA6KOCo8,6420
3
3
  metaflow/cards.py,sha256=IbRmredvmFEU0V6JL7DR8wCESwVmmZJubr6x24bo7U4,442
4
- metaflow/cli.py,sha256=uF1ACHw3aWCe6ypFP1SplMZWVA8dgtMYc2z6I4v5neA,22802
4
+ metaflow/cli.py,sha256=WG_2HjYM5ETGl_Vw6nQmFxROKXHH3ZqK1WVmFbGp4r4,22453
5
5
  metaflow/cli_args.py,sha256=hDsdWdRmfXYifVGq6b6FDfgoWxtIG2nr_lU6EBV0Pnk,3584
6
6
  metaflow/clone_util.py,sha256=LSuVbFpPUh92UW32DBcnZbL0FFw-4w3CLa0tpEbCkzk,2066
7
7
  metaflow/cmd_with_io.py,sha256=kl53HkAIyv0ecpItv08wZYczv7u3msD1VCcciqigqf0,588
@@ -10,16 +10,16 @@ metaflow/decorators.py,sha256=4g11F5xtXmKRMNfeFd9yKOWpiHAoyxfbfDqIWak1_Q0,30831
10
10
  metaflow/event_logger.py,sha256=joTVRqZPL87nvah4ZOwtqWX8NeraM_CXKXXGVpKGD8o,780
11
11
  metaflow/events.py,sha256=ahjzkSbSnRCK9RZ-9vTfUviz_6gMvSO9DGkJ86X80-k,5300
12
12
  metaflow/exception.py,sha256=_m9ZBJM0cooHRslDqfxCPQmkChqaTh6fGxp7HvISnYI,5161
13
- metaflow/flowspec.py,sha256=hCONv0wlC-MgxNUDWzDtS_4ayr-0sqPNUdnpXJ75b1Y,37944
14
- metaflow/graph.py,sha256=alPCQPexm-0hjquQgLYNhoe6PbXL_LXMg1L__G1DxYw,13183
13
+ metaflow/flowspec.py,sha256=Lv9Rl-2jXLceJGx0baLG6-JD4v96jUKyJNK2a7BBAlw,42971
14
+ metaflow/graph.py,sha256=9QMNV5aW973h47-V6hURpKULCHVQ-On2D49EHtFjx6U,18527
15
15
  metaflow/includefile.py,sha256=RtISGl1V48qjkJBakUZ9yPpHV102h7pOIFiKP8PLHpc,20927
16
16
  metaflow/integrations.py,sha256=LlsaoePRg03DjENnmLxZDYto3NwWc9z_PtU6nJxLldg,1480
17
- metaflow/lint.py,sha256=x4p6tnRzYqNNniCGXyrUW0WuYfTUgnaOMRivxvnxask,11661
17
+ metaflow/lint.py,sha256=pRflBshJHCZ8-EAmfxo031zYuuescxJ-MiK8QbwJZSU,14358
18
18
  metaflow/meta_files.py,sha256=vlgJHI8GJUKzXoxdrVoH8yyCF5bhFgwYemUgnyd1wgM,342
19
19
  metaflow/metaflow_config.py,sha256=xEAsJ-Fa-fkDq1hzI72Hx9BC00-S1yQoqgSYG9K46AY,24267
20
20
  metaflow/metaflow_config_funcs.py,sha256=5GlvoafV6SxykwfL8D12WXSfwjBN_NsyuKE_Q3gjGVE,6738
21
21
  metaflow/metaflow_current.py,sha256=pfkXmkyHeMJhxIs6HBJNBEaBDpcl5kz9Wx5mW6F_3qo,7164
22
- metaflow/metaflow_environment.py,sha256=20PIhA5R_rJneNj8f8UaWRmznGRPcEd6hP7goj_rc1s,11477
22
+ metaflow/metaflow_environment.py,sha256=YVq2j8cK6JjbmBkPXoTBNiAw29H1TVpDsnpVN-ZTBR4,11210
23
23
  metaflow/metaflow_git.py,sha256=Pb_VtvQzcjpuuM7UfC2u5kz85EbPMUfspl2UrPWBQMM,3647
24
24
  metaflow/metaflow_profile.py,sha256=jKPEW-hmAQO-htSxb9hXaeloLacAh41A35rMZH6G8pA,418
25
25
  metaflow/metaflow_version.py,sha256=KJJAxhOMY28DaavMpvJUzvw-G6MI-29Fi2A6AEcQpok,7495
@@ -29,14 +29,14 @@ metaflow/parameters.py,sha256=b3rS6P-TeEj2JgPEKaiy0ys1B_JtOGJ6XM0KkY2layc,18649
29
29
  metaflow/procpoll.py,sha256=U2tE4iK_Mwj2WDyVTx_Uglh6xZ-jixQOo4wrM9OOhxg,2859
30
30
  metaflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  metaflow/pylint_wrapper.py,sha256=tJjmdsgtbHTCqg_oA6fV6SbWq_3V5XUgE9xH0zJ1CGU,3004
32
- metaflow/runtime.py,sha256=KwHKZ6kNZuC8HgL_r0-gTi9Y-GPAhTz0tNXydQFjZO4,77617
32
+ metaflow/runtime.py,sha256=dxJT9Jiz091kMdqwfLxqPneXeoucdIkL4r4fgLueYfA,80937
33
33
  metaflow/tagging_util.py,sha256=ctyf0Q1gBi0RyZX6J0e9DQGNkNHblV_CITfy66axXB4,2346
34
- metaflow/task.py,sha256=1DslU1CHoEeFIilABQvk4Zbpl-yCdZMEkECnv2LQAZg,34356
34
+ metaflow/task.py,sha256=olXBWgxd_qehwPkiVO_RQGyrt5zIPlK1VY2cCJfAO7c,35800
35
35
  metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
36
36
  metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
37
- metaflow/util.py,sha256=g2SOU_CRzJLgDM_UGF9QDMANMAIHAsDRXE6S76_YzsY,14594
38
- metaflow/vendor.py,sha256=A82CGHfStZGDP5pQ5XzRjFkbN1ZC-vFmghXIrzMDDNg,5868
39
- metaflow/version.py,sha256=RReaZLYAKmiJjSni-FoAnUoQmNc2vaxsoJAipV6wisU,33
37
+ metaflow/util.py,sha256=SKQbbOu055AmPGjPxoJ3ahDkeNlZEL8ejLLKd3lEJOQ,15503
38
+ metaflow/vendor.py,sha256=EDZokNMrx1PU07jNMiWFMFtC7TL03pMXZ1kKn13k-2g,5139
39
+ metaflow/version.py,sha256=36BxDRGczcqJmm9Yt5p17tNdw8PkmqdXmiMjMsg_x68,33
40
40
  metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
41
41
  metaflow/_vendor/typing_extensions.py,sha256=q9zxWa6p6CzF1zZvSkygSlklduHf_b3K7MCxGz7MJRc,134519
42
42
  metaflow/_vendor/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
@@ -47,7 +47,7 @@ metaflow/_vendor/click/_termui_impl.py,sha256=yNktUMAdjYOU1HMkq915jR3zgAzUNtGSQq
47
47
  metaflow/_vendor/click/_textwrap.py,sha256=ajCzkzFly5tjm9foQ5N9_MOeaYJMBjAltuFa69n4iXY,1197
48
48
  metaflow/_vendor/click/_unicodefun.py,sha256=apLSNEBZgUsQNPMUv072zJ1swqnm0dYVT5TqcIWTt6w,4201
49
49
  metaflow/_vendor/click/_winconsole.py,sha256=6YDu6Rq1Wxx4w9uinBMK2LHvP83aerZM9GQurlk3QDo,10010
50
- metaflow/_vendor/click/core.py,sha256=V6DJzastGhrC6WTDwV9MSLwcJUdX2Uf1ypmgkjBdn_Y,77650
50
+ metaflow/_vendor/click/core.py,sha256=nzhJwIeN4LBFz92JnWxlrrsYHqBGhSQPbkkUI2p_hXA,77654
51
51
  metaflow/_vendor/click/decorators.py,sha256=3TvEO_BkaHl7k6Eh1G5eC7JK4LKPdpFqH9JP0QDyTlM,11215
52
52
  metaflow/_vendor/click/exceptions.py,sha256=3pQAyyMFzx5A3eV0Y27WtDTyGogZRbrC6_o5DjjKBbw,8118
53
53
  metaflow/_vendor/click/formatting.py,sha256=Wb4gqFEpWaKPgAbOvnkCl8p-bEZx5KpM5ZSByhlnJNk,9281
@@ -57,7 +57,7 @@ metaflow/_vendor/click/termui.py,sha256=G7QBEKIepRIGLvNdGwBTYiEtSImRxvTO_AglVpyH
57
57
  metaflow/_vendor/click/testing.py,sha256=EUEsDUqNXFgCLhZ0ZFOROpaVDA5I_rijwnNPE6qICgA,12854
58
58
  metaflow/_vendor/click/types.py,sha256=wuubik4VqgqAw5dvbYFkDt-zSAx97y9TQXuXcVaRyQA,25045
59
59
  metaflow/_vendor/click/utils.py,sha256=4VEcJ7iEHwjnFuzEuRtkT99o5VG3zqSD7Q2CVzv13WU,15940
60
- metaflow/_vendor/imghdr/__init__.py,sha256=h_vK71LtjerpJ1h1EU_bv_CuA1Qoq18qdH8Zj19dHBk,4667
60
+ metaflow/_vendor/imghdr/__init__.py,sha256=wbtS6ggW20xfNCBlWrSkdvs4KXCRQekfGla5xv4obVY,4398
61
61
  metaflow/_vendor/importlib_metadata/__init__.py,sha256=dH_kBRM61VLiIV0zuU5macqk3XYY-ljq_9gt8ZcJDMI,30525
62
62
  metaflow/_vendor/importlib_metadata/_adapters.py,sha256=B6fCi5-8mLVDFUZj3krI5nAo-mKp1dH_qIavyIyFrJs,1862
63
63
  metaflow/_vendor/importlib_metadata/_collections.py,sha256=CJ0OTCHIjWA0ZIVS4voORAsn2R4R2cQBEtPsZEJpASY,743
@@ -133,31 +133,14 @@ metaflow/_vendor/v3_7/typeguard/_transformer.py,sha256=ezvPCMScd3XQUj_QDKGaPJSQF
133
133
  metaflow/_vendor/v3_7/typeguard/_union_transformer.py,sha256=qdAi2FQYikacoCk3YybNcYjWbC4jDM3y0Jfcu3qvfKw,1353
134
134
  metaflow/_vendor/v3_7/typeguard/_utils.py,sha256=Bj8D17zny8yTan8CNG6HhlL8Gb-BOMGP-5mmElNk6e8,5086
135
135
  metaflow/_vendor/v3_7/typeguard/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
- metaflow/_vendor/yaml/__init__.py,sha256=XFUNbKTg4afAd0BETjGQ1mKQ97_g5jbE1C0WoKc74dc,13170
137
- metaflow/_vendor/yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883
138
- metaflow/_vendor/yaml/constructor.py,sha256=O3Uaf0_J_5GQBoeI9ZNhpJAhtdagr_X2HzDgGbZOMnw,28627
139
- metaflow/_vendor/yaml/cyaml.py,sha256=LiMkvchNonfoy1F6ec9L2BiUz3r0bwF4hympASJX1Ic,3846
140
- metaflow/_vendor/yaml/dumper.py,sha256=PLctZlYwZLp7XmeUdwRuv4nYOZ2UBnDIUy8-lKfLF-o,2837
141
- metaflow/_vendor/yaml/emitter.py,sha256=jghtaU7eFwg31bG0B7RZea_29Adi9CKmXq_QjgQpCkQ,43006
142
- metaflow/_vendor/yaml/error.py,sha256=Ah9z-toHJUbE9j-M8YpxgSRM5CgLCcwVzJgLLRF2Fxo,2533
143
- metaflow/_vendor/yaml/events.py,sha256=50_TksgQiE4up-lKo_V-nBy-tAIxkIPQxY5qDhKCeHw,2445
144
- metaflow/_vendor/yaml/loader.py,sha256=UVa-zIqmkFSCIYq_PgSGm4NSJttHY2Rf_zQ4_b1fHN0,2061
145
- metaflow/_vendor/yaml/nodes.py,sha256=gPKNj8pKCdh2d4gr3gIYINnPOaOxGhJAUiYhGRnPE84,1440
146
- metaflow/_vendor/yaml/parser.py,sha256=ilWp5vvgoHFGzvOZDItFoGjD6D42nhlZrZyjAwa0oJo,25495
147
- metaflow/_vendor/yaml/reader.py,sha256=0dmzirOiDG4Xo41RnuQS7K9rkY3xjHiVasfDMNTqCNw,6794
148
- metaflow/_vendor/yaml/representer.py,sha256=82UM3ZxUQKqsKAF4ltWOxCS6jGPIFtXpGs7mvqyv4Xs,14184
149
- metaflow/_vendor/yaml/resolver.py,sha256=DJCjpQr8YQCEYYjKEYqTl0GrsZil2H4aFOI9b0Oe-U4,8970
150
- metaflow/_vendor/yaml/scanner.py,sha256=KeQIKGNlSyPE8QDwionHxy9CgbqE5teJEz05FR9-nAg,51277
151
- metaflow/_vendor/yaml/serializer.py,sha256=ChuFgmhU01hj4xgI8GaKv6vfM2Bujwa9i7d2FAHj7cA,4165
152
- metaflow/_vendor/yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp54,2573
153
136
  metaflow/cli_components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
137
  metaflow/cli_components/dump_cmd.py,sha256=SZEX51BWNd1o3H2uHDkYA8KRvou5X8g5rTwpdu5vnNQ,2704
155
138
  metaflow/cli_components/init_cmd.py,sha256=AIkQHNlMRsmf8fxXwXQSEWTuv_9nxNY82-IdWsgGjEs,1554
156
- metaflow/cli_components/run_cmds.py,sha256=xULZQ2UrxLNsWjQIZd38EbOGNBw8UJT7w_T19UbS_fg,11555
139
+ metaflow/cli_components/run_cmds.py,sha256=_xk2asy3SkqsJfZVhbgYSJ2rkkJe7cvLik6b0HT-704,12264
157
140
  metaflow/cli_components/step_cmd.py,sha256=zGJgTv7wxrv34nWDi__CHaC2eS6kItR95EdVGJX803w,4766
158
141
  metaflow/cli_components/utils.py,sha256=gpoDociadjnJD7MuiJup_MDR02ZJjjleejr0jPBu29c,6057
159
142
  metaflow/client/__init__.py,sha256=1GtQB4Y_CBkzaxg32L1syNQSlfj762wmLrfrDxGi1b8,226
160
- metaflow/client/core.py,sha256=tj2PuqQt1RXg8GuyLQ_WRuxYEvTaDyi_lW18YGwWvAQ,83714
143
+ metaflow/client/core.py,sha256=h_sPTG36U2UPiZRRwL-oQ5EAeJ6ijfXaibhinb22Hj0,83548
161
144
  metaflow/client/filecache.py,sha256=Wy0yhhCqC1JZgebqi7z52GCwXYnkAqMZHTtxThvwBgM,15229
162
145
  metaflow/cmd/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
163
146
  metaflow/cmd/configure_cmd.py,sha256=o-DKnUf2FBo_HiMVyoyzQaGBSMtpbEPEdFTQZ0hkU-k,33396
@@ -177,7 +160,7 @@ metaflow/datastore/exceptions.py,sha256=r7Ab5FvHIzyFh6kwiptA1lO5nLqWg0xRBoeYGefv
177
160
  metaflow/datastore/flow_datastore.py,sha256=rDMEHdYwub1PwLp2uaK-8CHdd8hiwxqeELXzsUfuqZs,10250
178
161
  metaflow/datastore/inputs.py,sha256=i43dXr2xvgtsgKMO9allgCR18bk80GeayeQFyUTH36w,449
179
162
  metaflow/datastore/task_datastore.py,sha256=bEti1X5rvKBQykfvsoAnmHXel_itZbI5MeLrEpWPHPQ,35059
180
- metaflow/extension_support/__init__.py,sha256=xLkhh0IzQ70IfF9j6MopMY02SMpEVI_eguksIOEXbDs,52522
163
+ metaflow/extension_support/__init__.py,sha256=Y0DoVZ1Eh4W7aO9DMIXrI8xUoJFP40Oux2gVWv-xoYY,52488
181
164
  metaflow/extension_support/_empty_file.py,sha256=vz61sSExf5DZH3JCqdfwkp7l_NrJR8HV175kG82yUas,133
182
165
  metaflow/extension_support/cmd.py,sha256=hk8iBUUINqvKCDxInKgWpum8ThiRZtHSJP7qBASHzl8,5711
183
166
  metaflow/extension_support/integrations.py,sha256=AWAh-AZ-vo9IxuAVEjGw3s8p_NMm2DKHYx10oC51gPU,5506
@@ -191,13 +174,13 @@ metaflow/mflog/mflog.py,sha256=VebXxqitOtNAs7VJixnNfziO_i_urG7bsJ5JiB5IXgY,4370
191
174
  metaflow/mflog/save_logs.py,sha256=4p1OwozsHJBslOzAf0wUq2XPMNpEOZWM68MgWzh_jJY,2330
192
175
  metaflow/mflog/save_logs_periodically.py,sha256=2Uvk9hi-zlCqXxOQoXmmjH1SCugfw6eG6w70WgfI-ho,1256
193
176
  metaflow/mflog/tee.py,sha256=wTER15qeHuiRpCkOqo-bd-r3Gj-EVlf3IvWRCA4beW4,887
194
- metaflow/package/__init__.py,sha256=1ckiqYx4mJ0Rtp5vr5ta3fIx1LuCSkTdoHy0Gzx_Lwo,26384
195
- metaflow/packaging_sys/__init__.py,sha256=HzpznaW1T9xppCIsxI7MzcTIu6QasyDZ3pJ5fRjzuao,31994
196
- metaflow/packaging_sys/backend.py,sha256=uiJNMTTh3RV9_Zqkd5MBd2TnukfxpY2OEGBOmDroeTM,3534
177
+ metaflow/package/__init__.py,sha256=O2fCTo7Ktm4TnjA6blkepUWs8sf3fTY1q5y8I5nk8Ak,25962
178
+ metaflow/packaging_sys/__init__.py,sha256=VIDa-J_UNyD-Axf5Iuom6SUssQfqAcTq4ezHU6_uqIM,31529
179
+ metaflow/packaging_sys/backend.py,sha256=b3OX42Io8xP5l56zhXZxi-VLqXBr-B2q8AM7cWZvmMw,3104
197
180
  metaflow/packaging_sys/distribution_support.py,sha256=VvikZBCH8N1TBZZ2Twk8jH1brmiinKWCD3y_aFqBsIw,4937
198
- metaflow/packaging_sys/tar_backend.py,sha256=nFWuXiwYjWQkFdV2KaZ6gazNVvtY84Eqsh9txhU3pNY,3010
181
+ metaflow/packaging_sys/tar_backend.py,sha256=EYZD5iGEzPoO4L6IQhmrZC1QlaOPV471SBKyOYBS2XU,2593
199
182
  metaflow/packaging_sys/utils.py,sha256=x8SVglJvY5mIAilS7MqZi2PpMr6IEyi6RCg3l8hN3G0,2972
200
- metaflow/packaging_sys/v1.py,sha256=kbNK0-pDAv3QJPZ789TE0UirGXcHbXkVQiyNT815H7A,20631
183
+ metaflow/packaging_sys/v1.py,sha256=_YlVPR7oSYt7B8dHOS0Fb6ZPrxaSZMSQyRhdN8CL8ZY,20483
201
184
  metaflow/plugins/__init__.py,sha256=yFxjJOlnfap7tQMNgSgaso2tl_zr1BcWL7KoUKk4c9Y,8617
202
185
  metaflow/plugins/catch_decorator.py,sha256=UOM2taN_OL2RPpuJhwEOA9ZALm0-hHD0XS2Hn2GUev0,4061
203
186
  metaflow/plugins/debug_logger.py,sha256=mcF5HYzJ0NQmqCMjyVUk3iAP-heroHRIiVWQC6Ha2-I,879
@@ -228,13 +211,13 @@ metaflow/plugins/airflow/sensors/base_sensor.py,sha256=s-OQBfPWZ_T3wn96Ua59CCEj1
228
211
  metaflow/plugins/airflow/sensors/external_task_sensor.py,sha256=zhYlrZnXT20KW8-fVk0fCNtTyNiKJB5PMVASacu30r0,6034
229
212
  metaflow/plugins/airflow/sensors/s3_sensor.py,sha256=iDReG-7FKnumrtQg-HY6cCUAAqNA90nARrjjjEEk_x4,3275
230
213
  metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
- metaflow/plugins/argo/argo_client.py,sha256=jLz0FjCTBvFLZt-8lZcMQhDcInhgEcGdPrU2Gvh67zA,17080
214
+ metaflow/plugins/argo/argo_client.py,sha256=A1kI9rjVjCadDsBscZ2Wk8xRBI6GNgWV6SU7TyrdfrI,16530
232
215
  metaflow/plugins/argo/argo_events.py,sha256=_C1KWztVqgi3zuH57pInaE9OzABc2NnncC-zdwOMZ-w,5909
233
- metaflow/plugins/argo/argo_workflows.py,sha256=9Bc8h2w_yN39puQDXVskrT5L2sRo-kO8Jb-vE5zHBL8,191298
234
- metaflow/plugins/argo/argo_workflows_cli.py,sha256=Le_GgvLVE1MhxQeOv-k5xp4L51tzQ6ZIq3_P-YEphIk,38784
216
+ metaflow/plugins/argo/argo_workflows.py,sha256=f-GXtT0RwLNp1xllL6Z2uMSV1GFTl-xKuwNTCWPX9ms,190058
217
+ metaflow/plugins/argo/argo_workflows_cli.py,sha256=pfqYH0nqkgmkDcz3EPIz5yR_PSdd3CfLb92wzplS8fY,38810
235
218
  metaflow/plugins/argo/argo_workflows_decorator.py,sha256=ogCSBmwsC2C3eusydrgjuAJd4qK18f1sI4jJwA4Fd-o,7800
236
219
  metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
237
- metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=ydBE-lP42eNKvep36nQdUBPS3rQQErvoA7rCgyp5M6I,14949
220
+ metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=7OiapcIM_r-aBkuIobhofgLC5NRJHC-p9bvBmxvhqoM,12500
238
221
  metaflow/plugins/argo/capture_error.py,sha256=Ys9dscGrTpW-ZCirLBU0gD9qBM0BjxyxGlUMKcwewQc,1852
239
222
  metaflow/plugins/argo/exit_hooks.py,sha256=nh8IEkzAtQnbKVnh3N9CVnVKZB39Bjm3e0LFrACsLz8,6109
240
223
  metaflow/plugins/argo/generate_input_paths.py,sha256=loYsI6RFX9LlFsHb7Fe-mzlTTtRdySoOu7sYDy-uXK0,881
@@ -255,12 +238,12 @@ metaflow/plugins/aws/step_functions/event_bridge_client.py,sha256=U9-tqKdih4KR-Z
255
238
  metaflow/plugins/aws/step_functions/production_token.py,sha256=rREx9djJzKYDiGhPCZ919pSpfrBCYuhSL5WlwnAojNM,1890
256
239
  metaflow/plugins/aws/step_functions/schedule_decorator.py,sha256=Ab1rW8O_no4HNZm4__iBmFDCDW0Z8-TgK4lnxHHA6HI,1940
257
240
  metaflow/plugins/aws/step_functions/set_batch_environment.py,sha256=ibiGWFHDjKcLfprH3OsX-g2M9lUsh6J-bp7v2cdLhD4,1294
258
- metaflow/plugins/aws/step_functions/step_functions.py,sha256=Svz232OA5UewY5W9gfDk-xGqiWyCNPkuUwlPxe9g5j8,53577
241
+ metaflow/plugins/aws/step_functions/step_functions.py,sha256=3mkd9FCiWe1QlduLq73hlfdA6RonxstSYKw80jZiVqU,53819
259
242
  metaflow/plugins/aws/step_functions/step_functions_cli.py,sha256=tLIfDwgdcfBjkjmQMNgVjXY85HoDZNA6lNcOtZZZA1A,26495
260
243
  metaflow/plugins/aws/step_functions/step_functions_client.py,sha256=DKpNwAIWElvWjFANs5Ku3rgzjxFoqAD6k-EF8Xhkg3Q,4754
261
244
  metaflow/plugins/aws/step_functions/step_functions_decorator.py,sha256=jzDHYmgU_XvLffZDazR_1viow_1qQFblx9UKyjtoM_0,3788
262
245
  metaflow/plugins/aws/step_functions/step_functions_deployer.py,sha256=JKYtDhKivtXUWPklprZFzkqezh14loGDmk8mNk6QtpI,3714
263
- metaflow/plugins/aws/step_functions/step_functions_deployer_objects.py,sha256=n7AEPs3uULXEuG3TVf2ZlTNq1LFd2n7x1IPVO2T5Ekk,8174
246
+ metaflow/plugins/aws/step_functions/step_functions_deployer_objects.py,sha256=zDWmrOeCEL2_uBbmdmXbVpHVTjswwjEL_rOux6MAcRI,7303
264
247
  metaflow/plugins/azure/__init__.py,sha256=GuuhTVC-zSdyAf79a1wiERMq0Zts7fwVT7t9fAf234A,100
265
248
  metaflow/plugins/azure/azure_credential.py,sha256=JmdGEbVzgxy8ucqnQDdTTI_atyMX9WSZUw3qYOo7RhE,2174
266
249
  metaflow/plugins/azure/azure_exceptions.py,sha256=NnbwpUC23bc61HZjJmeXztY0tBNn_Y_VpIpDDuYWIZ0,433
@@ -282,11 +265,11 @@ metaflow/plugins/cards/exception.py,sha256=2UqlNb-Kxpg6cuLu2sBEIPTIElwlVBsSpeCgD
282
265
  metaflow/plugins/cards/metadata.py,sha256=tACaw7_XNAICZ4A25celIbgxUF0CxHh7BBpFzKrMLTo,487
283
266
  metaflow/plugins/cards/card_modules/__init__.py,sha256=WI2IAsFiKGyqPrHtO9S9-MbyVtUTgWJNL4xjJaBErRo,3437
284
267
  metaflow/plugins/cards/card_modules/base.html,sha256=Y208ZKIZqEWWUcoBFTLTdWKAG0C8xH5lmyCRSjaN2FY,21004
285
- metaflow/plugins/cards/card_modules/basic.py,sha256=oton1WXN59LPB_08_EA9LYgyNQmQjFHlLJuTWDqmHkM,25354
268
+ metaflow/plugins/cards/card_modules/basic.py,sha256=MKEcdfvukw1ju1N0e8PXC7FaXVzFlgLCpP1u1n5kU-s,25780
286
269
  metaflow/plugins/cards/card_modules/bundle.css,sha256=ms2wOKftlPM_i6bC_4BkrmqCOj8mYw9OFvRCJF9FSV4,11981
287
270
  metaflow/plugins/cards/card_modules/card.py,sha256=6sbqP5mwf7QWvQvX2N_bC78H9ixuI5sQ8612Q5islys,4627
288
271
  metaflow/plugins/cards/card_modules/components.py,sha256=Y-Yo7UgSOyTB3zs-wDfUqUKl0PI_BzeY1QGcy2fqE2M,26752
289
- metaflow/plugins/cards/card_modules/convert_to_native_type.py,sha256=Vcjqn5rfC0kVMdhqDwsYEjknXTbkG_ppraQrQGaQY_E,16245
272
+ metaflow/plugins/cards/card_modules/convert_to_native_type.py,sha256=BB4CDj6t0LoOUwLe-A-hgzGABC-e-eAZUb29pqs5Nm4,16034
290
273
  metaflow/plugins/cards/card_modules/main.js,sha256=72mKcMEjrne7TlLxc-LkxTJVoM4z2pLWGtU1NzHtlWM,1043628
291
274
  metaflow/plugins/cards/card_modules/renderer_tools.py,sha256=uiTdKHWFInWgtfWArOUSQLnTwqVd4hAw49jfOfg8rGA,1642
292
275
  metaflow/plugins/cards/card_modules/test_cards.py,sha256=t2PZ3QnjCN_KUlDKxAt2FfK1BX2dp8rqK6TjtkCNyew,5876
@@ -345,9 +328,9 @@ metaflow/plugins/kubernetes/kube_utils.py,sha256=jdFMGbEmIow-oli26v31W9CmbZXigx0
345
328
  metaflow/plugins/kubernetes/kubernetes.py,sha256=3ugZTwMniF3VBZ3yzfIgby69KgaVw-i-Cq2g2FHef4A,31164
346
329
  metaflow/plugins/kubernetes/kubernetes_cli.py,sha256=qtWTQqp8i-hTKAA0RcJ_qeOuD8TieN3B5vuyYdnvEP4,14425
347
330
  metaflow/plugins/kubernetes/kubernetes_client.py,sha256=tuvXP-QKpdeSmzVolB2R_TaacOr5DIb0j642eKcjsiM,6491
348
- metaflow/plugins/kubernetes/kubernetes_decorator.py,sha256=htawUXm3SDfxzAcjluKrdfMez0o9Lf6ni5_rqK38YJY,33278
331
+ metaflow/plugins/kubernetes/kubernetes_decorator.py,sha256=BB5E_pl39vVc6IhDZm2QYhr-S9BJMmky0pkK5DcED5E,33268
349
332
  metaflow/plugins/kubernetes/kubernetes_job.py,sha256=xhucNJR7EpM-XMsfY0nt-BASbjo_T4vL_-tmQ_xHL1U,33284
350
- metaflow/plugins/kubernetes/kubernetes_jobsets.py,sha256=9DOGNdGnhOlaBsIp1Sl7ylIc444WRP7Y_fT2_JbPZLg,43040
333
+ metaflow/plugins/kubernetes/kubernetes_jobsets.py,sha256=ZZU5vsBe67NmGuxgXw6clf7kKRST7867AW6_t3fCD5g,43065
351
334
  metaflow/plugins/kubernetes/spot_metadata_cli.py,sha256=an0nWCxgflmqIPBCBrlb4m3DereDFFJBLt-KKhqcHc8,1670
352
335
  metaflow/plugins/kubernetes/spot_monitor_sidecar.py,sha256=zrWU-smQwPnL6MBHmzTxWyEA00R6iKKQbhhy50xFwQ8,3832
353
336
  metaflow/plugins/metadata_providers/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
@@ -355,7 +338,7 @@ metaflow/plugins/metadata_providers/local.py,sha256=Z0CXaGZJbAkj4II3WspJi-uCCtSh
355
338
  metaflow/plugins/metadata_providers/service.py,sha256=WL3GkEQlQk0syjSZ6iOnBSb3nRGfeUye95ySvLnMwhg,22953
356
339
  metaflow/plugins/pypi/__init__.py,sha256=0YFZpXvX7HCkyBFglatual7XGifdA1RwC3U4kcizyak,1037
357
340
  metaflow/plugins/pypi/bootstrap.py,sha256=8EWBdwOp5moXkTfLadn3ZOtPXoGftjOFD-c2W_rn77c,14998
358
- metaflow/plugins/pypi/conda_decorator.py,sha256=fXG9EvImP4Eqle_Trhb3tQhs40xTc4cxL_r7r0BlJzo,14064
341
+ metaflow/plugins/pypi/conda_decorator.py,sha256=ie0ftOcozloj_qdASOxYvycb-Zr1GJHedzEDnp6cl2w,13984
359
342
  metaflow/plugins/pypi/conda_environment.py,sha256=MFWHUykFXpBhEuvxRku2FV5dtiWH_ECZgnoq1PoF9Ik,25134
360
343
  metaflow/plugins/pypi/micromamba.py,sha256=UltfY8NmLphfZ-AbpaMFIdxIeOXLdTYDrMrabvPrYVU,17352
361
344
  metaflow/plugins/pypi/parsers.py,sha256=gpOOG2Ph95wI73MWCAi7XjpK0gYhv5k5YIGBs73QPuE,8556
@@ -373,13 +356,13 @@ metaflow/plugins/uv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
373
356
  metaflow/plugins/uv/bootstrap.py,sha256=1UmNnnR7I1YcOtjdAmhuiU23-vj7NimUk3C9QillBaE,4380
374
357
  metaflow/plugins/uv/uv_environment.py,sha256=AYZICrBEq3Bv-taXktJwu9DhKFxNooPFwlcH379EYMs,2719
375
358
  metaflow/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
376
- metaflow/runner/click_api.py,sha256=w0-47ntQD4Dd-LiSJ9vPSjlvW5YBniNSmlf95lcXs5E,24026
377
- metaflow/runner/deployer.py,sha256=OAAMG_l3Q1ClcY_603VZnhclVkfFe3Rf8bFRodC3poc,17138
359
+ metaflow/runner/click_api.py,sha256=DSxa5A0C_IHNug7fZlLpD_N99F_skDcAjTRx5YRMylY,23756
360
+ metaflow/runner/deployer.py,sha256=U-hwf4gVzwUlXgnkfTW3y1daGXvo5eP4HTQZwb-vS0g,11058
378
361
  metaflow/runner/deployer_impl.py,sha256=zTING0_fwP44JcGo69DuNrVut5KqdBVzYOM7MYTZgIY,7049
379
362
  metaflow/runner/metaflow_runner.py,sha256=uo3BzcAfZ67VT_f-TPe5ZHiWHn6uuojWusOMGksvX14,18178
380
363
  metaflow/runner/nbdeploy.py,sha256=Sp5w-6nCZwjHaRBHWxi8udya-RYnJOB76KNLjB4L7Gs,4166
381
364
  metaflow/runner/nbrun.py,sha256=LhJu-Teoi7wTkNxg0kpNPVXFxH_9P4lvtp0ysMEIFJ8,7299
382
- metaflow/runner/subprocess_manager.py,sha256=x-MtPpGGMQUkIbQ_oNOuR-45b91DFvsCJ0SPoFc0dF4,23028
365
+ metaflow/runner/subprocess_manager.py,sha256=0nAXG1PM7KXSIpu6ECeNMv5EfrqCymlIS6k25crnIBA,22792
383
366
  metaflow/runner/utils.py,sha256=fU4vPazBdi6ATAUW_DaBAQeVslRwrLT8Pn9s5wav3gg,10350
384
367
  metaflow/sidecar/__init__.py,sha256=1mmNpmQ5puZCpRmmYlCOeieZ4108Su9XQ4_EqF1FGOU,131
385
368
  metaflow/sidecar/sidecar.py,sha256=EspKXvPPNiyRToaUZ51PS5TT_PzrBNAurn_wbFnmGr0,1334
@@ -422,16 +405,16 @@ metaflow/user_configs/config_options.py,sha256=d3hKA6WRPe21PdTl7sBnxIp5sE6zBpRtg
422
405
  metaflow/user_configs/config_parameters.py,sha256=Loa5wu3vIs0SLyGhbOo8b88nWgCuZ09k24EqC_lI7n4,20890
423
406
  metaflow/user_decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
424
407
  metaflow/user_decorators/common.py,sha256=0u9NRLQ95TfJCjWVEOGT4MJ9WoQgAMBM9kJ2gJGlVjk,5362
425
- metaflow/user_decorators/mutable_flow.py,sha256=icF7XFCS5FdlW3OEL68ZbQOtTPhLsUycKcFKVOeK_vU,19435
408
+ metaflow/user_decorators/mutable_flow.py,sha256=y2FCTQVjTTeiptsztD26jdkU_LY_Z_kzMjTkDajo2rc,19303
426
409
  metaflow/user_decorators/mutable_step.py,sha256=-BY0UDXf_RCAEnC5JlLzEXGdiw1KD9oSrSxS_SWaB9Y,16791
427
410
  metaflow/user_decorators/user_flow_decorator.py,sha256=2yDwZq9QGv9W-7kEuKwa8o4ZkTvuHJ5ESz7VVrGViAI,9890
428
411
  metaflow/user_decorators/user_step_decorator.py,sha256=JYNGXONWCpzwn-_bF5WiAkof4Ii9tRS4xdK8ojSxG6M,26007
429
- ob_metaflow-2.16.8.2rc0.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
430
- ob_metaflow-2.16.8.2rc0.data/data/share/metaflow/devtools/Tiltfile,sha256=I55XTG4RBnrMfDcYRtREXqqS8T9bF8agkZq0DlvdFLk,21404
431
- ob_metaflow-2.16.8.2rc0.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
432
- ob_metaflow-2.16.8.2rc0.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
433
- ob_metaflow-2.16.8.2rc0.dist-info/METADATA,sha256=ykf5LpS8W7h726ASyvfih8TOAeGpOuJeAw8BFRWz26M,5941
434
- ob_metaflow-2.16.8.2rc0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
435
- ob_metaflow-2.16.8.2rc0.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
436
- ob_metaflow-2.16.8.2rc0.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
437
- ob_metaflow-2.16.8.2rc0.dist-info/RECORD,,
412
+ ob_metaflow-2.16.8.2rc2.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
413
+ ob_metaflow-2.16.8.2rc2.data/data/share/metaflow/devtools/Tiltfile,sha256=I55XTG4RBnrMfDcYRtREXqqS8T9bF8agkZq0DlvdFLk,21404
414
+ ob_metaflow-2.16.8.2rc2.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
415
+ ob_metaflow-2.16.8.2rc2.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
416
+ ob_metaflow-2.16.8.2rc2.dist-info/METADATA,sha256=eK0ZJVxCwCqwflblmvYmb9dPJB5XD7WAk8A1QYKogg0,5941
417
+ ob_metaflow-2.16.8.2rc2.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
418
+ ob_metaflow-2.16.8.2rc2.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
419
+ ob_metaflow-2.16.8.2rc2.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
420
+ ob_metaflow-2.16.8.2rc2.dist-info/RECORD,,