metaflow 2.13.2__py2.py3-none-any.whl → 2.13.4__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.
@@ -38,7 +38,7 @@ class TestEditableCard(MetaflowCard):
38
38
 
39
39
  ALLOW_USER_COMPONENTS = True
40
40
 
41
- def __init__(self, options={}, components=[], graph=None):
41
+ def __init__(self, components=[], **kwargs):
42
42
  self._components = components
43
43
 
44
44
  def render(self, task):
@@ -52,7 +52,7 @@ class TestEditableCard2(MetaflowCard):
52
52
 
53
53
  ALLOW_USER_COMPONENTS = True
54
54
 
55
- def __init__(self, options={}, components=[], graph=None):
55
+ def __init__(self, components=[], **kwargs):
56
56
  self._components = components
57
57
 
58
58
  def render(self, task):
@@ -64,7 +64,7 @@ class TestNonEditableCard(MetaflowCard):
64
64
 
65
65
  seperator = "$&#!!@*"
66
66
 
67
- def __init__(self, options={}, components=[], graph=None):
67
+ def __init__(self, components=[], **kwargs):
68
68
  self._components = components
69
69
 
70
70
  def render(self, task):
@@ -193,7 +193,7 @@ class TestRefreshComponentCard(MetaflowCard):
193
193
 
194
194
  type = "test_component_refresh_card"
195
195
 
196
- def __init__(self, options={}, components=[], graph=None):
196
+ def __init__(self, components=[], **kwargs):
197
197
  self._components = components
198
198
 
199
199
  def render(self, task) -> str:
@@ -1,8 +1,8 @@
1
1
  from .card_modules import MetaflowCardComponent
2
+ from .card_modules.card import create_component_id
2
3
  from .card_modules.basic import ErrorComponent, SectionComponent
3
4
  from .card_modules.components import (
4
5
  UserComponent,
5
- create_component_id,
6
6
  StubComponent,
7
7
  )
8
8
  from .exception import ComponentOverwriteNotSupportedException
@@ -362,11 +362,7 @@ class TriggerOnFinishDecorator(FlowDecorator):
362
362
  """
363
363
 
364
364
  name = "trigger_on_finish"
365
- defaults = {
366
- "flow": None, # flow_name or project_flow_name
367
- "flows": [], # flow_names or project_flow_names
368
- "options": {},
369
- }
365
+
370
366
  options = {
371
367
  "trigger": dict(
372
368
  multiple=True,
@@ -374,6 +370,14 @@ class TriggerOnFinishDecorator(FlowDecorator):
374
370
  help="Specify run pathspec for testing @trigger_on_finish locally.",
375
371
  ),
376
372
  }
373
+ defaults = {
374
+ "flow": None, # flow_name or project_flow_name
375
+ "flows": [], # flow_names or project_flow_names
376
+ "options": {},
377
+ # Re-enable if you want to support TL options directly in the decorator like
378
+ # for @project decorator
379
+ # **{k: v["default"] for k, v in options.items()},
380
+ }
377
381
 
378
382
  def flow_init(
379
383
  self,
@@ -539,13 +543,43 @@ class TriggerOnFinishDecorator(FlowDecorator):
539
543
  self.options = self.attributes["options"]
540
544
 
541
545
  # Handle scenario for local testing using --trigger.
546
+
547
+ # Re-enable this code if you want to support passing trigger directly in the
548
+ # decorator in a way similar to how production and branch are passed in the
549
+ # project decorator.
550
+
551
+ # # This is overkill since default is None for all options but adding this code
552
+ # # to make it safe if other non None-default options are added in the future.
553
+ # for op in options:
554
+ # if (
555
+ # op in self._user_defined_attributes
556
+ # and options[op] != self.defaults[op]
557
+ # and self.attributes[op] != options[op]
558
+ # ):
559
+ # # Exception if:
560
+ # # - the user provides a value in the attributes field
561
+ # # - AND the user provided a value in the command line (non default)
562
+ # # - AND the values are different
563
+ # # Note that this won't raise an error if the user provided the default
564
+ # # value in the command line and provided one in attribute but although
565
+ # # slightly inconsistent, it is not incorrect.
566
+ # raise MetaflowException(
567
+ # "You cannot pass %s as both a command-line argument and an attribute "
568
+ # "of the @trigger_on_finish decorator." % op
569
+ # )
570
+
571
+ # if "trigger" in self._user_defined_attributes:
572
+ # trigger_option = self.attributes["trigger"]
573
+ # else:
574
+ trigger_option = options["trigger"]
575
+
542
576
  self._option_values = options
543
- if options["trigger"]:
577
+ if trigger_option:
544
578
  from metaflow import Run
545
579
  from metaflow.events import Trigger
546
580
 
547
581
  run_objs = []
548
- for run_pathspec in options["trigger"]:
582
+ for run_pathspec in trigger_option:
549
583
  if len(run_pathspec.split("/")) != 2:
550
584
  raise MetaflowException(
551
585
  "Incorrect format for run pathspec for *--trigger*. "
@@ -72,7 +72,6 @@ class ProjectDecorator(FlowDecorator):
72
72
  """
73
73
 
74
74
  name = "project"
75
- defaults = {"name": None}
76
75
 
77
76
  options = {
78
77
  "production": dict(
@@ -91,19 +90,48 @@ class ProjectDecorator(FlowDecorator):
91
90
  ),
92
91
  }
93
92
 
93
+ defaults = {"name": None, **{k: v["default"] for k, v in options.items()}}
94
+
94
95
  def flow_init(
95
96
  self, flow, graph, environment, flow_datastore, metadata, logger, echo, options
96
97
  ):
97
98
  self._option_values = options
98
99
  project_name = self.attributes.get("name")
100
+ for op in options:
101
+ if (
102
+ op in self._user_defined_attributes
103
+ and options[op] != self.defaults[op]
104
+ and self.attributes[op] != options[op]
105
+ ):
106
+ # Exception if:
107
+ # - the user provides a value in the attributes field
108
+ # - AND the user provided a value in the command line (non default)
109
+ # - AND the values are different
110
+ # Note that this won't raise an error if the user provided the default
111
+ # value in the command line and provided one in attribute but although
112
+ # slightly inconsistent, it is not incorrect.
113
+ raise MetaflowException(
114
+ "You cannot pass %s as both a command-line argument and an attribute "
115
+ "of the @project decorator." % op
116
+ )
117
+ if "branch" in self._user_defined_attributes:
118
+ project_branch = self.attributes["branch"]
119
+ else:
120
+ project_branch = options["branch"]
121
+
122
+ if "production" in self._user_defined_attributes:
123
+ project_production = self.attributes["production"]
124
+ else:
125
+ project_production = options["production"]
126
+
99
127
  project_flow_name, branch_name = format_name(
100
128
  flow.name,
101
129
  project_name,
102
- options["production"],
103
- options["branch"],
130
+ project_production,
131
+ project_branch,
104
132
  get_username(),
105
133
  )
106
- is_user_branch = options["branch"] is None and not options["production"]
134
+ is_user_branch = project_branch is None and not project_production
107
135
  echo(
108
136
  "Project: *%s*, Branch: *%s*" % (project_name, branch_name),
109
137
  fg="magenta",
@@ -114,7 +142,7 @@ class ProjectDecorator(FlowDecorator):
114
142
  "project_name": project_name,
115
143
  "branch_name": branch_name,
116
144
  "is_user_branch": is_user_branch,
117
- "is_production": options["production"],
145
+ "is_production": project_production,
118
146
  "project_flow_name": project_flow_name,
119
147
  }
120
148
  )
@@ -3,7 +3,7 @@ import json
3
3
  import os
4
4
  import re
5
5
 
6
- from typing import Any, Callable, Dict, Optional, TYPE_CHECKING, Union
6
+ from typing import Any, Callable, Dict, List, Optional, Tuple, TYPE_CHECKING, Union
7
7
 
8
8
 
9
9
  from ..exception import MetaflowException
@@ -171,7 +171,7 @@ class DelayEvaluator(collections.abc.Mapping):
171
171
  yield "%s%d" % (UNPACK_KEY, id(self))
172
172
 
173
173
  def __getitem__(self, key):
174
- if key == "%s%d" % (UNPACK_KEY, id(self)):
174
+ if isinstance(key, str) and key == "%s%d" % (UNPACK_KEY, id(self)):
175
175
  return self
176
176
  if self._access is None:
177
177
  raise KeyError(key)
@@ -196,12 +196,23 @@ class DelayEvaluator(collections.abc.Mapping):
196
196
  if flow_cls is None:
197
197
  # We are not executing inside a flow (ie: not the CLI)
198
198
  raise MetaflowException(
199
- "Config object can only be used directly in the FlowSpec defining them. "
200
- "If using outside of the FlowSpec, please use ConfigEval"
199
+ "Config object can only be used directly in the FlowSpec defining them "
200
+ "(or their flow decorators)."
201
201
  )
202
202
  if self._access is not None:
203
203
  # Build the final expression by adding all the fields in access as . fields
204
- self._config_expr = ".".join([self._config_expr] + self._access)
204
+ access_list = [self._config_expr]
205
+ for a in self._access:
206
+ if isinstance(a, str):
207
+ access_list.append(a)
208
+ elif isinstance(a, DelayEvaluator):
209
+ # Supports things like config[other_config.selector].var
210
+ access_list.append(a())
211
+ else:
212
+ raise MetaflowException(
213
+ "Field '%s' of type '%s' is not supported" % (str(a), type(a))
214
+ )
215
+ self._config_expr = ".".join(access_list)
205
216
  # Evaluate the expression setting the config values as local variables
206
217
  try:
207
218
  return eval(
@@ -369,7 +380,7 @@ class Config(Parameter, collections.abc.Mapping):
369
380
 
370
381
  def __getitem__(self, key):
371
382
  self._init_delayed_evaluator()
372
- if key.startswith(UNPACK_KEY):
383
+ if isinstance(key, str) and key.startswith(UNPACK_KEY):
373
384
  return self._delayed_evaluator[key]
374
385
  return DelayEvaluator(self.name.lower())[key]
375
386
 
@@ -406,17 +417,20 @@ def resolve_delayed_evaluator(v: Any, ignore_errors: bool = False) -> Any:
406
417
 
407
418
  def unpack_delayed_evaluator(
408
419
  to_unpack: Dict[str, Any], ignore_errors: bool = False
409
- ) -> Dict[str, Any]:
420
+ ) -> Tuple[Dict[str, Any], List[str]]:
410
421
  result = {}
422
+ new_keys = []
411
423
  for k, v in to_unpack.items():
412
424
  if not isinstance(k, str) or not k.startswith(UNPACK_KEY):
413
425
  result[k] = v
414
426
  else:
415
427
  # k.startswith(UNPACK_KEY)
416
428
  try:
417
- result.update(resolve_delayed_evaluator(v))
429
+ new_vals = resolve_delayed_evaluator(v)
430
+ new_keys.extend(new_vals.keys())
431
+ result.update(new_vals)
418
432
  except Exception as e:
419
433
  if ignore_errors:
420
434
  continue
421
435
  raise e
422
- return result
436
+ return result, new_keys
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.13.2"
1
+ metaflow_version = "2.13.4"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: metaflow
3
- Version: 2.13.2
3
+ Version: 2.13.4
4
4
  Summary: Metaflow: More Data Science, Less Engineering
5
5
  Author: Metaflow Developers
6
6
  Author-email: help@metaflow.org
@@ -26,7 +26,17 @@ License-File: LICENSE
26
26
  Requires-Dist: requests
27
27
  Requires-Dist: boto3
28
28
  Provides-Extra: stubs
29
- Requires-Dist: metaflow-stubs==2.13.2; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.13.4; extra == "stubs"
30
+ Dynamic: author
31
+ Dynamic: author-email
32
+ Dynamic: classifier
33
+ Dynamic: description
34
+ Dynamic: description-content-type
35
+ Dynamic: license
36
+ Dynamic: project-url
37
+ Dynamic: provides-extra
38
+ Dynamic: requires-dist
39
+ Dynamic: summary
30
40
 
31
41
  ![Metaflow_Logo_Horizontal_FullColor_Ribbon_Dark_RGB](https://user-images.githubusercontent.com/763451/89453116-96a57e00-d713-11ea-9fa6-82b29d4d6eff.png)
32
42
 
@@ -1,12 +1,12 @@
1
1
  metaflow/R.py,sha256=CqVfIatvmjciuICNnoyyNGrwE7Va9iXfLdFbQa52hwA,3958
2
2
  metaflow/__init__.py,sha256=fbhdWiWnEoAX4KnzRHMY_iQcT-uYlMWhzrXPKvK0i5g,5832
3
- metaflow/cards.py,sha256=tP1_RrtmqdFh741pqE4t98S7SA0MtGRlGvRICRZF1Mg,426
4
- metaflow/cli.py,sha256=IfUZd9fiUrT_MaSUnahmdPXK81DB06NNhUO2aXe0_PI,21600
3
+ metaflow/cards.py,sha256=IbRmredvmFEU0V6JL7DR8wCESwVmmZJubr6x24bo7U4,442
4
+ metaflow/cli.py,sha256=zTXaVpfAa0NBvAbBe7trS1kMRkzOIdt7_Vi1q6J1FGQ,21877
5
5
  metaflow/cli_args.py,sha256=muIh9pdVqMRG09uAYFKcAcUKFyDE4N3Wm6YahWRaUNI,3594
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=BxzcxPkc8SvVTDD5pNhE3bmy7bYn6pBPEF-WYjnw-MY,23911
9
+ metaflow/decorators.py,sha256=5xgIUuIcO52dKGUQ8fe-pmULdXIUwwMy86Uz2OZxOkw,23929
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
@@ -25,7 +25,7 @@ metaflow/metaflow_version.py,sha256=duhIzfKZtcxMVMs2uiBqBvUarSHJqyWDwMhaBOQd_g0,
25
25
  metaflow/monitor.py,sha256=T0NMaBPvXynlJAO_avKtk8OIIRMyEuMAyF8bIp79aZU,5323
26
26
  metaflow/multicore_utils.py,sha256=yEo5T6Gemn4_vl8b6IOz7fsTUYtEyqa3AaKZgJY96Wc,4974
27
27
  metaflow/package.py,sha256=yfwVMVB1mD-Sw94KwXNK3N-26YHoKMn6btrcgd67Izs,7845
28
- metaflow/parameters.py,sha256=3mCV8d-Bj7n2sByl0pN3hRVLXvYnSL9c53_wxWGSwG8,18596
28
+ metaflow/parameters.py,sha256=ycSTJzQc3rOburSl9prD__qgCxlPU0Cx8ntdEYuzoYU,18621
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=zzBY9YaSUZOGH-ypDKAv2B_7XcoyMZj-zCoCrmYqNRc,2865
@@ -36,7 +36,7 @@ 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=hKjHl6NYJkKBSU2tzdVbddfOX1zWK73T4GCO42A0XB4,14666
38
38
  metaflow/vendor.py,sha256=FchtA9tH22JM-eEtJ2c9FpUdMn8sSb1VHuQS56EcdZk,5139
39
- metaflow/version.py,sha256=M5K4wYLuE5s9hNYMHMFXQ40u9eB0ZpF_LJKAyttJrxM,28
39
+ metaflow/version.py,sha256=drr-g04woqZf71pNYGX7pz8CSPausyn9M8cgyFIvKlE,28
40
40
  metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
41
41
  metaflow/_vendor/typing_extensions.py,sha256=0nUs5p1A_UrZigrAVBoOEM6TxU37zzPDUtiij1ZwpNc,110417
42
42
  metaflow/_vendor/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
@@ -113,8 +113,8 @@ metaflow/_vendor/v3_6/importlib_metadata/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCe
113
113
  metaflow/cli_components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
114
  metaflow/cli_components/dump_cmd.py,sha256=SZEX51BWNd1o3H2uHDkYA8KRvou5X8g5rTwpdu5vnNQ,2704
115
115
  metaflow/cli_components/init_cmd.py,sha256=Er-BO59UEUV1HIsg81bRtZWT2D2IZNMp93l-AoZLCls,1519
116
- metaflow/cli_components/run_cmds.py,sha256=yBJfmQiICi2yEIluy9yixPb4IE84U6b4e_oiIrq7nKY,10437
117
- metaflow/cli_components/step_cmd.py,sha256=Mkztidy-wxYH7KyLSVsWK7SeYPJIeihpDClzTn9-2oo,5057
116
+ metaflow/cli_components/run_cmds.py,sha256=BMkki6gwtJw0ULLP0XkrwZvxWDE5BV10KCfZn6-gIEo,10562
117
+ metaflow/cli_components/step_cmd.py,sha256=oIkJRdCzXTPmSPEuCHYfjp7Cat_3jBY2StbuEkTPH2I,4706
118
118
  metaflow/cli_components/utils.py,sha256=gpoDociadjnJD7MuiJup_MDR02ZJjjleejr0jPBu29c,6057
119
119
  metaflow/client/__init__.py,sha256=1GtQB4Y_CBkzaxg32L1syNQSlfj762wmLrfrDxGi1b8,226
120
120
  metaflow/client/core.py,sha256=Ka6G12h6pS_046cej0c8npvaBGpiKyvJ1bGbRFZL6Kg,75437
@@ -154,11 +154,11 @@ metaflow/plugins/catch_decorator.py,sha256=UOM2taN_OL2RPpuJhwEOA9ZALm0-hHD0XS2Hn
154
154
  metaflow/plugins/debug_logger.py,sha256=mcF5HYzJ0NQmqCMjyVUk3iAP-heroHRIiVWQC6Ha2-I,879
155
155
  metaflow/plugins/debug_monitor.py,sha256=Md5X_sDOSssN9pt2D8YcaIjTK5JaQD55UAYTcF6xYF0,1099
156
156
  metaflow/plugins/environment_decorator.py,sha256=6m9j2B77d-Ja_l_9CTJ__0O6aB2a8Qt_lAZu6UjAcUA,587
157
- metaflow/plugins/events_decorator.py,sha256=8YSapp_sT3UzNrb6cYBJ19-wmX_CKow6OOJN8kNVnpg,26456
157
+ metaflow/plugins/events_decorator.py,sha256=WsLcuy-FmXpQ6mvm431deTB2hE-fPYILgbVSWHRXslQ,28121
158
158
  metaflow/plugins/logs_cli.py,sha256=77W5UNagU2mOKSMMvrQxQmBLRzvmjK-c8dWxd-Ygbqs,11410
159
159
  metaflow/plugins/package_cli.py,sha256=-J6D4cupHfWSZ4GEFo2yy9Je9oL3owRWm5pEJwaiqd4,1649
160
160
  metaflow/plugins/parallel_decorator.py,sha256=GR6LKIW7_S7AoU50Ar2_0nndVtO2epdn3LuthE0vKMQ,9127
161
- metaflow/plugins/project_decorator.py,sha256=eJOe0Ea7CbUCReEhR_XQvRkhV6jyRqDxM72oZI7EMCk,5336
161
+ metaflow/plugins/project_decorator.py,sha256=_hMh1-wEGQxckBYw3020auPccGkIaCXvqdT8kGrEJLU,6630
162
162
  metaflow/plugins/resources_decorator.py,sha256=AtoOwg4mHYHYthg-CAfbfam-QiT0ViuDLDoukoDvF6Q,1347
163
163
  metaflow/plugins/retry_decorator.py,sha256=tz_2Tq6GLg3vjDBZp0KKVTk3ADlCvqaWTSf7blmFdUw,1548
164
164
  metaflow/plugins/storage_executor.py,sha256=FqAgR0-L9MuqN8fRtTe4jjUfJL9lqt6fQkYaglAjRbk,6137
@@ -220,25 +220,25 @@ metaflow/plugins/azure/azure_utils.py,sha256=j3kAxi2oC-fMpw8YegJvqsAwxi_m7jGPxCa
220
220
  metaflow/plugins/azure/blob_service_client_factory.py,sha256=MtyPftBxrXdXMxwhKgLepG6mtlb_2BhJLG_fvbO6D14,6527
221
221
  metaflow/plugins/azure/includefile_support.py,sha256=2kBnjR-Rl1cSoZsrgvl3t4tf1qsVqnYk0LJ6ZsSLzTo,4726
222
222
  metaflow/plugins/cards/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
- metaflow/plugins/cards/card_cli.py,sha256=LN0B_Bvb7qJxRyvzR2uvRctt5xrC4SqZo0rkQgExQKo,35040
223
+ metaflow/plugins/cards/card_cli.py,sha256=XyiU5f6i_xjFHPyowWGs9mKQm9fm3dK6id-IKsoe9cY,35177
224
224
  metaflow/plugins/cards/card_client.py,sha256=30dFBoC3axc261GeV7QCIs_V1OHhRtS31S0wEWsjw90,9501
225
225
  metaflow/plugins/cards/card_creator.py,sha256=vRz1EUFa4xQ1fUIWzqyACViC6D7KGFaq5XlLIEssXTI,7741
226
226
  metaflow/plugins/cards/card_datastore.py,sha256=3K19wE0CZVvOpuYUytftIYYnHHn3pMZJE87FMD6OYlM,14244
227
- metaflow/plugins/cards/card_decorator.py,sha256=bEiHVrlvhbR51Y1qVlQ5WrYCtjZDl5IW9df2JqouBgg,10804
227
+ metaflow/plugins/cards/card_decorator.py,sha256=nU-uZ4_ubU7bCsSb6uT61YnN8ruo43_FzqZ24MsZpKg,12070
228
228
  metaflow/plugins/cards/card_resolver.py,sha256=bjyujYpGUFbLJNwXNGHlHhL4f-gVdVKebl7XW1vWDtE,717
229
229
  metaflow/plugins/cards/card_server.py,sha256=DHv0RcepaPULWbkDahiEMrU5A281Cfb0DvHLUYd8JsU,11772
230
- metaflow/plugins/cards/component_serializer.py,sha256=Row7c_8_euJcF_I1lWHdgMRj7dvAb69O-jZTmxS9h8k,37223
230
+ metaflow/plugins/cards/component_serializer.py,sha256=gxG5leRVJEzMqRYKs3vIzy2ijFNEI3fX1AzHgfX-D8A,37249
231
231
  metaflow/plugins/cards/exception.py,sha256=2UqlNb-Kxpg6cuLu2sBEIPTIElwlVBsSpeCgDYKTxWg,5222
232
232
  metaflow/plugins/cards/card_modules/__init__.py,sha256=WI2IAsFiKGyqPrHtO9S9-MbyVtUTgWJNL4xjJaBErRo,3437
233
233
  metaflow/plugins/cards/card_modules/base.html,sha256=Y208ZKIZqEWWUcoBFTLTdWKAG0C8xH5lmyCRSjaN2FY,21004
234
- metaflow/plugins/cards/card_modules/basic.py,sha256=QHxbbeUA3iM_cJMOeVxSCqbS5Suf1pwUXlfw__Cyj1Q,24117
234
+ metaflow/plugins/cards/card_modules/basic.py,sha256=oton1WXN59LPB_08_EA9LYgyNQmQjFHlLJuTWDqmHkM,25354
235
235
  metaflow/plugins/cards/card_modules/bundle.css,sha256=ms2wOKftlPM_i6bC_4BkrmqCOj8mYw9OFvRCJF9FSV4,11981
236
- metaflow/plugins/cards/card_modules/card.py,sha256=HspyT4d3VeXq4k3sLRLm0-2k4ScKefHu25EDuYgMtPA,4209
237
- metaflow/plugins/cards/card_modules/components.py,sha256=BBnfB2MwXOkP1pup5vOypxr1pTjpD5Jr9_vCF3vyakU,25417
236
+ metaflow/plugins/cards/card_modules/card.py,sha256=6sbqP5mwf7QWvQvX2N_bC78H9ixuI5sQ8612Q5islys,4627
237
+ metaflow/plugins/cards/card_modules/components.py,sha256=Y-Yo7UgSOyTB3zs-wDfUqUKl0PI_BzeY1QGcy2fqE2M,26752
238
238
  metaflow/plugins/cards/card_modules/convert_to_native_type.py,sha256=eGaQ8BabJ489a8AiyhXFy1pWJZl99gH0FQzwsNVxAGQ,15782
239
- metaflow/plugins/cards/card_modules/main.js,sha256=bcw-hDagN2g38i28pdSY0irAka3t3jhSg-dN5vpuk7M,1027705
239
+ metaflow/plugins/cards/card_modules/main.js,sha256=K_ZO41THtbjZC3hNSQn2rG5UUbubFgkgU6RxBjMmApk,1028430
240
240
  metaflow/plugins/cards/card_modules/renderer_tools.py,sha256=uiTdKHWFInWgtfWArOUSQLnTwqVd4hAw49jfOfg8rGA,1642
241
- metaflow/plugins/cards/card_modules/test_cards.py,sha256=xbHU2tlx0DVwHzFNoRUS8A0UYd5VHU_YgDFBFYS4QCo,5417
241
+ metaflow/plugins/cards/card_modules/test_cards.py,sha256=74H0JdWrcoc5eITxCLSUwwa1kJZ3YMteynaKsCBihXE,5361
242
242
  metaflow/plugins/cards/card_modules/chevron/__init__.py,sha256=SicpH_1eT76HUTA8aMuiGLRNKTqgYD1Qfutt2NdTL0E,156
243
243
  metaflow/plugins/cards/card_modules/chevron/main.py,sha256=FKpDW4PS2dYshgkm6yIxrBnzkhquZ4gg2dmUxrBbNTQ,3222
244
244
  metaflow/plugins/cards/card_modules/chevron/metadata.py,sha256=gQDpB9KezW9Mcv-n9K2Pt1akjiPGG1zYB5YPdQ0FlNc,19
@@ -357,10 +357,10 @@ metaflow/tutorials/08-autopilot/autopilot.ipynb,sha256=DQoJlILV7Mq9vfPBGW-QV_kNh
357
357
  metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
358
358
  metaflow/user_configs/config_decorators.py,sha256=Tj0H88UT8Q6pylXxHXgiA6cqnNlw4d3mR7M8J9g3ZUg,20139
359
359
  metaflow/user_configs/config_options.py,sha256=Knpiax_YGmYAdR3zKmaepN8puW1MyL9g6-eMGAkcylo,20942
360
- metaflow/user_configs/config_parameters.py,sha256=lWWqJ5BSvCEZIL_JTmy9sYmmyPhgh7wj6Zy_U9TRSFQ,14763
361
- metaflow-2.13.2.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
362
- metaflow-2.13.2.dist-info/METADATA,sha256=Kcm4ddVayXSQyJYcSqpvZgPs-ruSFSn3ZWTUbcZ5SeQ,5906
363
- metaflow-2.13.2.dist-info/WHEEL,sha256=M1ikteR9eetPNvm1LyQ3rpXxNYuGd90oakQO1a-ohSk,109
364
- metaflow-2.13.2.dist-info/entry_points.txt,sha256=IKwTN1T3I5eJL3uo_vnkyxVffcgnRdFbKwlghZfn27k,57
365
- metaflow-2.13.2.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
366
- metaflow-2.13.2.dist-info/RECORD,,
360
+ metaflow/user_configs/config_parameters.py,sha256=T0Zz18o9zKEV7mMcKotFWvXixhJpotLRBVrKx6ENErQ,15416
361
+ metaflow-2.13.4.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
362
+ metaflow-2.13.4.dist-info/METADATA,sha256=PBmkd2ZuaamBlNTJCyBWZWWVO8xs8J1anqV4YV_P4kQ,6121
363
+ metaflow-2.13.4.dist-info/WHEEL,sha256=9Hm2OB-j1QcCUq9Jguht7ayGIIZBRTdOXD1qg9cCgPM,109
364
+ metaflow-2.13.4.dist-info/entry_points.txt,sha256=IKwTN1T3I5eJL3uo_vnkyxVffcgnRdFbKwlghZfn27k,57
365
+ metaflow-2.13.4.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
366
+ metaflow-2.13.4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.7.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any