metaflow 2.18.4__py2.py3-none-any.whl → 2.18.5__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/client/core.py CHANGED
@@ -839,6 +839,7 @@ class MetaflowCode(object):
839
839
  self._code_obj.seek(0)
840
840
  else:
841
841
  raise MetaflowInternalError("Code package metadata is invalid.")
842
+ self._tarball = None
842
843
 
843
844
  @property
844
845
  def path(self) -> str:
@@ -886,10 +887,13 @@ class MetaflowCode(object):
886
887
  TarFile
887
888
  TarFile for everything in this code package
888
889
  """
890
+ # We only return one tarball because the different TarFile objects share
891
+ # a common bytes buffer (self._code_obj).
892
+ if self._tarball is not None:
893
+ return self._tarball
889
894
  if self._backend.type == "tgz":
890
- to_return = self._backend.cls_open(self._code_obj)
891
- self._code_obj.seek(0)
892
- return to_return
895
+ self._tarball = self._backend.cls_open(self._code_obj)
896
+ return self._tarball
893
897
  raise RuntimeError("Archive is not a tarball")
894
898
 
895
899
  def extract(self) -> TemporaryDirectory:
@@ -922,10 +926,14 @@ class MetaflowCode(object):
922
926
  this object is garbage collected.
923
927
  """
924
928
  tmp = TemporaryDirectory()
929
+ # We save the position we are in _code_obj -- in case tarball is using it at
930
+ # the same time -- so we can reset it to not perturb tarball.
931
+ pos = self._code_obj.tell()
932
+ self._code_obj.seek(0)
925
933
  MetaflowPackage.cls_extract_into(
926
934
  self._code_metadata, self._code_obj, tmp.name, ContentType.USER_CONTENT
927
935
  )
928
- self._code_obj.seek(0)
936
+ self._code_obj.seek(pos)
929
937
  return tmp
930
938
 
931
939
  @property
metaflow/runtime.py CHANGED
@@ -760,6 +760,7 @@ class NativeRuntime(object):
760
760
  self, task, next_step, type, split_index=None, loop_mode=LoopBehavior.NONE
761
761
  ):
762
762
  match = re.match(r"^(.+)\[(.*)\]\[(.*)\]$", task.task_index)
763
+ old_match = re.match(r"^(.+)\[(.*)\]$", task.task_index)
763
764
  if match:
764
765
  _, foreach_index, iteration_index = match.groups()
765
766
  # Convert foreach_index to a list of integers
@@ -772,6 +773,15 @@ class NativeRuntime(object):
772
773
  iteration_index = iteration_index.split(",")
773
774
  else:
774
775
  iteration_index = []
776
+ elif old_match:
777
+ _, foreach_index = old_match.groups()
778
+ # Convert foreach_index to a list of integers
779
+ if len(foreach_index) > 0:
780
+ foreach_index = foreach_index.split(",")
781
+ else:
782
+ foreach_index = []
783
+ # Legacy case fallback. No iteration index exists for these runs.
784
+ iteration_index = []
775
785
  else:
776
786
  raise ValueError(
777
787
  "Index not in the format of {run_id}/{step_name}[{foreach_index}][{iteration_index}]"
@@ -1683,7 +1693,9 @@ class Task(object):
1683
1693
  foreach_stack_tuple = tuple(
1684
1694
  [s._replace(value=0) for s in self.results["_foreach_stack"]]
1685
1695
  )
1686
- return (self.step, foreach_stack_tuple, tuple(self.results["_iteration_stack"]))
1696
+ # _iteration_stack requires a fallback, as it does not exist for runs before v2.17.4
1697
+ iteration_stack_tuple = tuple(self.results.get("_iteration_stack", []))
1698
+ return (self.step, foreach_stack_tuple, iteration_stack_tuple)
1687
1699
 
1688
1700
  @property
1689
1701
  def is_cloned(self):
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.18.4"
1
+ metaflow_version = "2.18.5"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metaflow
3
- Version: 2.18.4
3
+ Version: 2.18.5
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.18.4; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.18.5; extra == "stubs"
30
30
  Dynamic: author
31
31
  Dynamic: author-email
32
32
  Dynamic: classifier
@@ -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=3R44AFI04LWahbfa2v0yDYIWHIz6sau26p1SnzYFNew,86888
32
+ metaflow/runtime.py,sha256=HOYo6A3e-kvZMTBqVi--WHF3zYNYKSOTUwAB_ywuMok,87500
33
33
  metaflow/tagging_util.py,sha256=ctyf0Q1gBi0RyZX6J0e9DQGNkNHblV_CITfy66axXB4,2346
34
34
  metaflow/task.py,sha256=jnh_qteVIW0sP3Y2MBfJR2eEv_MGnOW1quPO_1OltH0,39244
35
35
  metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
36
36
  metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
37
37
  metaflow/util.py,sha256=g2SOU_CRzJLgDM_UGF9QDMANMAIHAsDRXE6S76_YzsY,14594
38
38
  metaflow/vendor.py,sha256=A82CGHfStZGDP5pQ5XzRjFkbN1ZC-vFmghXIrzMDDNg,5868
39
- metaflow/version.py,sha256=2J_IXkHqXFrodGNg-Y7Z3htOZyDXf981-w3m3CYkAXI,28
39
+ metaflow/version.py,sha256=j-5Xjp6k9jr89uo7zqXR9auyDCCWozyQgBHgn9_8I8M,28
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
@@ -157,7 +157,7 @@ metaflow/cli_components/run_cmds.py,sha256=_xk2asy3SkqsJfZVhbgYSJ2rkkJe7cvLik6b0
157
157
  metaflow/cli_components/step_cmd.py,sha256=zGJgTv7wxrv34nWDi__CHaC2eS6kItR95EdVGJX803w,4766
158
158
  metaflow/cli_components/utils.py,sha256=gpoDociadjnJD7MuiJup_MDR02ZJjjleejr0jPBu29c,6057
159
159
  metaflow/client/__init__.py,sha256=1GtQB4Y_CBkzaxg32L1syNQSlfj762wmLrfrDxGi1b8,226
160
- metaflow/client/core.py,sha256=6h4oohNXZkP2QC0M4dKdrwz5Zx5s6j1_DIWB8VYmbN0,83734
160
+ metaflow/client/core.py,sha256=8YuIBjk0Sr3AwBpnQIhHQK9hAzEwsYZsWWvetWRUJi0,84162
161
161
  metaflow/client/filecache.py,sha256=Wy0yhhCqC1JZgebqi7z52GCwXYnkAqMZHTtxThvwBgM,15229
162
162
  metaflow/cmd/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
163
163
  metaflow/cmd/configure_cmd.py,sha256=o-DKnUf2FBo_HiMVyoyzQaGBSMtpbEPEdFTQZ0hkU-k,33396
@@ -428,12 +428,12 @@ metaflow/user_decorators/mutable_flow.py,sha256=EywKTN3cnXPQF_s62wQaC4a4aH14j8oe
428
428
  metaflow/user_decorators/mutable_step.py,sha256=-BY0UDXf_RCAEnC5JlLzEXGdiw1KD9oSrSxS_SWaB9Y,16791
429
429
  metaflow/user_decorators/user_flow_decorator.py,sha256=2yDwZq9QGv9W-7kEuKwa8o4ZkTvuHJ5ESz7VVrGViAI,9890
430
430
  metaflow/user_decorators/user_step_decorator.py,sha256=4558NR8RJtN22OyTwCXO80bAMhMTaRGMoX12b1GMcPc,27232
431
- metaflow-2.18.4.data/data/share/metaflow/devtools/Makefile,sha256=TT4TCq8ALSfqYyGqDPocN5oPcZe2FqoCZxmGO1LmyCc,13760
432
- metaflow-2.18.4.data/data/share/metaflow/devtools/Tiltfile,sha256=Ty5p6AD3MwJAcAnOGv4yMz8fExAsnNQ11r8whK6uzzw,21381
433
- metaflow-2.18.4.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
434
- metaflow-2.18.4.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
435
- metaflow-2.18.4.dist-info/METADATA,sha256=6vkbwjmfHjPfpBT3u1KoTsR7WR_3ka9xHtww938fqi0,6740
436
- metaflow-2.18.4.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
437
- metaflow-2.18.4.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
438
- metaflow-2.18.4.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
439
- metaflow-2.18.4.dist-info/RECORD,,
431
+ metaflow-2.18.5.data/data/share/metaflow/devtools/Makefile,sha256=TT4TCq8ALSfqYyGqDPocN5oPcZe2FqoCZxmGO1LmyCc,13760
432
+ metaflow-2.18.5.data/data/share/metaflow/devtools/Tiltfile,sha256=Ty5p6AD3MwJAcAnOGv4yMz8fExAsnNQ11r8whK6uzzw,21381
433
+ metaflow-2.18.5.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
434
+ metaflow-2.18.5.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
435
+ metaflow-2.18.5.dist-info/METADATA,sha256=sjfM1I825FwjvAscfoOhfUei4-SO9W_kWlZBXgbJGKc,6740
436
+ metaflow-2.18.5.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
437
+ metaflow-2.18.5.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
438
+ metaflow-2.18.5.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
439
+ metaflow-2.18.5.dist-info/RECORD,,