metaflow 2.18.12__py2.py3-none-any.whl → 2.19.0__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.
Files changed (52) hide show
  1. metaflow/__init__.py +1 -0
  2. metaflow/cli.py +78 -13
  3. metaflow/cli_components/run_cmds.py +182 -39
  4. metaflow/cli_components/step_cmd.py +160 -4
  5. metaflow/client/__init__.py +1 -0
  6. metaflow/client/core.py +162 -99
  7. metaflow/client/filecache.py +59 -32
  8. metaflow/cmd/code/__init__.py +2 -1
  9. metaflow/datastore/__init__.py +1 -0
  10. metaflow/datastore/content_addressed_store.py +40 -9
  11. metaflow/datastore/datastore_set.py +10 -1
  12. metaflow/datastore/flow_datastore.py +123 -4
  13. metaflow/datastore/spin_datastore.py +91 -0
  14. metaflow/datastore/task_datastore.py +86 -2
  15. metaflow/decorators.py +75 -6
  16. metaflow/extension_support/__init__.py +372 -305
  17. metaflow/flowspec.py +3 -2
  18. metaflow/graph.py +2 -2
  19. metaflow/metaflow_config.py +41 -0
  20. metaflow/metaflow_profile.py +18 -0
  21. metaflow/packaging_sys/utils.py +2 -39
  22. metaflow/packaging_sys/v1.py +63 -16
  23. metaflow/plugins/__init__.py +2 -0
  24. metaflow/plugins/argo/argo_workflows.py +20 -25
  25. metaflow/plugins/argo/param_val.py +19 -0
  26. metaflow/plugins/cards/card_datastore.py +13 -13
  27. metaflow/plugins/cards/card_decorator.py +1 -0
  28. metaflow/plugins/cards/card_modules/basic.py +9 -3
  29. metaflow/plugins/datastores/local_storage.py +12 -6
  30. metaflow/plugins/datastores/spin_storage.py +12 -0
  31. metaflow/plugins/datatools/s3/s3.py +29 -10
  32. metaflow/plugins/datatools/s3/s3op.py +90 -62
  33. metaflow/plugins/metadata_providers/local.py +76 -82
  34. metaflow/plugins/metadata_providers/spin.py +16 -0
  35. metaflow/runner/click_api.py +4 -2
  36. metaflow/runner/metaflow_runner.py +210 -19
  37. metaflow/runtime.py +348 -21
  38. metaflow/task.py +61 -12
  39. metaflow/user_configs/config_parameters.py +2 -4
  40. metaflow/user_decorators/mutable_flow.py +1 -1
  41. metaflow/user_decorators/user_step_decorator.py +10 -1
  42. metaflow/util.py +191 -1
  43. metaflow/version.py +1 -1
  44. {metaflow-2.18.12.data → metaflow-2.19.0.data}/data/share/metaflow/devtools/Makefile +10 -0
  45. {metaflow-2.18.12.dist-info → metaflow-2.19.0.dist-info}/METADATA +2 -4
  46. {metaflow-2.18.12.dist-info → metaflow-2.19.0.dist-info}/RECORD +52 -48
  47. {metaflow-2.18.12.data → metaflow-2.19.0.data}/data/share/metaflow/devtools/Tiltfile +0 -0
  48. {metaflow-2.18.12.data → metaflow-2.19.0.data}/data/share/metaflow/devtools/pick_services.sh +0 -0
  49. {metaflow-2.18.12.dist-info → metaflow-2.19.0.dist-info}/WHEEL +0 -0
  50. {metaflow-2.18.12.dist-info → metaflow-2.19.0.dist-info}/entry_points.txt +0 -0
  51. {metaflow-2.18.12.dist-info → metaflow-2.19.0.dist-info}/licenses/LICENSE +0 -0
  52. {metaflow-2.18.12.dist-info → metaflow-2.19.0.dist-info}/top_level.txt +0 -0
@@ -542,7 +542,7 @@ def user_step_decorator(*args, **kwargs):
542
542
 
543
543
  ```
544
544
  @user_step_decorator
545
- def timing(step_name, flow, inputs):
545
+ def timing(step_name, flow, inputs, attributes):
546
546
  start_time = time.time()
547
547
  yield
548
548
  end_time = time.time()
@@ -559,6 +559,15 @@ def user_step_decorator(*args, **kwargs):
559
559
  ```
560
560
 
561
561
  Your generator should:
562
+ - take 3 or 4 arguments: step_name, flow, inputs, and attributes (optional)
563
+ - step_name: the name of the step
564
+ - flow: the flow object
565
+ - inputs: the inputs to the step
566
+ - attributes: the kwargs passed in when initializing the decorator. In the
567
+ example above, something like `@timing(arg1="foo", arg2=42)` would make
568
+ `attributes = {"arg1": "foo", "arg2": 42}`. If you choose to pass arguments
569
+ to the decorator when you apply it to the step, your function *must* take
570
+ 4 arguments (step_name, flow, inputs, attributes).
562
571
  - yield at most once -- if you do not yield, the step will not execute.
563
572
  - yield:
564
573
  - None
metaflow/util.py CHANGED
@@ -4,10 +4,12 @@ import sys
4
4
  import tempfile
5
5
  import zlib
6
6
  import base64
7
+ import re
8
+
7
9
  from functools import wraps
8
10
  from io import BytesIO
9
11
  from itertools import takewhile
10
- import re
12
+ from typing import Dict, Any, Tuple, Optional, List, Generator
11
13
 
12
14
 
13
15
  try:
@@ -178,6 +180,119 @@ def resolve_identity():
178
180
  return "%s:%s" % (identity_type, identity_value)
179
181
 
180
182
 
183
+ def parse_spin_pathspec(pathspec: str, flow_name: str) -> Tuple:
184
+ """
185
+ Parse various pathspec formats for the spin command.
186
+
187
+ Parameters
188
+ ----------
189
+ pathspec : str
190
+ The pathspec string in one of the following formats:
191
+ - step_name (e.g., 'start')
192
+ - run_id/step_name (e.g., '221165/start')
193
+ - run_id/step_name/task_id (e.g., '221165/start/1350987')
194
+ - flow_name/run_id/step_name (e.g., 'ScalableFlow/221165/start')
195
+ - flow_name/run_id/step_name/task_id (e.g., 'ScalableFlow/221165/start/1350987')
196
+ flow_name : str
197
+ The name of the current flow.
198
+
199
+ Returns
200
+ -------
201
+ Tuple
202
+ A tuple of (step_name, full_pathspec_or_none)
203
+
204
+ Raises
205
+ ------
206
+ CommandException
207
+ If the pathspec format is invalid or flow name doesn't match.
208
+ """
209
+ from .exception import CommandException
210
+
211
+ parts = pathspec.split("/")
212
+
213
+ if len(parts) == 1:
214
+ # Just step name: 'start'
215
+ step_name = parts[0]
216
+ parsed_pathspec = None
217
+ elif len(parts) == 2:
218
+ # run_id/step_name: '221165/start'
219
+ run_id, step_name = parts
220
+ parsed_pathspec = f"{flow_name}/{run_id}/{step_name}"
221
+ elif len(parts) == 3:
222
+ # Could be run_id/step_name/task_id or flow_name/run_id/step_name
223
+ if parts[0] == flow_name:
224
+ # flow_name/run_id/step_name
225
+ _, run_id, step_name = parts
226
+ parsed_pathspec = f"{flow_name}/{run_id}/{step_name}"
227
+ else:
228
+ # run_id/step_name/task_id
229
+ run_id, step_name, task_id = parts
230
+ parsed_pathspec = f"{flow_name}/{run_id}/{step_name}/{task_id}"
231
+ elif len(parts) == 4:
232
+ # flow_name/run_id/step_name/task_id
233
+ parsed_flow_name, run_id, step_name, task_id = parts
234
+ if parsed_flow_name != flow_name:
235
+ raise CommandException(
236
+ f"Flow name '{parsed_flow_name}' in pathspec does not match current flow '{flow_name}'."
237
+ )
238
+ parsed_pathspec = pathspec
239
+ else:
240
+ raise CommandException(
241
+ f"Invalid pathspec format: '{pathspec}'. \n"
242
+ "Expected formats:\n"
243
+ " - step_name (e.g., 'start')\n"
244
+ " - run_id/step_name (e.g., '221165/start')\n"
245
+ " - run_id/step_name/task_id (e.g., '221165/start/1350987')\n"
246
+ " - flow_name/run_id/step_name (e.g., 'ScalableFlow/221165/start')\n"
247
+ " - flow_name/run_id/step_name/task_id (e.g., 'ScalableFlow/221165/start/1350987')"
248
+ )
249
+
250
+ return step_name, parsed_pathspec
251
+
252
+
253
+ def get_latest_task_pathspec(
254
+ flow_name: str, step_name: str, run_id: str = None
255
+ ) -> "metaflow.Task":
256
+ """
257
+ Returns a task pathspec from the latest run (or specified run) of the flow for the queried step.
258
+ If the queried step has several tasks, the task pathspec of the first task is returned.
259
+
260
+ Parameters
261
+ ----------
262
+ flow_name : str
263
+ The name of the flow.
264
+ step_name : str
265
+ The name of the step.
266
+ run_id : str, optional
267
+ The run ID to use. If None, uses the latest run.
268
+
269
+ Returns
270
+ -------
271
+ Task
272
+ A Metaflow Task instance containing the latest task for the queried step.
273
+
274
+ Raises
275
+ ------
276
+ MetaflowNotFound
277
+ If no task or run is found for the queried step.
278
+ """
279
+ from metaflow import Flow, Step
280
+ from metaflow.exception import MetaflowNotFound
281
+
282
+ if not run_id:
283
+ flow = Flow(flow_name)
284
+ run = flow.latest_run
285
+ if run is None:
286
+ raise MetaflowNotFound(f"No run found for flow {flow_name}")
287
+ run_id = run.id
288
+
289
+ try:
290
+ task = Step(f"{flow_name}/{run_id}/{step_name}").task
291
+ return task
292
+ except:
293
+ raise MetaflowNotFound(f"No task found for step {step_name} in run {run_id}")
294
+
295
+
181
296
  def get_latest_run_id(echo, flow_name):
182
297
  from metaflow.plugins.datastores.local_storage import LocalStorage
183
298
 
@@ -471,3 +586,78 @@ def to_pod(value):
471
586
 
472
587
 
473
588
  from metaflow._vendor.packaging.version import parse as version_parse
589
+
590
+
591
+ def read_artifacts_module(file_path: str) -> Dict[str, Any]:
592
+ """
593
+ Read a Python module from the given file path and return its ARTIFACTS variable.
594
+
595
+ Parameters
596
+ ----------
597
+ file_path : str
598
+ The path to the Python file containing the ARTIFACTS variable.
599
+
600
+ Returns
601
+ -------
602
+ Dict[str, Any]
603
+ A dictionary containing the ARTIFACTS variable from the module.
604
+
605
+ Raises
606
+ -------
607
+ MetaflowInternalError
608
+ If the file cannot be read or does not contain the ARTIFACTS variable.
609
+ """
610
+ import importlib.util
611
+ import os
612
+
613
+ try:
614
+ module_name = os.path.splitext(os.path.basename(file_path))[0]
615
+ spec = importlib.util.spec_from_file_location(module_name, file_path)
616
+ module = importlib.util.module_from_spec(spec)
617
+ spec.loader.exec_module(module)
618
+ variables = vars(module)
619
+ if "ARTIFACTS" not in variables:
620
+ raise MetaflowInternalError(
621
+ f"Module {file_path} does not contain ARTIFACTS variable"
622
+ )
623
+ return variables.get("ARTIFACTS")
624
+ except Exception as e:
625
+ raise MetaflowInternalError(f"Error reading file {file_path}") from e
626
+
627
+
628
+ # this is os.walk(follow_symlinks=True) with cycle detection
629
+ def walk_without_cycles(
630
+ top_root: str,
631
+ exclude_dirs: Optional[List[str]] = None,
632
+ ) -> Generator[Tuple[str, List[str], List[str]], None, None]:
633
+ seen = set()
634
+
635
+ default_skip_dirs = ["__pycache__"]
636
+
637
+ def _recurse(root, skip_dirs):
638
+ for parent, dirs, files in os.walk(root):
639
+ dirs[:] = [d for d in dirs if d not in skip_dirs]
640
+ for d in dirs:
641
+ path = os.path.join(parent, d)
642
+ if os.path.islink(path):
643
+ # Breaking loops: never follow the same symlink twice
644
+ #
645
+ # NOTE: this also means that links to sibling links are
646
+ # not followed. In this case:
647
+ #
648
+ # x -> y
649
+ # y -> oo
650
+ # oo/real_file
651
+ #
652
+ # real_file is only included twice, not three times
653
+ reallink = os.path.realpath(path)
654
+ if reallink not in seen:
655
+ seen.add(reallink)
656
+ for x in _recurse(path, default_skip_dirs):
657
+ yield x
658
+ yield parent, dirs, files
659
+
660
+ skip_dirs = set(default_skip_dirs + (exclude_dirs or []))
661
+ for x in _recurse(top_root, skip_dirs):
662
+ skip_dirs = default_skip_dirs
663
+ yield x
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.18.12"
1
+ metaflow_version = "2.19.0"
@@ -31,6 +31,7 @@ MAKE_CMD := $(MAKE) -f "$(MKFILE_PATH)"
31
31
  MINIKUBE_CPUS ?= 4
32
32
  MINIKUBE_MEMORY ?= 6144
33
33
  MINIKUBE_DISK_SIZE ?= 20g
34
+ WAIT_TIMEOUT ?= 300
34
35
 
35
36
  ifeq ($(shell uname), Darwin)
36
37
  minikube_os = darwin
@@ -269,6 +270,15 @@ shell: setup-tilt
269
270
  "$$user_shell" -i; \
270
271
  fi'
271
272
 
273
+ wait-until-ready:
274
+ @echo "Waiting for infrastructure to be ready. Timing out in $(WAIT_TIMEOUT) seconds..."
275
+ @timeout $(WAIT_TIMEOUT) bash -c 'while [ ! -f $(DEVTOOLS_DIR)/start.sh ]; do sleep 10; done; echo "Infra is Ready"' || (echo "Waiting for infra timed out"&&exit 1)
276
+ # buffer to get the tilt api running
277
+ @timeout 120 bash -c 'while ! $(TILT) get session; do sleep 3;done'
278
+ @echo "Waiting for services to be ready. Timing out in $(WAIT_TIMEOUT) seconds..."
279
+ # Need to wait for Tiltfile first, as other resources return 404 otherwise
280
+ @$(TILT) wait --for=condition=Ready "uiresource/(Tiltfile)" --timeout=$(WAIT_TIMEOUT)s
281
+ @$(TILT) wait --for=condition=Ready uiresource/generate-configs --timeout=$(WAIT_TIMEOUT)s
272
282
 
273
283
  # @echo '$(MAKE_CMD) create-dev-shell' >> $(DEVTOOLS_DIR)/start.sh
274
284
  # @echo 'rm -f /tmp/metaflow-devshell-*' >> $(DEVTOOLS_DIR)/start.sh
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metaflow
3
- Version: 2.18.12
3
+ Version: 2.19.0
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.12; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.19.0; extra == "stubs"
30
30
  Dynamic: author
31
31
  Dynamic: author-email
32
32
  Dynamic: classifier
@@ -101,5 +101,3 @@ We'd love to hear from you. Join our community [Slack workspace](http://slack.ou
101
101
 
102
102
  ## Contributing
103
103
  We welcome contributions to Metaflow. Please see our [contribution guide](https://docs.metaflow.org/introduction/contributing-to-metaflow) for more details.
104
-
105
-
@@ -1,27 +1,27 @@
1
1
  metaflow/R.py,sha256=CqVfIatvmjciuICNnoyyNGrwE7Va9iXfLdFbQa52hwA,3958
2
- metaflow/__init__.py,sha256=8V_NsmWtat2FnIUp5GenscY0vz4egOkIlpNjqwtTJnY,6051
2
+ metaflow/__init__.py,sha256=xLfOTV-ORb1w6zZAaesNAtmUZbcq5JknEHe_ha0qoCA,6069
3
3
  metaflow/cards.py,sha256=ltZucLBYCaDQc79p51Eo0mx6RseyIEY0yRGnLxZDvt4,508
4
- metaflow/cli.py,sha256=uF1ACHw3aWCe6ypFP1SplMZWVA8dgtMYc2z6I4v5neA,22802
4
+ metaflow/cli.py,sha256=YfxNrRHOK-nrCgHB-9jVxxIfkYKJWi1As-uL_4Sydbs,25472
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
8
8
  metaflow/debug.py,sha256=DDUYLWLAZ4Shg_uXz67BD2nRt8Gilemhlbv9YccKVt4,1656
9
- metaflow/decorators.py,sha256=4g11F5xtXmKRMNfeFd9yKOWpiHAoyxfbfDqIWak1_Q0,30831
9
+ metaflow/decorators.py,sha256=vvO8VpYX4viwG1F0MTYqpMTOu0SDEFCsw_b19B_QoTI,32543
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=9wsO2_QoO_VHKusKdpslfbwQREOwf0fAzF-DSEA0iZ8,41968
14
- metaflow/graph.py,sha256=UOeClj-JeORRlZWOQMI1CirkrCpTvVWvRcSwODCajMg,19263
13
+ metaflow/flowspec.py,sha256=_s5e75Zy8D3hTbmGafqlkBOLhmuHGbDHTiBqidCpHpM,42014
14
+ metaflow/graph.py,sha256=b7-5hStqurdTO0RFVEhtUcwrPh2Xt3gTZkAE_B2LSOM,19311
15
15
  metaflow/includefile.py,sha256=NXERo_halboBCjvnS5iCjnBMyCMlQMnT2mRe6kxl2xU,21978
16
16
  metaflow/integrations.py,sha256=LlsaoePRg03DjENnmLxZDYto3NwWc9z_PtU6nJxLldg,1480
17
17
  metaflow/lint.py,sha256=A2NdUq_MnQal_RUCMC8ZOSR0VYZGyi2mSgwPQB0UzQo,15343
18
18
  metaflow/meta_files.py,sha256=vlgJHI8GJUKzXoxdrVoH8yyCF5bhFgwYemUgnyd1wgM,342
19
- metaflow/metaflow_config.py,sha256=Abn_4SiqpdrmMOSGYlFnEUUzVJqwfTFpvYwXlpXwcMw,24551
19
+ metaflow/metaflow_config.py,sha256=S8TsauhOqjkhF2dXlSpQTC8wyCGYWwKGN4ZgDERUYes,25633
20
20
  metaflow/metaflow_config_funcs.py,sha256=5GlvoafV6SxykwfL8D12WXSfwjBN_NsyuKE_Q3gjGVE,6738
21
21
  metaflow/metaflow_current.py,sha256=pfkXmkyHeMJhxIs6HBJNBEaBDpcl5kz9Wx5mW6F_3qo,7164
22
22
  metaflow/metaflow_environment.py,sha256=20PIhA5R_rJneNj8f8UaWRmznGRPcEd6hP7goj_rc1s,11477
23
23
  metaflow/metaflow_git.py,sha256=Pb_VtvQzcjpuuM7UfC2u5kz85EbPMUfspl2UrPWBQMM,3647
24
- metaflow/metaflow_profile.py,sha256=jKPEW-hmAQO-htSxb9hXaeloLacAh41A35rMZH6G8pA,418
24
+ metaflow/metaflow_profile.py,sha256=U-HSQKcYoxSfYwWTrc4A-ui2ZUZtiAIetoA4veNCZ5g,773
25
25
  metaflow/metaflow_version.py,sha256=iuL9QoWjvUpGKIRp6dM9zxp0ED_iqXNihl__Qu9f1dc,8115
26
26
  metaflow/monitor.py,sha256=T0NMaBPvXynlJAO_avKtk8OIIRMyEuMAyF8bIp79aZU,5323
27
27
  metaflow/multicore_utils.py,sha256=yEo5T6Gemn4_vl8b6IOz7fsTUYtEyqa3AaKZgJY96Wc,4974
@@ -29,14 +29,14 @@ metaflow/parameters.py,sha256=Gr3-gnocWdZ3SLoPeP2UA0cXZWSwMz-d6SGjCWJRaKk,18825
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=HOYo6A3e-kvZMTBqVi--WHF3zYNYKSOTUwAB_ywuMok,87500
32
+ metaflow/runtime.py,sha256=5W5uUMHbGRcyiYaq1dleomO35iKQEOtSB4uHN7QBA_M,99154
33
33
  metaflow/tagging_util.py,sha256=ctyf0Q1gBi0RyZX6J0e9DQGNkNHblV_CITfy66axXB4,2346
34
- metaflow/task.py,sha256=jnh_qteVIW0sP3Y2MBfJR2eEv_MGnOW1quPO_1OltH0,39244
34
+ metaflow/task.py,sha256=9-YhuA5sppqutk73t3cjfiZarTE07wbxO67JGxqly8s,41967
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
37
+ metaflow/util.py,sha256=nyX0NWJAIRk1gImohMYvuS2ZoQup9VO1aiNEIN4Y1Ik,21035
38
38
  metaflow/vendor.py,sha256=A82CGHfStZGDP5pQ5XzRjFkbN1ZC-vFmghXIrzMDDNg,5868
39
- metaflow/version.py,sha256=LEAeq12k2u6Mfx_BKRFo6XFbIXmlvtKvNKon7OjzR2k,29
39
+ metaflow/version.py,sha256=qETWnVxtUqUyb8ECH54oQShqWwsTfZqD5ebw9G8DF4I,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
@@ -153,31 +153,32 @@ metaflow/_vendor/yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp
153
153
  metaflow/cli_components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
154
  metaflow/cli_components/dump_cmd.py,sha256=SZEX51BWNd1o3H2uHDkYA8KRvou5X8g5rTwpdu5vnNQ,2704
155
155
  metaflow/cli_components/init_cmd.py,sha256=AIkQHNlMRsmf8fxXwXQSEWTuv_9nxNY82-IdWsgGjEs,1554
156
- metaflow/cli_components/run_cmds.py,sha256=_xk2asy3SkqsJfZVhbgYSJ2rkkJe7cvLik6b0HT-704,12264
157
- metaflow/cli_components/step_cmd.py,sha256=zGJgTv7wxrv34nWDi__CHaC2eS6kItR95EdVGJX803w,4766
156
+ metaflow/cli_components/run_cmds.py,sha256=U-doiT_zqoROeeesB7OG4vDE6beWdQip9lSIiyyM5sg,17318
157
+ metaflow/cli_components/step_cmd.py,sha256=FrHsMYydoDFBfayz71BKckMbjubIm2hT6c8nJql01fg,9267
158
158
  metaflow/cli_components/utils.py,sha256=gpoDociadjnJD7MuiJup_MDR02ZJjjleejr0jPBu29c,6057
159
- metaflow/client/__init__.py,sha256=1GtQB4Y_CBkzaxg32L1syNQSlfj762wmLrfrDxGi1b8,226
160
- metaflow/client/core.py,sha256=8YuIBjk0Sr3AwBpnQIhHQK9hAzEwsYZsWWvetWRUJi0,84162
161
- metaflow/client/filecache.py,sha256=Wy0yhhCqC1JZgebqi7z52GCwXYnkAqMZHTtxThvwBgM,15229
159
+ metaflow/client/__init__.py,sha256=KQQkAAfNwwUYxbHKW2I2yRWGj9o4HerG3xDQOClcGl0,244
160
+ metaflow/client/core.py,sha256=ZnyW_mDl-OcFYtqd2UhQpulcbsmSPNtU-aNTRXEGoqs,86935
161
+ metaflow/client/filecache.py,sha256=tCLQH0rPJlImW82Ipz6gN4oRGJiDMvzDVFfb_l8GgwM,15978
162
162
  metaflow/cmd/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
163
163
  metaflow/cmd/configure_cmd.py,sha256=o-DKnUf2FBo_HiMVyoyzQaGBSMtpbEPEdFTQZ0hkU-k,33396
164
164
  metaflow/cmd/main_cli.py,sha256=iKptsPcys0OKileZdE8Pp0_y8t7pm94SL3b870Qhk30,2972
165
165
  metaflow/cmd/make_wrapper.py,sha256=5uWZw_2jqYmI7gm1pGwPxXCII56WBKarNKJp9FRMN3c,3029
166
166
  metaflow/cmd/tutorials_cmd.py,sha256=8FdlKkicTOhCIDKcBR5b0Oz6giDvS-EMY3o9skIrRqw,5156
167
167
  metaflow/cmd/util.py,sha256=jS_0rUjOnGGzPT65fzRLdGjrYAOOLA4jU2S0HJLV0oc,406
168
- metaflow/cmd/code/__init__.py,sha256=VO4dNM9M9LHYy5nTgEiJvCV1RBl8lpDlYGJm6GIcaBA,7413
168
+ metaflow/cmd/code/__init__.py,sha256=tb8BpNPqRIaem3f1yZRExbF8FJhqwUuf1N7SZkBDK5U,7446
169
169
  metaflow/cmd/develop/__init__.py,sha256=p1Sy8yU1MEKSrH5ttOWOZvNcI1qYu6J6jghdTHwPgOw,689
170
170
  metaflow/cmd/develop/stub_generator.py,sha256=PQBbYm7j-GuK-BdaNG5FQ-lOc6suvfHll8XdyFxpZGY,66980
171
171
  metaflow/cmd/develop/stubs.py,sha256=J8DtpaN3okiPeeAqhxuUe9wQDlW4YYmZgKsVZLlVt0k,11181
172
- metaflow/datastore/__init__.py,sha256=VxP6ddJt3rwiCkpiSfAhyVkUCOe1pgZZsytVEJzFmSQ,155
173
- metaflow/datastore/content_addressed_store.py,sha256=6T7tNqL29kpmecyMLHF35RhoSBOb-OZcExnsB65AvnI,7641
174
- metaflow/datastore/datastore_set.py,sha256=R5pwnxg1DD8kBY9vElvd2eMknrvwTyiSwvQs67_z9bc,2361
172
+ metaflow/datastore/__init__.py,sha256=JxpvwwhBfkKjZ9kZ3QVUIbelfFrZeWkCOpqif1cfbFo,201
173
+ metaflow/datastore/content_addressed_store.py,sha256=2ZDn9wpurtHYNwBbwca0ipzHciVgoUZryt3xT1RHMe4,9322
174
+ metaflow/datastore/datastore_set.py,sha256=WDgGeySHtt5hr6u3L1XMmd3b_yAJz6_2Ip_bj_Ygsms,2614
175
175
  metaflow/datastore/datastore_storage.py,sha256=7V43QuiWDQ_Q4oHw9y7Z7X9lYj3GI-LV1-xB3d2Tt5k,9038
176
176
  metaflow/datastore/exceptions.py,sha256=r7Ab5FvHIzyFh6kwiptA1lO5nLqWg0xRBoeYGefvapA,373
177
- metaflow/datastore/flow_datastore.py,sha256=rDMEHdYwub1PwLp2uaK-8CHdd8hiwxqeELXzsUfuqZs,10250
177
+ metaflow/datastore/flow_datastore.py,sha256=UeZ-dagR2ru8dmMWLThTat7tQnh3v4YcGskYUanhrYg,14727
178
178
  metaflow/datastore/inputs.py,sha256=i43dXr2xvgtsgKMO9allgCR18bk80GeayeQFyUTH36w,449
179
- metaflow/datastore/task_datastore.py,sha256=XZKC4YJ2kyFTDqwTARNavjQ-oSosjUJbNH777e9OF0c,35262
180
- metaflow/extension_support/__init__.py,sha256=xLkhh0IzQ70IfF9j6MopMY02SMpEVI_eguksIOEXbDs,52522
179
+ metaflow/datastore/spin_datastore.py,sha256=5bhtVNWl4131pMKtBN72DLHxc72QX46JO0sV7r6IpVY,3035
180
+ metaflow/datastore/task_datastore.py,sha256=i9hBON-J0ECV_1uaqAtUGzPcd949mnYQBsqaJfVt15Q,38332
181
+ metaflow/extension_support/__init__.py,sha256=ySzHhtJXS4SCgi6JlxAWQKx0G7WJlyw7bhh9fEYKN8g,55880
181
182
  metaflow/extension_support/_empty_file.py,sha256=vz61sSExf5DZH3JCqdfwkp7l_NrJR8HV175kG82yUas,133
182
183
  metaflow/extension_support/cmd.py,sha256=hk8iBUUINqvKCDxInKgWpum8ThiRZtHSJP7qBASHzl8,5711
183
184
  metaflow/extension_support/integrations.py,sha256=AWAh-AZ-vo9IxuAVEjGw3s8p_NMm2DKHYx10oC51gPU,5506
@@ -196,9 +197,9 @@ metaflow/packaging_sys/__init__.py,sha256=HzpznaW1T9xppCIsxI7MzcTIu6QasyDZ3pJ5fR
196
197
  metaflow/packaging_sys/backend.py,sha256=uiJNMTTh3RV9_Zqkd5MBd2TnukfxpY2OEGBOmDroeTM,3534
197
198
  metaflow/packaging_sys/distribution_support.py,sha256=VvikZBCH8N1TBZZ2Twk8jH1brmiinKWCD3y_aFqBsIw,4937
198
199
  metaflow/packaging_sys/tar_backend.py,sha256=nFWuXiwYjWQkFdV2KaZ6gazNVvtY84Eqsh9txhU3pNY,3010
199
- metaflow/packaging_sys/utils.py,sha256=x8SVglJvY5mIAilS7MqZi2PpMr6IEyi6RCg3l8hN3G0,2972
200
- metaflow/packaging_sys/v1.py,sha256=kbNK0-pDAv3QJPZ789TE0UirGXcHbXkVQiyNT815H7A,20631
201
- metaflow/plugins/__init__.py,sha256=XBocLBSWEPAeeakhTb6HGuocykkVukmnUuQgg-gGWEk,8662
200
+ metaflow/packaging_sys/utils.py,sha256=1TyFiicfbsEslNH3rT-be6YRld8EMRpVmXcLEhYqW2E,1602
201
+ metaflow/packaging_sys/v1.py,sha256=aEnqfHwVYxvFM2yWmP-QTjC-mN_oEnO6WPKDQRPcIs8,23139
202
+ metaflow/plugins/__init__.py,sha256=nUVrwjX1Uizfp7M7WZw9akFrpfU0d-NS1ChVZQCVtrg,8779
202
203
  metaflow/plugins/catch_decorator.py,sha256=vorlDA6MLB2yHSsEuBoNzAZbrJ6Vknj1qJO9vey2_AI,4523
203
204
  metaflow/plugins/debug_logger.py,sha256=mcF5HYzJ0NQmqCMjyVUk3iAP-heroHRIiVWQC6Ha2-I,879
204
205
  metaflow/plugins/debug_monitor.py,sha256=Md5X_sDOSssN9pt2D8YcaIjTK5JaQD55UAYTcF6xYF0,1099
@@ -231,7 +232,7 @@ metaflow/plugins/airflow/sensors/s3_sensor.py,sha256=iDReG-7FKnumrtQg-HY6cCUAAqN
231
232
  metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
233
  metaflow/plugins/argo/argo_client.py,sha256=oT4ZrCyE7CYEbqNN0SfoZfSHd5fYW9XtuOrQEiUd1co,17230
233
234
  metaflow/plugins/argo/argo_events.py,sha256=_C1KWztVqgi3zuH57pInaE9OzABc2NnncC-zdwOMZ-w,5909
234
- metaflow/plugins/argo/argo_workflows.py,sha256=89C72toG6tzsix8oZ3wr5DBEn_88GjydEWzvcL3L1S0,217637
235
+ metaflow/plugins/argo/argo_workflows.py,sha256=eq_Q4gxjHoZuJItPKYjZvku_J3mc56g3GpMlSQTIiKE,217407
235
236
  metaflow/plugins/argo/argo_workflows_cli.py,sha256=GRDsiE8QT9HEdeAUODtyyGiqePhShSkwJJ8tiPQwwiI,52992
236
237
  metaflow/plugins/argo/argo_workflows_decorator.py,sha256=CLSjPqFTGucZ2_dSQGAYkoWWUZBQ9TCBXul4rxhDj3w,8282
237
238
  metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
@@ -241,6 +242,7 @@ metaflow/plugins/argo/conditional_input_paths.py,sha256=Vtca74XbhnqAXgJJXKasLEa2
241
242
  metaflow/plugins/argo/exit_hooks.py,sha256=nh8IEkzAtQnbKVnh3N9CVnVKZB39Bjm3e0LFrACsLz8,6109
242
243
  metaflow/plugins/argo/generate_input_paths.py,sha256=loYsI6RFX9LlFsHb7Fe-mzlTTtRdySoOu7sYDy-uXK0,881
243
244
  metaflow/plugins/argo/jobset_input_paths.py,sha256=-h0E_e0w6FMiBUod9Rf_XOSCtZv_C0exacw4q1SfIfg,501
245
+ metaflow/plugins/argo/param_val.py,sha256=qfMsXyT6bjfUz0eqNpbitFcps2G5XwJqOAoGLt4Jpxw,390
244
246
  metaflow/plugins/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
245
247
  metaflow/plugins/aws/aws_client.py,sha256=BTiLMXa1agjja-N73oWinaOZHs-lGPbfKJG8CqdRgaU,4287
246
248
  metaflow/plugins/aws/aws_utils.py,sha256=5mGZLu6wwTo2KzIke_MFqiomM3sYjAkU7Fx55dIMLfg,8561
@@ -275,8 +277,8 @@ metaflow/plugins/cards/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
275
277
  metaflow/plugins/cards/card_cli.py,sha256=h-ib-SXjJjAm-jSQC4pEmVcsM4M3lljSjOkZBxvAvRo,35763
276
278
  metaflow/plugins/cards/card_client.py,sha256=30dFBoC3axc261GeV7QCIs_V1OHhRtS31S0wEWsjw90,9501
277
279
  metaflow/plugins/cards/card_creator.py,sha256=Da4LOkRY3IJNcGQn1V6zlSdgVjgiFm6XMcsKOe_6v70,8784
278
- metaflow/plugins/cards/card_datastore.py,sha256=bPLjBFWNlAgIjONAb0IjYXMmp9vMYlh3EYhRjAlDA0U,12714
279
- metaflow/plugins/cards/card_decorator.py,sha256=lu_m95tZRIkPp1wMlcT80aZRCbjuFapyuPXuelFCMAc,14073
280
+ metaflow/plugins/cards/card_datastore.py,sha256=rU7mVJFVFyUZOn223y0OaxUgiqg0hNECMhqJ6ksMRdo,12941
281
+ metaflow/plugins/cards/card_decorator.py,sha256=H5UKY-jJzUdAb3jkZUhAuUS0eiIKwQWxF0_hJk96nU4,14074
280
282
  metaflow/plugins/cards/card_resolver.py,sha256=bjyujYpGUFbLJNwXNGHlHhL4f-gVdVKebl7XW1vWDtE,717
281
283
  metaflow/plugins/cards/card_server.py,sha256=DHv0RcepaPULWbkDahiEMrU5A281Cfb0DvHLUYd8JsU,11772
282
284
  metaflow/plugins/cards/component_serializer.py,sha256=kQ5umqSQne6bTgx8V8JNQbiz-kH2Ntu0VK3ZHxywXww,36912
@@ -284,7 +286,7 @@ metaflow/plugins/cards/exception.py,sha256=2UqlNb-Kxpg6cuLu2sBEIPTIElwlVBsSpeCgD
284
286
  metaflow/plugins/cards/metadata.py,sha256=tACaw7_XNAICZ4A25celIbgxUF0CxHh7BBpFzKrMLTo,487
285
287
  metaflow/plugins/cards/card_modules/__init__.py,sha256=WI2IAsFiKGyqPrHtO9S9-MbyVtUTgWJNL4xjJaBErRo,3437
286
288
  metaflow/plugins/cards/card_modules/base.html,sha256=Y208ZKIZqEWWUcoBFTLTdWKAG0C8xH5lmyCRSjaN2FY,21004
287
- metaflow/plugins/cards/card_modules/basic.py,sha256=bKU_b_Wfs2OC6me6kPp1Jm_SLvaJ4dkUCMAt2VLampk,26430
289
+ metaflow/plugins/cards/card_modules/basic.py,sha256=Q6MKp0RAmSB5ikmn9fN0VkakYxy__PZbQC_EGr7vfQk,26639
288
290
  metaflow/plugins/cards/card_modules/bundle.css,sha256=zlYjv5rt7lMqiQzd_OAe4QdQeM3J3YbwljnEghlbTaU,28052
289
291
  metaflow/plugins/cards/card_modules/card.py,sha256=6sbqP5mwf7QWvQvX2N_bC78H9ixuI5sQ8612Q5islys,4627
290
292
  metaflow/plugins/cards/card_modules/components.py,sha256=z9IT9gVpI22hUhGtJbgcy5oMpGzPeTof_lEkOOfMa9Q,46150
@@ -303,13 +305,14 @@ metaflow/plugins/cards/card_viewer/viewer.html,sha256=qZJGzhZhQ1gugsknRP7zkAPPfU
303
305
  metaflow/plugins/datastores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
304
306
  metaflow/plugins/datastores/azure_storage.py,sha256=GGzOxK8coHR9PQYmR39jn37D0s-XIJOVMuRKaJ3B8eo,16787
305
307
  metaflow/plugins/datastores/gs_storage.py,sha256=8KV4SM7GPI21-86UjMATmSCbVzxDHlMWlRsQ-zQngTg,9899
306
- metaflow/plugins/datastores/local_storage.py,sha256=igrBDphhyu7EFIUj3BWcO7beiZbNnJLq--lF45UYSyI,4750
308
+ metaflow/plugins/datastores/local_storage.py,sha256=7e-3RR-G77ZMpHAkjbFZFM7P6eA-8dIxaW0evUGptzE,4879
307
309
  metaflow/plugins/datastores/s3_storage.py,sha256=CZdNqaKtxDXQbEg2YHyphph3hWcLIE50puenm0WGVpk,5473
310
+ metaflow/plugins/datastores/spin_storage.py,sha256=yoARjaF03v0-UGWFxB26s0JvQYVtJwZaMrk5HlZwccU,352
308
311
  metaflow/plugins/datatools/__init__.py,sha256=ge4L16OBQLy2J_MMvoHg3lMfdm-MluQgRWoyZ5GCRnk,1267
309
312
  metaflow/plugins/datatools/local.py,sha256=FJvMOBcjdyhSPHmdLocBSiIT0rmKkKBmsaclxH75x08,4233
310
313
  metaflow/plugins/datatools/s3/__init__.py,sha256=14tr9fPjN3ULW5IOfKHeG7Uhjmgm7LMtQHfz1SFv-h8,248
311
- metaflow/plugins/datatools/s3/s3.py,sha256=b07QwYvfKvR1k0eZ_b5Hk4XQnQs3ORk6b0nvCwfZL8w,67324
312
- metaflow/plugins/datatools/s3/s3op.py,sha256=WFHEnsNZLEak-OEAJiwayEFm5d36JUbnV5QXxfbrO1s,48847
314
+ metaflow/plugins/datatools/s3/s3.py,sha256=5RoZiYG5RAWmNliJpPV5O_oUneksmyivJEzGfgWo_84,68249
315
+ metaflow/plugins/datatools/s3/s3op.py,sha256=aAV4oPduz00IuTRNn9Fd3rgj-KJUNbccEt-ML05D6Ho,50636
313
316
  metaflow/plugins/datatools/s3/s3tail.py,sha256=boQjQGQMI-bvTqcMP2y7uSlSYLcvWOy7J3ZUaF78NAA,2597
314
317
  metaflow/plugins/datatools/s3/s3util.py,sha256=FgRgaVmEq7-i2dV7q8XK5w5PfFt-xJjZa8WrK8IJfdI,3769
315
318
  metaflow/plugins/env_escape/__init__.py,sha256=tGNUZnmPvk52eNs__VK443b3CZ7ogEFTT-s9_n_HF8Q,8837
@@ -355,8 +358,9 @@ metaflow/plugins/kubernetes/kubernetes_jobsets.py,sha256=9DOGNdGnhOlaBsIp1Sl7ylI
355
358
  metaflow/plugins/kubernetes/spot_metadata_cli.py,sha256=an0nWCxgflmqIPBCBrlb4m3DereDFFJBLt-KKhqcHc8,1670
356
359
  metaflow/plugins/kubernetes/spot_monitor_sidecar.py,sha256=zrWU-smQwPnL6MBHmzTxWyEA00R6iKKQbhhy50xFwQ8,3832
357
360
  metaflow/plugins/metadata_providers/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
358
- metaflow/plugins/metadata_providers/local.py,sha256=Z0CXaGZJbAkj4II3WspJi-uCCtShH64yaXZQ5i9Ym7g,24390
361
+ metaflow/plugins/metadata_providers/local.py,sha256=iAOHp0vozFO5rlb-nkO6x8ZqTqCXrQLEMc-xzzC3TO8,23938
359
362
  metaflow/plugins/metadata_providers/service.py,sha256=WL3GkEQlQk0syjSZ6iOnBSb3nRGfeUye95ySvLnMwhg,22953
363
+ metaflow/plugins/metadata_providers/spin.py,sha256=VmM2utbYPHlGBIzVaE8HdBXb-dEVTuRpk49UTnEEcWQ,472
360
364
  metaflow/plugins/pypi/__init__.py,sha256=0YFZpXvX7HCkyBFglatual7XGifdA1RwC3U4kcizyak,1037
361
365
  metaflow/plugins/pypi/bootstrap.py,sha256=8EWBdwOp5moXkTfLadn3ZOtPXoGftjOFD-c2W_rn77c,14998
362
366
  metaflow/plugins/pypi/conda_decorator.py,sha256=fXG9EvImP4Eqle_Trhb3tQhs40xTc4cxL_r7r0BlJzo,14064
@@ -377,10 +381,10 @@ metaflow/plugins/uv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
377
381
  metaflow/plugins/uv/bootstrap.py,sha256=awFHAiZANkAlvHWCm3G1UbhVxEjJB8buoZoBa5GiKJc,4365
378
382
  metaflow/plugins/uv/uv_environment.py,sha256=AYZICrBEq3Bv-taXktJwu9DhKFxNooPFwlcH379EYMs,2719
379
383
  metaflow/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
380
- metaflow/runner/click_api.py,sha256=7DVM8XuiFPpIm4vs5VUp17faEU05ixbkMwyhtJ54FWo,24478
384
+ metaflow/runner/click_api.py,sha256=WmhbrjS0H2gz-AZDEDe5Jrkctf9SvV4XrfgIBPW7nUI,24530
381
385
  metaflow/runner/deployer.py,sha256=OAAMG_l3Q1ClcY_603VZnhclVkfFe3Rf8bFRodC3poc,17138
382
386
  metaflow/runner/deployer_impl.py,sha256=q-IvwnNKPRUTpOkfzrZNrkIsjp-L-Ju75dtXmfDUqbI,7299
383
- metaflow/runner/metaflow_runner.py,sha256=uo3BzcAfZ67VT_f-TPe5ZHiWHn6uuojWusOMGksvX14,18178
387
+ metaflow/runner/metaflow_runner.py,sha256=HN5VgxEAuG3xE3Q4tQkmILTIGYsq6ZBwCTy6eFcxGw8,25522
384
388
  metaflow/runner/nbdeploy.py,sha256=Sp5w-6nCZwjHaRBHWxi8udya-RYnJOB76KNLjB4L7Gs,4166
385
389
  metaflow/runner/nbrun.py,sha256=LhJu-Teoi7wTkNxg0kpNPVXFxH_9P4lvtp0ysMEIFJ8,7299
386
390
  metaflow/runner/subprocess_manager.py,sha256=x-MtPpGGMQUkIbQ_oNOuR-45b91DFvsCJ0SPoFc0dF4,23028
@@ -423,19 +427,19 @@ metaflow/tutorials/08-autopilot/README.md,sha256=GnePFp_q76jPs991lMUqfIIh5zSorIe
423
427
  metaflow/tutorials/08-autopilot/autopilot.ipynb,sha256=DQoJlILV7Mq9vfPBGW-QV_kNhWPjS5n6SJLqePjFYLY,3191
424
428
  metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
425
429
  metaflow/user_configs/config_options.py,sha256=d3hKA6WRPe21PdTl7sBnxIp5sE6zBpRtgAGx7hWkkfw,21380
426
- metaflow/user_configs/config_parameters.py,sha256=1KZC1x7i-M-PfscIEOMUJ5NT2HTzFsB0HtNMTp_8hqE,20967
430
+ metaflow/user_configs/config_parameters.py,sha256=2LJnDPJ2NuZrM7ZrdOHNSbPw-X3BhM_tJgy0bxBAWAA,20975
427
431
  metaflow/user_decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
428
432
  metaflow/user_decorators/common.py,sha256=0u9NRLQ95TfJCjWVEOGT4MJ9WoQgAMBM9kJ2gJGlVjk,5362
429
- metaflow/user_decorators/mutable_flow.py,sha256=EywKTN3cnXPQF_s62wQaC4a4aH14j8oeqzD3yZaiDxw,19467
433
+ metaflow/user_decorators/mutable_flow.py,sha256=NPPcvSyeqYCTYNi9PaxmDISxLFKYqzwMMppSfqR7lvE,19498
430
434
  metaflow/user_decorators/mutable_step.py,sha256=-BY0UDXf_RCAEnC5JlLzEXGdiw1KD9oSrSxS_SWaB9Y,16791
431
435
  metaflow/user_decorators/user_flow_decorator.py,sha256=2yDwZq9QGv9W-7kEuKwa8o4ZkTvuHJ5ESz7VVrGViAI,9890
432
- metaflow/user_decorators/user_step_decorator.py,sha256=4558NR8RJtN22OyTwCXO80bAMhMTaRGMoX12b1GMcPc,27232
433
- metaflow-2.18.12.data/data/share/metaflow/devtools/Makefile,sha256=TT4TCq8ALSfqYyGqDPocN5oPcZe2FqoCZxmGO1LmyCc,13760
434
- metaflow-2.18.12.data/data/share/metaflow/devtools/Tiltfile,sha256=b6l_fjDO0wtxOkO85lFvuf3HDa6wnzHhhBG8yv1kQqk,23949
435
- metaflow-2.18.12.data/data/share/metaflow/devtools/pick_services.sh,sha256=PGjQeDIigFHeoQ0asmYNdYDPIOdeYy1UYvkw2wdN4zg,2209
436
- metaflow-2.18.12.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
437
- metaflow-2.18.12.dist-info/METADATA,sha256=O2fzkU976nnqO8o9Ufxng-zphV6LCS3qR9u-zbHSZMg,6743
438
- metaflow-2.18.12.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
439
- metaflow-2.18.12.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
440
- metaflow-2.18.12.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
441
- metaflow-2.18.12.dist-info/RECORD,,
436
+ metaflow/user_decorators/user_step_decorator.py,sha256=4I1TQlQDMaMSuAJAAm3wo3bFETODC77RtXW11EuUI4A,27837
437
+ metaflow-2.19.0.data/data/share/metaflow/devtools/Makefile,sha256=_otS4tft0V5IzmMJPeVPxoN1_1aUiwC9-2Nu54k40ao,14499
438
+ metaflow-2.19.0.data/data/share/metaflow/devtools/Tiltfile,sha256=b6l_fjDO0wtxOkO85lFvuf3HDa6wnzHhhBG8yv1kQqk,23949
439
+ metaflow-2.19.0.data/data/share/metaflow/devtools/pick_services.sh,sha256=PGjQeDIigFHeoQ0asmYNdYDPIOdeYy1UYvkw2wdN4zg,2209
440
+ metaflow-2.19.0.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
441
+ metaflow-2.19.0.dist-info/METADATA,sha256=4nJtOMFMMmFi_yhGRgykuicXNlCbw2T4_NSU8gRI680,6739
442
+ metaflow-2.19.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
443
+ metaflow-2.19.0.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
444
+ metaflow-2.19.0.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
445
+ metaflow-2.19.0.dist-info/RECORD,,