metaflow 2.15.14__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.
Files changed (44) hide show
  1. metaflow/__init__.py +2 -2
  2. metaflow/_vendor/click/core.py +4 -3
  3. metaflow/cmd/develop/stub_generator.py +30 -16
  4. metaflow/cmd/develop/stubs.py +9 -27
  5. metaflow/datastore/task_datastore.py +3 -3
  6. metaflow/decorators.py +3 -3
  7. metaflow/extension_support/__init__.py +25 -42
  8. metaflow/parameters.py +2 -2
  9. metaflow/plugins/argo/argo_workflows_cli.py +4 -4
  10. metaflow/plugins/argo/argo_workflows_deployer_objects.py +6 -49
  11. metaflow/plugins/aws/aws_client.py +6 -0
  12. metaflow/plugins/cards/card_modules/chevron/renderer.py +1 -1
  13. metaflow/plugins/cards/card_modules/test_cards.py +6 -6
  14. metaflow/plugins/cards/component_serializer.py +1 -8
  15. metaflow/plugins/datatools/s3/s3op.py +1 -1
  16. metaflow/plugins/metadata_providers/service.py +12 -8
  17. metaflow/plugins/package_cli.py +12 -2
  18. metaflow/plugins/pypi/bootstrap.py +2 -2
  19. metaflow/plugins/uv/bootstrap.py +18 -1
  20. metaflow/plugins/uv/uv_environment.py +1 -1
  21. metaflow/runner/click_api.py +16 -9
  22. metaflow/runner/deployer.py +49 -0
  23. metaflow/runner/deployer_impl.py +17 -5
  24. metaflow/runner/metaflow_runner.py +40 -13
  25. metaflow/runner/subprocess_manager.py +1 -1
  26. metaflow/runner/utils.py +8 -0
  27. metaflow/user_configs/config_options.py +6 -6
  28. metaflow/user_configs/config_parameters.py +211 -45
  29. metaflow/util.py +2 -5
  30. metaflow/vendor.py +0 -1
  31. metaflow/version.py +1 -1
  32. {metaflow-2.15.14.dist-info → metaflow-2.15.16.dist-info}/METADATA +2 -2
  33. {metaflow-2.15.14.dist-info → metaflow-2.15.16.dist-info}/RECORD +40 -44
  34. {metaflow-2.15.14.dist-info → metaflow-2.15.16.dist-info}/WHEEL +1 -1
  35. metaflow/_vendor/v3_5/__init__.py +0 -1
  36. metaflow/_vendor/v3_5/importlib_metadata/__init__.py +0 -644
  37. metaflow/_vendor/v3_5/importlib_metadata/_compat.py +0 -152
  38. metaflow/_vendor/v3_5/zipp.py +0 -329
  39. {metaflow-2.15.14.data → metaflow-2.15.16.data}/data/share/metaflow/devtools/Makefile +0 -0
  40. {metaflow-2.15.14.data → metaflow-2.15.16.data}/data/share/metaflow/devtools/Tiltfile +0 -0
  41. {metaflow-2.15.14.data → metaflow-2.15.16.data}/data/share/metaflow/devtools/pick_services.sh +0 -0
  42. {metaflow-2.15.14.dist-info → metaflow-2.15.16.dist-info}/entry_points.txt +0 -0
  43. {metaflow-2.15.14.dist-info → metaflow-2.15.16.dist-info}/licenses/LICENSE +0 -0
  44. {metaflow-2.15.14.dist-info → metaflow-2.15.16.dist-info}/top_level.txt +0 -0
@@ -1,9 +1,22 @@
1
- import collections.abc
1
+ import inspect
2
2
  import json
3
+ import collections.abc
4
+ import copy
3
5
  import os
4
6
  import re
5
7
 
6
- from typing import Any, Callable, Dict, List, Optional, Tuple, TYPE_CHECKING, Union
8
+ from typing import (
9
+ Any,
10
+ Callable,
11
+ Dict,
12
+ Iterable,
13
+ Iterator,
14
+ List,
15
+ Optional,
16
+ Tuple,
17
+ TYPE_CHECKING,
18
+ Union,
19
+ )
7
20
 
8
21
 
9
22
  from ..exception import MetaflowException
@@ -54,7 +67,7 @@ def dump_config_values(flow: "FlowSpec"):
54
67
  return {}
55
68
 
56
69
 
57
- class ConfigValue(collections.abc.Mapping):
70
+ class ConfigValue(collections.abc.Mapping, dict):
58
71
  """
59
72
  ConfigValue is a thin wrapper around an arbitrarily nested dictionary-like
60
73
  configuration object. It allows you to access elements of this nested structure
@@ -69,8 +82,67 @@ class ConfigValue(collections.abc.Mapping):
69
82
  # Thin wrapper to allow configuration values to be accessed using a "." notation
70
83
  # as well as a [] notation.
71
84
 
72
- def __init__(self, data: Dict[str, Any]):
73
- self._data = data
85
+ # We inherit from dict to allow the isinstanceof check to work easily and also
86
+ # to provide a simple json dumps functionality.
87
+
88
+ def __init__(self, data: Union["ConfigValue", Dict[str, Any]]):
89
+ self._data = {k: self._construct(v) for k, v in data.items()}
90
+
91
+ # Enable json dumps
92
+ dict.__init__(self, self._data)
93
+
94
+ @classmethod
95
+ def fromkeys(cls, iterable: Iterable, value: Any = None) -> "ConfigValue":
96
+ """
97
+ Creates a new ConfigValue object from the given iterable and value.
98
+
99
+ Parameters
100
+ ----------
101
+ iterable : Iterable
102
+ Iterable to create the ConfigValue from.
103
+ value : Any, optional
104
+ Value to set for each key in the iterable.
105
+
106
+ Returns
107
+ -------
108
+ ConfigValue
109
+ A new ConfigValue object.
110
+ """
111
+ return cls(dict.fromkeys(iterable, value))
112
+
113
+ def to_dict(self) -> Dict[Any, Any]:
114
+ """
115
+ Returns a dictionary representation of this configuration object.
116
+
117
+ Returns
118
+ -------
119
+ Dict[Any, Any]
120
+ Dictionary equivalent of this configuration object.
121
+ """
122
+ return self._to_dict(self._data)
123
+
124
+ def copy(self) -> "ConfigValue":
125
+ return self.__copy__()
126
+
127
+ def clear(self) -> None:
128
+ # Prevent configuration modification
129
+ raise TypeError("ConfigValue is immutable")
130
+
131
+ def update(self, *args, **kwargs) -> None:
132
+ # Prevent configuration modification
133
+ raise TypeError("ConfigValue is immutable")
134
+
135
+ def setdefault(self, key: Any, default: Any = None) -> Any:
136
+ # Prevent configuration modification
137
+ raise TypeError("ConfigValue is immutable")
138
+
139
+ def pop(self, key: Any, default: Any = None) -> Any:
140
+ # Prevent configuration modification
141
+ raise TypeError("ConfigValue is immutable")
142
+
143
+ def popitem(self) -> Tuple[Any, Any]:
144
+ # Prevent configuration modification
145
+ raise TypeError("ConfigValue is immutable")
74
146
 
75
147
  def __getattr__(self, key: str) -> Any:
76
148
  """
@@ -115,33 +187,93 @@ class ConfigValue(collections.abc.Mapping):
115
187
  Any
116
188
  Element of the configuration
117
189
  """
118
- value = self._data[key]
119
- if isinstance(value, dict):
120
- value = ConfigValue(value)
121
- return value
190
+ return self._data[key]
122
191
 
123
- def __len__(self):
192
+ def __setitem__(self, key: Any, value: Any) -> None:
193
+ # Prevent configuration modification
194
+ raise TypeError("ConfigValue is immutable")
195
+
196
+ def __delattr__(self, key) -> None:
197
+ # Prevent configuration modification
198
+ raise TypeError("ConfigValue is immutable")
199
+
200
+ def __delitem__(self, key: Any) -> None:
201
+ # Prevent configuration modification
202
+ raise TypeError("ConfigValue is immutable")
203
+
204
+ def __len__(self) -> int:
124
205
  return len(self._data)
125
206
 
126
- def __iter__(self):
207
+ def __iter__(self) -> Iterator:
127
208
  return iter(self._data)
128
209
 
129
- def __repr__(self):
210
+ def __eq__(self, other: Any) -> bool:
211
+ if isinstance(other, ConfigValue):
212
+ return self._data == other._data
213
+ if isinstance(other, dict):
214
+ return self._data == other
215
+ return False
216
+
217
+ def __ne__(self, other: Any) -> bool:
218
+ return not self.__eq__(other)
219
+
220
+ def __copy__(self) -> "ConfigValue":
221
+ cls = self.__class__
222
+ result = cls.__new__(cls)
223
+ result.__dict__.update({k: copy.copy(v) for k, v in self.__dict__.items()})
224
+ return result
225
+
226
+ def __repr__(self) -> str:
130
227
  return repr(self._data)
131
228
 
132
- def __str__(self):
133
- return json.dumps(self._data)
229
+ def __str__(self) -> str:
230
+ return str(self._data)
134
231
 
135
- def to_dict(self) -> Dict[Any, Any]:
232
+ def __dir__(self) -> Iterable[str]:
233
+ return dir(type(self)) + [k for k in self._data.keys() if ID_PATTERN.match(k)]
234
+
235
+ def __contains__(self, key: Any) -> bool:
236
+ try:
237
+ self[key]
238
+ except KeyError:
239
+ return False
240
+ return True
241
+
242
+ def keys(self):
136
243
  """
137
- Returns a dictionary representation of this configuration object.
244
+ Returns the keys of this configuration object.
138
245
 
139
246
  Returns
140
247
  -------
141
- Dict[Any, Any]
142
- Dictionary equivalent of this configuration object.
248
+ Any
249
+ Keys of this configuration object.
143
250
  """
144
- return dict(self._data)
251
+ return self._data.keys()
252
+
253
+ @classmethod
254
+ def _construct(cls, obj: Any) -> Any:
255
+ # Internal method to construct a ConfigValue so that all mappings internally
256
+ # are also converted to ConfigValue
257
+ if isinstance(obj, ConfigValue):
258
+ v = obj
259
+ elif isinstance(obj, collections.abc.Mapping):
260
+ v = ConfigValue({k: cls._construct(v) for k, v in obj.items()})
261
+ elif isinstance(obj, (list, tuple, set)):
262
+ v = type(obj)([cls._construct(x) for x in obj])
263
+ else:
264
+ v = obj
265
+ return v
266
+
267
+ @classmethod
268
+ def _to_dict(cls, obj: Any) -> Any:
269
+ # Internal method to convert all nested mappings to dicts
270
+ if isinstance(obj, collections.abc.Mapping):
271
+ v = {k: cls._to_dict(v) for k, v in obj.items()}
272
+ elif isinstance(obj, (list, tuple, set)):
273
+ v = type(obj)([cls._to_dict(x) for x in obj])
274
+ else:
275
+ v = obj
276
+ return v
145
277
 
146
278
 
147
279
  class DelayEvaluator(collections.abc.Mapping):
@@ -157,8 +289,9 @@ class DelayEvaluator(collections.abc.Mapping):
157
289
  of _unpacked_delayed_*
158
290
  """
159
291
 
160
- def __init__(self, ex: str):
292
+ def __init__(self, ex: str, saved_globals: Optional[Dict[str, Any]] = None):
161
293
  self._config_expr = ex
294
+ self._globals = saved_globals
162
295
  if ID_PATTERN.match(self._config_expr):
163
296
  # This is a variable only so allow things like config_expr("config").var
164
297
  self._is_var_only = True
@@ -166,6 +299,21 @@ class DelayEvaluator(collections.abc.Mapping):
166
299
  else:
167
300
  self._is_var_only = False
168
301
  self._access = None
302
+ self._cached_expr = None
303
+
304
+ def __copy__(self):
305
+ c = DelayEvaluator(self._config_expr)
306
+ c._access = self._access.copy() if self._access is not None else None
307
+ # Globals are not copied -- always kept as a reference
308
+ return c
309
+
310
+ def __deepcopy__(self, memo):
311
+ c = DelayEvaluator(self._config_expr)
312
+ c._access = (
313
+ copy.deepcopy(self._access, memo) if self._access is not None else None
314
+ )
315
+ # Globals are not copied -- always kept as a reference
316
+ return c
169
317
 
170
318
  def __iter__(self):
171
319
  yield "%s%d" % (UNPACK_KEY, id(self))
@@ -175,8 +323,15 @@ class DelayEvaluator(collections.abc.Mapping):
175
323
  return self
176
324
  if self._access is None:
177
325
  raise KeyError(key)
178
- self._access.append(key)
179
- return self
326
+
327
+ # Make a copy so that we can support something like
328
+ # foo = delay_evaluator["blah"]
329
+ # bar = delay_evaluator["baz"]
330
+ # and don't end up with a access list that contains both "blah" and "baz"
331
+ c = self.__copy__()
332
+ c._access.append(key)
333
+ c._cached_expr = None
334
+ return c
180
335
 
181
336
  def __len__(self):
182
337
  return 1
@@ -184,8 +339,10 @@ class DelayEvaluator(collections.abc.Mapping):
184
339
  def __getattr__(self, name):
185
340
  if self._access is None:
186
341
  raise AttributeError(name)
187
- self._access.append(name)
188
- return self
342
+ c = self.__copy__()
343
+ c._access.append(name)
344
+ c._cached_expr = None
345
+ return c
189
346
 
190
347
  def __call__(self, ctx=None, deploy_time=False):
191
348
  from ..flowspec import _FlowState # Prevent circular import
@@ -199,7 +356,9 @@ class DelayEvaluator(collections.abc.Mapping):
199
356
  "Config object can only be used directly in the FlowSpec defining them "
200
357
  "(or their flow decorators)."
201
358
  )
202
- if self._access is not None:
359
+ if self._cached_expr is not None:
360
+ to_eval_expr = self._cached_expr
361
+ elif self._access is not None:
203
362
  # Build the final expression by adding all the fields in access as . fields
204
363
  access_list = [self._config_expr]
205
364
  for a in self._access:
@@ -212,27 +371,24 @@ class DelayEvaluator(collections.abc.Mapping):
212
371
  raise MetaflowException(
213
372
  "Field '%s' of type '%s' is not supported" % (str(a), type(a))
214
373
  )
215
- self._config_expr = ".".join(access_list)
374
+ to_eval_expr = self._cached_expr = ".".join(access_list)
375
+ else:
376
+ to_eval_expr = self._cached_expr = self._config_expr
216
377
  # Evaluate the expression setting the config values as local variables
217
378
  try:
218
379
  return eval(
219
- self._config_expr,
220
- globals(),
380
+ to_eval_expr,
381
+ self._globals or globals(),
221
382
  {
222
383
  k: ConfigValue(v)
223
384
  for k, v in flow_cls._flow_state.get(_FlowState.CONFIGS, {}).items()
224
385
  },
225
386
  )
226
387
  except NameError as e:
227
- potential_config_name = self._config_expr.split(".")[0]
228
- if potential_config_name not in flow_cls._flow_state.get(
229
- _FlowState.CONFIGS, {}
230
- ):
231
- raise MetaflowException(
232
- "Config '%s' not found in the flow (maybe not required and not "
233
- "provided?)" % potential_config_name
234
- ) from e
235
- raise
388
+ raise MetaflowException(
389
+ "Config expression '%s' could not be evaluated: %s"
390
+ % (to_eval_expr, str(e))
391
+ ) from e
236
392
 
237
393
 
238
394
  def config_expr(expr: str) -> DelayEvaluator:
@@ -262,7 +418,10 @@ def config_expr(expr: str) -> DelayEvaluator:
262
418
  expr : str
263
419
  Expression using the config values.
264
420
  """
265
- return DelayEvaluator(expr)
421
+ # Get globals where the expression is defined so that the user can use
422
+ # something like `config_expr("my_func()")` in the expression.
423
+ parent_globals = inspect.currentframe().f_back.f_globals
424
+ return DelayEvaluator(expr, saved_globals=parent_globals)
266
425
 
267
426
 
268
427
  class Config(Parameter, collections.abc.Mapping):
@@ -385,23 +544,30 @@ class Config(Parameter, collections.abc.Mapping):
385
544
  return DelayEvaluator(self.name.lower())[key]
386
545
 
387
546
 
388
- def resolve_delayed_evaluator(v: Any, ignore_errors: bool = False) -> Any:
547
+ def resolve_delayed_evaluator(
548
+ v: Any, ignore_errors: bool = False, to_dict: bool = False
549
+ ) -> Any:
389
550
  # NOTE: We don't ignore errors in downstream calls because we want to have either
390
551
  # all or nothing for the top-level call by the user.
391
552
  try:
392
553
  if isinstance(v, DelayEvaluator):
393
- return v()
554
+ to_return = v()
555
+ if to_dict and isinstance(to_return, ConfigValue):
556
+ to_return = to_return.to_dict()
557
+ return to_return
394
558
  if isinstance(v, dict):
395
559
  return {
396
- resolve_delayed_evaluator(k): resolve_delayed_evaluator(v)
560
+ resolve_delayed_evaluator(
561
+ k, to_dict=to_dict
562
+ ): resolve_delayed_evaluator(v, to_dict=to_dict)
397
563
  for k, v in v.items()
398
564
  }
399
565
  if isinstance(v, list):
400
- return [resolve_delayed_evaluator(x) for x in v]
566
+ return [resolve_delayed_evaluator(x, to_dict=to_dict) for x in v]
401
567
  if isinstance(v, tuple):
402
- return tuple(resolve_delayed_evaluator(x) for x in v)
568
+ return tuple(resolve_delayed_evaluator(x, to_dict=to_dict) for x in v)
403
569
  if isinstance(v, set):
404
- return {resolve_delayed_evaluator(x) for x in v}
570
+ return {resolve_delayed_evaluator(x, to_dict=to_dict) for x in v}
405
571
  return v
406
572
  except Exception as e:
407
573
  if ignore_errors:
@@ -426,7 +592,7 @@ def unpack_delayed_evaluator(
426
592
  else:
427
593
  # k.startswith(UNPACK_KEY)
428
594
  try:
429
- new_vals = resolve_delayed_evaluator(v)
595
+ new_vals = resolve_delayed_evaluator(v, to_dict=True)
430
596
  new_keys.extend(new_vals.keys())
431
597
  result.update(new_vals)
432
598
  except Exception as e:
metaflow/util.py CHANGED
@@ -418,7 +418,7 @@ def to_pascalcase(obj):
418
418
  if isinstance(obj, dict):
419
419
  res = obj.__class__()
420
420
  for k in obj:
421
- res[re.sub("([a-zA-Z])", lambda x: x.groups()[0].upper(), k, 1)] = (
421
+ res[re.sub("([a-zA-Z])", lambda x: x.groups()[0].upper(), k, count=1)] = (
422
422
  to_pascalcase(obj[k])
423
423
  )
424
424
  elif isinstance(obj, (list, set, tuple)):
@@ -467,7 +467,4 @@ def to_pod(value):
467
467
  return str(value)
468
468
 
469
469
 
470
- if sys.version_info[:2] > (3, 5):
471
- from metaflow._vendor.packaging.version import parse as version_parse
472
- else:
473
- from distutils.version import LooseVersion as version_parse
470
+ from metaflow._vendor.packaging.version import parse as version_parse
metaflow/vendor.py CHANGED
@@ -11,7 +11,6 @@ WHITELIST = {
11
11
  "README.txt",
12
12
  "__init__.py",
13
13
  "vendor_any.txt",
14
- "vendor_v3_5.txt",
15
14
  "vendor_v3_6.txt",
16
15
  "vendor_v3_7.txt",
17
16
  "pip.LICENSE",
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.15.14"
1
+ metaflow_version = "2.15.16"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metaflow
3
- Version: 2.15.14
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.14; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.15.16; extra == "stubs"
30
30
  Dynamic: author
31
31
  Dynamic: author-email
32
32
  Dynamic: classifier
@@ -1,12 +1,12 @@
1
1
  metaflow/R.py,sha256=CqVfIatvmjciuICNnoyyNGrwE7Va9iXfLdFbQa52hwA,3958
2
- metaflow/__init__.py,sha256=Cg9wItncyCn8jqALP5rIJ1RcpTEPp--allUctGKMTtI,5937
2
+ metaflow/__init__.py,sha256=aCCgR992PUA5Urd-pb06c1afjKbfaNPDWnH8kKQRnNk,5937
3
3
  metaflow/cards.py,sha256=IbRmredvmFEU0V6JL7DR8wCESwVmmZJubr6x24bo7U4,442
4
4
  metaflow/cli.py,sha256=XqGP8mNObMO0lOJmWtQvFFWUEKWMN_3-cGkvci2n6e4,21296
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=HEmt_16tJtqHXQXsqD9pqOFe3CWR5GZ7VwpaYQgnRdU,1466
9
- metaflow/decorators.py,sha256=cbOCahmwVlnHklMN2O_j5DKvZA7m_Q72_6LBzzBZRhk,24131
9
+ metaflow/decorators.py,sha256=qiAV-NOXt09I53y01Vm7EPZtJ4tROlt2Jsij7nVWOY4,24147
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
@@ -26,7 +26,7 @@ metaflow/metaflow_version.py,sha256=QNN-8z1JX-Gby0dtXqjogQmsvbE8KDRMNHzQEdjI6qw,
26
26
  metaflow/monitor.py,sha256=T0NMaBPvXynlJAO_avKtk8OIIRMyEuMAyF8bIp79aZU,5323
27
27
  metaflow/multicore_utils.py,sha256=yEo5T6Gemn4_vl8b6IOz7fsTUYtEyqa3AaKZgJY96Wc,4974
28
28
  metaflow/package.py,sha256=yfwVMVB1mD-Sw94KwXNK3N-26YHoKMn6btrcgd67Izs,7845
29
- metaflow/parameters.py,sha256=zyxDTkHXqVr7CUw509qsrBXGFpBMlqLL2-iwbIr0oiw,18621
29
+ metaflow/parameters.py,sha256=b3rS6P-TeEj2JgPEKaiy0ys1B_JtOGJ6XM0KkY2layc,18649
30
30
  metaflow/procpoll.py,sha256=U2tE4iK_Mwj2WDyVTx_Uglh6xZ-jixQOo4wrM9OOhxg,2859
31
31
  metaflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  metaflow/pylint_wrapper.py,sha256=zzBY9YaSUZOGH-ypDKAv2B_7XcoyMZj-zCoCrmYqNRc,2865
@@ -35,9 +35,9 @@ metaflow/tagging_util.py,sha256=ctyf0Q1gBi0RyZX6J0e9DQGNkNHblV_CITfy66axXB4,2346
35
35
  metaflow/task.py,sha256=IYOql3joTnL3N5V2LESeII0B6Xc3_EM6at_Jg14-UZU,30412
36
36
  metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
37
37
  metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
38
- metaflow/util.py,sha256=mJBkV5tShIyCsLDeM1zygQGeciQVMrVPm_qI8Oi33G0,14656
39
- metaflow/vendor.py,sha256=LZgXrh7ZSDmD32D1T5jj3OKKpXIqqxKzdMAOc5V0SD4,5162
40
- metaflow/version.py,sha256=SsNdzOR0SgLgAN8yaI0CqG7MmrxnH7bZC9qOzgx1BtM,29
38
+ metaflow/util.py,sha256=MCXCjcGwpuR7y9euBf1GTNRHPtlh6fCpdPMEtbULefw,14554
39
+ metaflow/vendor.py,sha256=EDZokNMrx1PU07jNMiWFMFtC7TL03pMXZ1kKn13k-2g,5139
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
@@ -48,7 +48,7 @@ metaflow/_vendor/click/_termui_impl.py,sha256=yNktUMAdjYOU1HMkq915jR3zgAzUNtGSQq
48
48
  metaflow/_vendor/click/_textwrap.py,sha256=ajCzkzFly5tjm9foQ5N9_MOeaYJMBjAltuFa69n4iXY,1197
49
49
  metaflow/_vendor/click/_unicodefun.py,sha256=apLSNEBZgUsQNPMUv072zJ1swqnm0dYVT5TqcIWTt6w,4201
50
50
  metaflow/_vendor/click/_winconsole.py,sha256=6YDu6Rq1Wxx4w9uinBMK2LHvP83aerZM9GQurlk3QDo,10010
51
- metaflow/_vendor/click/core.py,sha256=V6DJzastGhrC6WTDwV9MSLwcJUdX2Uf1ypmgkjBdn_Y,77650
51
+ metaflow/_vendor/click/core.py,sha256=nzhJwIeN4LBFz92JnWxlrrsYHqBGhSQPbkkUI2p_hXA,77654
52
52
  metaflow/_vendor/click/decorators.py,sha256=3TvEO_BkaHl7k6Eh1G5eC7JK4LKPdpFqH9JP0QDyTlM,11215
53
53
  metaflow/_vendor/click/exceptions.py,sha256=3pQAyyMFzx5A3eV0Y27WtDTyGogZRbrC6_o5DjjKBbw,8118
54
54
  metaflow/_vendor/click/formatting.py,sha256=Wb4gqFEpWaKPgAbOvnkCl8p-bEZx5KpM5ZSByhlnJNk,9281
@@ -95,10 +95,6 @@ metaflow/_vendor/typeguard/_transformer.py,sha256=9Ha7_QhdwoUni_6hvdY-hZbuEergow
95
95
  metaflow/_vendor/typeguard/_union_transformer.py,sha256=v_42r7-6HuRX2SoFwnyJ-E5PlxXpVeUJPJR1-HU9qSo,1354
96
96
  metaflow/_vendor/typeguard/_utils.py,sha256=A8jluNB05hdZfzY_AXqa5oB9fY0jZsq_SCsyWy6g-1A,5287
97
97
  metaflow/_vendor/typeguard/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
- metaflow/_vendor/v3_5/__init__.py,sha256=98e_aAZvsdPvFOT7hg_UM6i7DGHOLEdaeFiGVZLMRqA,12
99
- metaflow/_vendor/v3_5/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
100
- metaflow/_vendor/v3_5/importlib_metadata/__init__.py,sha256=sTmHo2wUteZGoRUkgDAhqUob8PIGzFxZ3BgdP4rFC3Q,19617
101
- metaflow/_vendor/v3_5/importlib_metadata/_compat.py,sha256=DnM55BbJKFCcZmJOkArmyO76-0g7pA6HEfzSYWXN88k,4417
102
98
  metaflow/_vendor/v3_6/__init__.py,sha256=98e_aAZvsdPvFOT7hg_UM6i7DGHOLEdaeFiGVZLMRqA,12
103
99
  metaflow/_vendor/v3_6/typing_extensions.py,sha256=jENKtckSwLmnw3WgvvZe7uul7koec0Hfx3aSN0LsETM,107795
104
100
  metaflow/_vendor/v3_6/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
@@ -154,8 +150,8 @@ metaflow/cmd/tutorials_cmd.py,sha256=8FdlKkicTOhCIDKcBR5b0Oz6giDvS-EMY3o9skIrRqw
154
150
  metaflow/cmd/util.py,sha256=jS_0rUjOnGGzPT65fzRLdGjrYAOOLA4jU2S0HJLV0oc,406
155
151
  metaflow/cmd/code/__init__.py,sha256=VO4dNM9M9LHYy5nTgEiJvCV1RBl8lpDlYGJm6GIcaBA,7413
156
152
  metaflow/cmd/develop/__init__.py,sha256=p1Sy8yU1MEKSrH5ttOWOZvNcI1qYu6J6jghdTHwPgOw,689
157
- metaflow/cmd/develop/stub_generator.py,sha256=gERNsibYL030xR0OjA60AkS3HotRCNa5N2n1QQpgqcE,65358
158
- metaflow/cmd/develop/stubs.py,sha256=Q0ERQHGb0cC8P6eb0mQlE1RHUo8sCJ2zFvIW7rL6C_g,11889
153
+ metaflow/cmd/develop/stub_generator.py,sha256=8Ap5rCC2lKOq4KQJ_LTuhQGj2xXYJ_Nnc1h842PsGBs,65929
154
+ metaflow/cmd/develop/stubs.py,sha256=J8DtpaN3okiPeeAqhxuUe9wQDlW4YYmZgKsVZLlVt0k,11181
159
155
  metaflow/datastore/__init__.py,sha256=VxP6ddJt3rwiCkpiSfAhyVkUCOe1pgZZsytVEJzFmSQ,155
160
156
  metaflow/datastore/content_addressed_store.py,sha256=6T7tNqL29kpmecyMLHF35RhoSBOb-OZcExnsB65AvnI,7641
161
157
  metaflow/datastore/datastore_set.py,sha256=R5pwnxg1DD8kBY9vElvd2eMknrvwTyiSwvQs67_z9bc,2361
@@ -163,8 +159,8 @@ metaflow/datastore/datastore_storage.py,sha256=7V43QuiWDQ_Q4oHw9y7Z7X9lYj3GI-LV1
163
159
  metaflow/datastore/exceptions.py,sha256=r7Ab5FvHIzyFh6kwiptA1lO5nLqWg0xRBoeYGefvapA,373
164
160
  metaflow/datastore/flow_datastore.py,sha256=rDMEHdYwub1PwLp2uaK-8CHdd8hiwxqeELXzsUfuqZs,10250
165
161
  metaflow/datastore/inputs.py,sha256=i43dXr2xvgtsgKMO9allgCR18bk80GeayeQFyUTH36w,449
166
- metaflow/datastore/task_datastore.py,sha256=VCV-5v3gYbzhmrBr9zcrrzQWJ-L7N-ZbRGbAiVE2aH4,35060
167
- metaflow/extension_support/__init__.py,sha256=uhGpz75G-dhrSjVRc9EYJmppeWesrg4tPsh2mhNQMCM,52989
162
+ metaflow/datastore/task_datastore.py,sha256=5vX-eB9YVi4pBo9OaHQK7m2FMScOel-NhePg9-dXEV8,35060
163
+ metaflow/extension_support/__init__.py,sha256=chdk2ft6Ge3WHR1456zseekTtrLW8ZgUmV0ZsOvBPOQ,52265
168
164
  metaflow/extension_support/_empty_file.py,sha256=HENjnM4uAfeNygxMB_feCCWORFoSat9n_QwzSx2oXPw,109
169
165
  metaflow/extension_support/cmd.py,sha256=hk8iBUUINqvKCDxInKgWpum8ThiRZtHSJP7qBASHzl8,5711
170
166
  metaflow/extension_support/integrations.py,sha256=AWAh-AZ-vo9IxuAVEjGw3s8p_NMm2DKHYx10oC51gPU,5506
@@ -185,7 +181,7 @@ metaflow/plugins/debug_monitor.py,sha256=Md5X_sDOSssN9pt2D8YcaIjTK5JaQD55UAYTcF6
185
181
  metaflow/plugins/environment_decorator.py,sha256=6m9j2B77d-Ja_l_9CTJ__0O6aB2a8Qt_lAZu6UjAcUA,587
186
182
  metaflow/plugins/events_decorator.py,sha256=T_YSK-DlgZhd3ge9PlpTRNaMi15GK0tKZMZl1NdV9DQ,24403
187
183
  metaflow/plugins/logs_cli.py,sha256=77W5UNagU2mOKSMMvrQxQmBLRzvmjK-c8dWxd-Ygbqs,11410
188
- metaflow/plugins/package_cli.py,sha256=-J6D4cupHfWSZ4GEFo2yy9Je9oL3owRWm5pEJwaiqd4,1649
184
+ metaflow/plugins/package_cli.py,sha256=Y7MI3NMAxser0aV6Gg2cqnPKlXE1imUmpYt1La_sX2M,2029
189
185
  metaflow/plugins/parallel_decorator.py,sha256=GR6LKIW7_S7AoU50Ar2_0nndVtO2epdn3LuthE0vKMQ,9127
190
186
  metaflow/plugins/project_decorator.py,sha256=uhwsguEj7OM_E2OnY1ap3MoGocQHeywuJSa-qPuWn-U,7592
191
187
  metaflow/plugins/resources_decorator.py,sha256=AtoOwg4mHYHYthg-CAfbfam-QiT0ViuDLDoukoDvF6Q,1347
@@ -211,15 +207,15 @@ metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
211
207
  metaflow/plugins/argo/argo_client.py,sha256=A1kI9rjVjCadDsBscZ2Wk8xRBI6GNgWV6SU7TyrdfrI,16530
212
208
  metaflow/plugins/argo/argo_events.py,sha256=_C1KWztVqgi3zuH57pInaE9OzABc2NnncC-zdwOMZ-w,5909
213
209
  metaflow/plugins/argo/argo_workflows.py,sha256=oX-e4o_CxTQP5DJ7zMQwckcobXZJz6hPxLs3fsHSnm8,186544
214
- metaflow/plugins/argo/argo_workflows_cli.py,sha256=X_GfJpc7jfP7DGuttl7U952767eBF6Ut45aWgoJzHVI,38375
210
+ metaflow/plugins/argo/argo_workflows_cli.py,sha256=1bdG8BQgwyfHooBidyY1Aw52uwjCxq2Edt0bO7qezWM,38375
215
211
  metaflow/plugins/argo/argo_workflows_decorator.py,sha256=ogCSBmwsC2C3eusydrgjuAJd4qK18f1sI4jJwA4Fd-o,7800
216
212
  metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
217
- metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=c_lRGBypwxC4qh0H1JDjDq_cqEwUEqVyXIcqaFPSX8M,14184
213
+ metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=7OiapcIM_r-aBkuIobhofgLC5NRJHC-p9bvBmxvhqoM,12500
218
214
  metaflow/plugins/argo/capture_error.py,sha256=Ys9dscGrTpW-ZCirLBU0gD9qBM0BjxyxGlUMKcwewQc,1852
219
215
  metaflow/plugins/argo/generate_input_paths.py,sha256=loYsI6RFX9LlFsHb7Fe-mzlTTtRdySoOu7sYDy-uXK0,881
220
216
  metaflow/plugins/argo/jobset_input_paths.py,sha256=-h0E_e0w6FMiBUod9Rf_XOSCtZv_C0exacw4q1SfIfg,501
221
217
  metaflow/plugins/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
- metaflow/plugins/aws/aws_client.py,sha256=lMIGE06LNeOfqbEXVhXKU8kx3gTFwu14Si5n4y1W9KM,4039
218
+ metaflow/plugins/aws/aws_client.py,sha256=BTiLMXa1agjja-N73oWinaOZHs-lGPbfKJG8CqdRgaU,4287
223
219
  metaflow/plugins/aws/aws_utils.py,sha256=kNd61C54Y3WxrL7KSjoKydRjBQ1p3exc9QXux-jZyDE,7510
224
220
  metaflow/plugins/aws/batch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
221
  metaflow/plugins/aws/batch/batch.py,sha256=e9ssahWM18GnipPK2sqYB-ztx9w7Eoo7YtWyEtufYxs,17787
@@ -256,7 +252,7 @@ metaflow/plugins/cards/card_datastore.py,sha256=3K19wE0CZVvOpuYUytftIYYnHHn3pMZJ
256
252
  metaflow/plugins/cards/card_decorator.py,sha256=nU-uZ4_ubU7bCsSb6uT61YnN8ruo43_FzqZ24MsZpKg,12070
257
253
  metaflow/plugins/cards/card_resolver.py,sha256=bjyujYpGUFbLJNwXNGHlHhL4f-gVdVKebl7XW1vWDtE,717
258
254
  metaflow/plugins/cards/card_server.py,sha256=DHv0RcepaPULWbkDahiEMrU5A281Cfb0DvHLUYd8JsU,11772
259
- metaflow/plugins/cards/component_serializer.py,sha256=gxG5leRVJEzMqRYKs3vIzy2ijFNEI3fX1AzHgfX-D8A,37249
255
+ metaflow/plugins/cards/component_serializer.py,sha256=kQ5umqSQne6bTgx8V8JNQbiz-kH2Ntu0VK3ZHxywXww,36912
260
256
  metaflow/plugins/cards/exception.py,sha256=2UqlNb-Kxpg6cuLu2sBEIPTIElwlVBsSpeCgDYKTxWg,5222
261
257
  metaflow/plugins/cards/card_modules/__init__.py,sha256=WI2IAsFiKGyqPrHtO9S9-MbyVtUTgWJNL4xjJaBErRo,3437
262
258
  metaflow/plugins/cards/card_modules/base.html,sha256=Y208ZKIZqEWWUcoBFTLTdWKAG0C8xH5lmyCRSjaN2FY,21004
@@ -267,11 +263,11 @@ metaflow/plugins/cards/card_modules/components.py,sha256=Y-Yo7UgSOyTB3zs-wDfUqUK
267
263
  metaflow/plugins/cards/card_modules/convert_to_native_type.py,sha256=eGaQ8BabJ489a8AiyhXFy1pWJZl99gH0FQzwsNVxAGQ,15782
268
264
  metaflow/plugins/cards/card_modules/main.js,sha256=72mKcMEjrne7TlLxc-LkxTJVoM4z2pLWGtU1NzHtlWM,1043628
269
265
  metaflow/plugins/cards/card_modules/renderer_tools.py,sha256=uiTdKHWFInWgtfWArOUSQLnTwqVd4hAw49jfOfg8rGA,1642
270
- metaflow/plugins/cards/card_modules/test_cards.py,sha256=74H0JdWrcoc5eITxCLSUwwa1kJZ3YMteynaKsCBihXE,5361
266
+ metaflow/plugins/cards/card_modules/test_cards.py,sha256=AAI78Usq-SV4H_XBNKOb9dBadBnblZCq57uQOTPnyKI,5361
271
267
  metaflow/plugins/cards/card_modules/chevron/__init__.py,sha256=SicpH_1eT76HUTA8aMuiGLRNKTqgYD1Qfutt2NdTL0E,156
272
268
  metaflow/plugins/cards/card_modules/chevron/main.py,sha256=FKpDW4PS2dYshgkm6yIxrBnzkhquZ4gg2dmUxrBbNTQ,3222
273
269
  metaflow/plugins/cards/card_modules/chevron/metadata.py,sha256=gQDpB9KezW9Mcv-n9K2Pt1akjiPGG1zYB5YPdQ0FlNc,19
274
- metaflow/plugins/cards/card_modules/chevron/renderer.py,sha256=dm5ufR9-qnx94D9BtV7q_64oqYUpwdCRgBTcjBRkZyM,13938
270
+ metaflow/plugins/cards/card_modules/chevron/renderer.py,sha256=2646dlNmVzVIxU50R9vXn65mqJZtognCOWRpt1ZHN5c,13938
275
271
  metaflow/plugins/cards/card_modules/chevron/tokenizer.py,sha256=lQU9OELUE9a5Xu4snGhEV_YTT34iyUHVBuM1YO016Sw,7400
276
272
  metaflow/plugins/cards/card_viewer/viewer.html,sha256=qZJGzhZhQ1gugsknRP7zkAPPfUAtvemK1UKqXoGff5M,11593
277
273
  metaflow/plugins/datastores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -283,7 +279,7 @@ metaflow/plugins/datatools/__init__.py,sha256=ge4L16OBQLy2J_MMvoHg3lMfdm-MluQgRW
283
279
  metaflow/plugins/datatools/local.py,sha256=FJvMOBcjdyhSPHmdLocBSiIT0rmKkKBmsaclxH75x08,4233
284
280
  metaflow/plugins/datatools/s3/__init__.py,sha256=14tr9fPjN3ULW5IOfKHeG7Uhjmgm7LMtQHfz1SFv-h8,248
285
281
  metaflow/plugins/datatools/s3/s3.py,sha256=3xrWD6pXoVRpuAQHyLGVya79UIE0S8AqAqe2prg4yMw,67182
286
- metaflow/plugins/datatools/s3/s3op.py,sha256=9DAIlvK5kYVmgo3rL-XY_3k7CoLUXaWqduBza13Xqv8,47543
282
+ metaflow/plugins/datatools/s3/s3op.py,sha256=nDFgc5m0ud-uK4D2_vyweGpGoMjESxu3TlX86zA1MdQ,47561
287
283
  metaflow/plugins/datatools/s3/s3tail.py,sha256=boQjQGQMI-bvTqcMP2y7uSlSYLcvWOy7J3ZUaF78NAA,2597
288
284
  metaflow/plugins/datatools/s3/s3util.py,sha256=FgRgaVmEq7-i2dV7q8XK5w5PfFt-xJjZa8WrK8IJfdI,3769
289
285
  metaflow/plugins/env_escape/__init__.py,sha256=tGNUZnmPvk52eNs__VK443b3CZ7ogEFTT-s9_n_HF8Q,8837
@@ -327,9 +323,9 @@ metaflow/plugins/kubernetes/spot_metadata_cli.py,sha256=an0nWCxgflmqIPBCBrlb4m3D
327
323
  metaflow/plugins/kubernetes/spot_monitor_sidecar.py,sha256=zrWU-smQwPnL6MBHmzTxWyEA00R6iKKQbhhy50xFwQ8,3832
328
324
  metaflow/plugins/metadata_providers/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
329
325
  metaflow/plugins/metadata_providers/local.py,sha256=Z0CXaGZJbAkj4II3WspJi-uCCtShH64yaXZQ5i9Ym7g,24390
330
- metaflow/plugins/metadata_providers/service.py,sha256=9j0db_EOGFdb49YTgr9q4EWqVAm1YUaW-Baj5gyRqIo,22809
326
+ metaflow/plugins/metadata_providers/service.py,sha256=5UlK0R5M9_nq2J6MgJgCZwqAC3bEsofFbglq1K4p4QI,22942
331
327
  metaflow/plugins/pypi/__init__.py,sha256=0YFZpXvX7HCkyBFglatual7XGifdA1RwC3U4kcizyak,1037
332
- metaflow/plugins/pypi/bootstrap.py,sha256=SNONquX6QnTbu7htmhaQeVeZ2ofaFaUCDScRIrTTERc,14718
328
+ metaflow/plugins/pypi/bootstrap.py,sha256=NaQboUVNJc90gmUa69-cK_T3G7piHNNsUSaN96IJoic,14745
333
329
  metaflow/plugins/pypi/conda_decorator.py,sha256=N0HGiaS1mRsa6qT4eYzu2C3DHtas22QIXowW4vEl44M,15961
334
330
  metaflow/plugins/pypi/conda_environment.py,sha256=C7WolJm1dgBQofd6vOk8KCr3U754TyAr4bOpkhosxfM,24582
335
331
  metaflow/plugins/pypi/micromamba.py,sha256=XAuZulI7O2Q_Zgtx28yjAqHco6tHiPQxoy_vsf1kWm8,16843
@@ -342,17 +338,17 @@ metaflow/plugins/secrets/__init__.py,sha256=mhJaN2eMS_ZZVewAMR2E-JdP5i0t3v9e6Dcw
342
338
  metaflow/plugins/secrets/inline_secrets_provider.py,sha256=EChmoBGA1i7qM3jtYwPpLZDBybXLergiDlN63E0u3x8,294
343
339
  metaflow/plugins/secrets/secrets_decorator.py,sha256=s-sFzPWOjahhpr5fMj-ZEaHkDYAPTO0isYXGvaUwlG8,11273
344
340
  metaflow/plugins/uv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
345
- metaflow/plugins/uv/bootstrap.py,sha256=Yp_G3dHhXX5GwmpAASdZr28fDu69pucakST954Vmvp4,3243
346
- metaflow/plugins/uv/uv_environment.py,sha256=yKoC4t_TrVoN2tH6pV_XOpH3QvObmkRurM_I85Fa-x8,2577
341
+ metaflow/plugins/uv/bootstrap.py,sha256=nKucPuEk6IEuu9R3aJtaTaOsD1eZjmQ4iz0t4vYF4v0,3835
342
+ metaflow/plugins/uv/uv_environment.py,sha256=6hUaWrTgqHyzS6igGQUXpS6jb_GHv3Wq9ZrWhZgEals,2587
347
343
  metaflow/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
348
- metaflow/runner/click_api.py,sha256=nAT1mSV40YKiHTyTr4RDZBCGgGFV6K0TXCTL4xtUOAc,23492
349
- metaflow/runner/deployer.py,sha256=SejRSiC5R0dCS7WaKePHd0fiXZ5ZK34S8CUCJnoIUjc,9318
350
- metaflow/runner/deployer_impl.py,sha256=0UvR9tyRBUYlLaNXZgYM0aZYkYv6Vmqq8IOD0Y4V5M8,6351
351
- metaflow/runner/metaflow_runner.py,sha256=3ox7JcJWuN1cUtmdQ4Al-Zp88HT6KGyouRKopzdColI,16284
344
+ metaflow/runner/click_api.py,sha256=u9Y1bu9vN13ektBs-L8lg2oxb5oYvGe1dPJjV2shMAw,23727
345
+ metaflow/runner/deployer.py,sha256=U-hwf4gVzwUlXgnkfTW3y1daGXvo5eP4HTQZwb-vS0g,11058
346
+ metaflow/runner/deployer_impl.py,sha256=zTING0_fwP44JcGo69DuNrVut5KqdBVzYOM7MYTZgIY,7049
347
+ metaflow/runner/metaflow_runner.py,sha256=BaDAp-3tCPwJRy_R8hLTAu6L0qjjuQmjeo-L1inhr_c,17498
352
348
  metaflow/runner/nbdeploy.py,sha256=Sp5w-6nCZwjHaRBHWxi8udya-RYnJOB76KNLjB4L7Gs,4166
353
349
  metaflow/runner/nbrun.py,sha256=LhJu-Teoi7wTkNxg0kpNPVXFxH_9P4lvtp0ysMEIFJ8,7299
354
- metaflow/runner/subprocess_manager.py,sha256=vqrOgRAtQYfTEBFFF7iRzrqbhFaVTRZohms4Kt7jxJA,22300
355
- metaflow/runner/utils.py,sha256=jC-Z5xzGEEa6Qc71U_5r1wHsS-qYV7-czv1BO-q2MSs,10213
350
+ metaflow/runner/subprocess_manager.py,sha256=YHKerTuSc-ih_Gqd9eENRGwUuotcVRHpiahkBOUYPNM,22279
351
+ metaflow/runner/utils.py,sha256=fU4vPazBdi6ATAUW_DaBAQeVslRwrLT8Pn9s5wav3gg,10350
356
352
  metaflow/sidecar/__init__.py,sha256=1mmNpmQ5puZCpRmmYlCOeieZ4108Su9XQ4_EqF1FGOU,131
357
353
  metaflow/sidecar/sidecar.py,sha256=EspKXvPPNiyRToaUZ51PS5TT_PzrBNAurn_wbFnmGr0,1334
358
354
  metaflow/sidecar/sidecar_messages.py,sha256=zPsCoYgDIcDkkvdC9MEpJTJ3y6TSGm2JWkRc4vxjbFA,1071
@@ -391,14 +387,14 @@ metaflow/tutorials/08-autopilot/README.md,sha256=GnePFp_q76jPs991lMUqfIIh5zSorIe
391
387
  metaflow/tutorials/08-autopilot/autopilot.ipynb,sha256=DQoJlILV7Mq9vfPBGW-QV_kNhWPjS5n6SJLqePjFYLY,3191
392
388
  metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
393
389
  metaflow/user_configs/config_decorators.py,sha256=qCKVAvd0NKgaCxQ2OThes5-DYHXq6A1HqURubYNeFdw,20481
394
- metaflow/user_configs/config_options.py,sha256=m6jccSpzI4qUJ7vyYkYBIf8G3V0Caunxg_k7zg4Zlqg,21067
395
- metaflow/user_configs/config_parameters.py,sha256=oeJGVKu1ao_YQX6Lg6P2FEv5k5-_F4sARLlVpTW9ezM,15502
396
- metaflow-2.15.14.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
397
- metaflow-2.15.14.data/data/share/metaflow/devtools/Tiltfile,sha256=P5_rn_F3xYLN1_cEAQ9mNeS22HG2rb8beKIz2RIK6fU,20634
398
- metaflow-2.15.14.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
399
- metaflow-2.15.14.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
400
- metaflow-2.15.14.dist-info/METADATA,sha256=x50Gg6tygiTFZUqnkrhGso9-1B9Dul8sm-4gJCWyiO0,6742
401
- metaflow-2.15.14.dist-info/WHEEL,sha256=egKm5cKfE6OqlHwodY8Jjp4yqZDBXgsj09UsV5ojd_U,109
402
- metaflow-2.15.14.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
403
- metaflow-2.15.14.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
404
- metaflow-2.15.14.dist-info/RECORD,,
390
+ metaflow/user_configs/config_options.py,sha256=aB53M-2WkDPo_TRLAcC8v89Wy8-oxflfW4l-xlb5pDI,21089
391
+ metaflow/user_configs/config_parameters.py,sha256=Eyiqcz4YV_z4algDHAh2gaejGFgIdHk8Vix9AUdPSh0,20989
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any
@@ -1 +0,0 @@
1
- # Empty file