metaflow 2.17.5__py2.py3-none-any.whl → 2.18.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.
metaflow/lint.py CHANGED
@@ -416,3 +416,25 @@ def check_nested_foreach(graph):
416
416
  if node.type == "foreach":
417
417
  if any(graph[p].type == "foreach" for p in node.split_parents):
418
418
  raise LintWarn(msg.format(node), node.func_lineno, node.source_file)
419
+
420
+
421
+ @linter.ensure_static_graph
422
+ @linter.check
423
+ def check_ambiguous_joins(graph):
424
+ for node in graph:
425
+ if node.type == "join":
426
+ problematic_parents = [
427
+ p_name
428
+ for p_name in node.in_funcs
429
+ if graph[p_name].type == "split-switch"
430
+ ]
431
+ if problematic_parents:
432
+ msg = (
433
+ "A conditional path cannot lead directly to a join step.\n"
434
+ "In your conditional step(s) {parents}, one or more of the possible paths transition directly to the join step {join_name}.\n"
435
+ "As a workaround, please introduce an intermediate, unconditional step on that specific path before joining."
436
+ ).format(
437
+ parents=", ".join("*%s*" % p for p in problematic_parents),
438
+ join_name="*%s*" % node.name,
439
+ )
440
+ raise LintWarn(msg, node.func_lineno, node.source_file)
@@ -1894,8 +1894,10 @@ class ArgoWorkflows(object):
1894
1894
  # foreach-joins straight out of conditional branches are not yet supported
1895
1895
  if self._is_conditional_join_node(node):
1896
1896
  raise ArgoWorkflowsException(
1897
- "Conditionals steps that transition directly into a join step are not currently supported. "
1898
- "As a workaround, you can add a normal step after the conditional steps that transitions to a join step."
1897
+ "Conditional steps inside a foreach that transition directly into a join step are not currently supported.\n"
1898
+ "As a workaround, add a common step after the conditional steps %s "
1899
+ "that will transition to a join."
1900
+ % ", ".join("*%s*" % f for f in node.in_funcs)
1899
1901
  )
1900
1902
  # Set aggregated input-paths for a for-each join
1901
1903
  foreach_step = next(
@@ -60,7 +60,7 @@ def list(obj, archive=False):
60
60
  @click.pass_obj
61
61
  def save(obj, path):
62
62
  with open(path, "wb") as f:
63
- f.write(obj.package.blob())
63
+ f.write(obj.package.blob)
64
64
  obj.echo(
65
65
  "Code package saved in *%s* with metadata: %s"
66
66
  % (path, obj.package.package_metadata),
metaflow/task.py CHANGED
@@ -121,8 +121,10 @@ class MetaflowTask(object):
121
121
  r = w.post_step(orig_step_func.name, self.flow, raised_exception)
122
122
  except Exception as ex:
123
123
  r = ex
124
- if r is None or isinstance(r, Exception):
124
+ if r is None:
125
125
  raised_exception = None
126
+ elif isinstance(r, Exception):
127
+ raised_exception = r
126
128
  elif isinstance(r, tuple):
127
129
  if len(r) == 2:
128
130
  raised_exception, fake_next_call_args = r
@@ -271,6 +271,9 @@ class ConfigValue(collections.abc.Mapping, dict):
271
271
  v = obj
272
272
  return v
273
273
 
274
+ def __reduce__(self):
275
+ return (self.__class__, (self.to_dict(),))
276
+
274
277
 
275
278
  class DelayEvaluator(collections.abc.Mapping):
276
279
  """
@@ -484,7 +487,6 @@ class Config(Parameter, collections.abc.Mapping):
484
487
  parser: Optional[Union[str, Callable[[str], Dict[Any, Any]]]] = None,
485
488
  **kwargs: Dict[str, str]
486
489
  ):
487
-
488
490
  if default is not None and default_value is not None:
489
491
  raise MetaflowException(
490
492
  "For config '%s', you can only specify default or default_value, not both"
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.17.5"
1
+ metaflow_version = "2.18.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metaflow
3
- Version: 2.17.5
3
+ Version: 2.18.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.17.5; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.18.0; extra == "stubs"
30
30
  Dynamic: author
31
31
  Dynamic: author-email
32
32
  Dynamic: classifier
@@ -14,7 +14,7 @@ metaflow/flowspec.py,sha256=9wsO2_QoO_VHKusKdpslfbwQREOwf0fAzF-DSEA0iZ8,41968
14
14
  metaflow/graph.py,sha256=UOeClj-JeORRlZWOQMI1CirkrCpTvVWvRcSwODCajMg,19263
15
15
  metaflow/includefile.py,sha256=RtISGl1V48qjkJBakUZ9yPpHV102h7pOIFiKP8PLHpc,20927
16
16
  metaflow/integrations.py,sha256=LlsaoePRg03DjENnmLxZDYto3NwWc9z_PtU6nJxLldg,1480
17
- metaflow/lint.py,sha256=dvgpMZoF506yJerCHHUu7A-nTVry95Fmr8Q3bPEaJCs,14374
17
+ metaflow/lint.py,sha256=A2NdUq_MnQal_RUCMC8ZOSR0VYZGyi2mSgwPQB0UzQo,15343
18
18
  metaflow/meta_files.py,sha256=vlgJHI8GJUKzXoxdrVoH8yyCF5bhFgwYemUgnyd1wgM,342
19
19
  metaflow/metaflow_config.py,sha256=lsdfr_1eS4cP6g1OgLWePKzUIypUGVjNxffRhKlFWfA,24102
20
20
  metaflow/metaflow_config_funcs.py,sha256=5GlvoafV6SxykwfL8D12WXSfwjBN_NsyuKE_Q3gjGVE,6738
@@ -31,12 +31,12 @@ metaflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  metaflow/pylint_wrapper.py,sha256=tJjmdsgtbHTCqg_oA6fV6SbWq_3V5XUgE9xH0zJ1CGU,3004
32
32
  metaflow/runtime.py,sha256=3R44AFI04LWahbfa2v0yDYIWHIz6sau26p1SnzYFNew,86888
33
33
  metaflow/tagging_util.py,sha256=ctyf0Q1gBi0RyZX6J0e9DQGNkNHblV_CITfy66axXB4,2346
34
- metaflow/task.py,sha256=keErPaNH5gNko6V1saDT-qsICKu4EROau9DiCu4riHU,39192
34
+ metaflow/task.py,sha256=jnh_qteVIW0sP3Y2MBfJR2eEv_MGnOW1quPO_1OltH0,39244
35
35
  metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
36
36
  metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
37
37
  metaflow/util.py,sha256=g2SOU_CRzJLgDM_UGF9QDMANMAIHAsDRXE6S76_YzsY,14594
38
38
  metaflow/vendor.py,sha256=A82CGHfStZGDP5pQ5XzRjFkbN1ZC-vFmghXIrzMDDNg,5868
39
- metaflow/version.py,sha256=YrG_eZXjqECyWWPibAnZKm-dNf2obxHEkt8n9fUg9zs,28
39
+ metaflow/version.py,sha256=GQnbrtyPirqYpqhPvarOOi5VzV-a2pEEafFGrBt3LNo,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
@@ -205,7 +205,7 @@ metaflow/plugins/debug_monitor.py,sha256=Md5X_sDOSssN9pt2D8YcaIjTK5JaQD55UAYTcF6
205
205
  metaflow/plugins/environment_decorator.py,sha256=6m9j2B77d-Ja_l_9CTJ__0O6aB2a8Qt_lAZu6UjAcUA,587
206
206
  metaflow/plugins/events_decorator.py,sha256=T_YSK-DlgZhd3ge9PlpTRNaMi15GK0tKZMZl1NdV9DQ,24403
207
207
  metaflow/plugins/logs_cli.py,sha256=77W5UNagU2mOKSMMvrQxQmBLRzvmjK-c8dWxd-Ygbqs,11410
208
- metaflow/plugins/package_cli.py,sha256=4OIBmuSSmQ6utWbeMln9HzQXnC9UYm3SilsHzf_sqbo,2002
208
+ metaflow/plugins/package_cli.py,sha256=GOxKJs9Wt0x9VtcTJ2EG_wj6pWnlS0XBFAyHpCzzuvs,2000
209
209
  metaflow/plugins/parallel_decorator.py,sha256=wtR_3eRIP3eV7fBIm15oouRjmHBFZ9OklxdaNvttLEQ,9702
210
210
  metaflow/plugins/project_decorator.py,sha256=uhwsguEj7OM_E2OnY1ap3MoGocQHeywuJSa-qPuWn-U,7592
211
211
  metaflow/plugins/resources_decorator.py,sha256=AtoOwg4mHYHYthg-CAfbfam-QiT0ViuDLDoukoDvF6Q,1347
@@ -230,7 +230,7 @@ metaflow/plugins/airflow/sensors/s3_sensor.py,sha256=iDReG-7FKnumrtQg-HY6cCUAAqN
230
230
  metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
231
  metaflow/plugins/argo/argo_client.py,sha256=jLz0FjCTBvFLZt-8lZcMQhDcInhgEcGdPrU2Gvh67zA,17080
232
232
  metaflow/plugins/argo/argo_events.py,sha256=_C1KWztVqgi3zuH57pInaE9OzABc2NnncC-zdwOMZ-w,5909
233
- metaflow/plugins/argo/argo_workflows.py,sha256=5AAPsMZuJ_yhQoE6Xx4VwtSRJyrSXqANqpAeog6XZjQ,207490
233
+ metaflow/plugins/argo/argo_workflows.py,sha256=URF89Inj4gXQJ5p4_nFPTQihj-LlQZP0yq38kIlmhKU,207599
234
234
  metaflow/plugins/argo/argo_workflows_cli.py,sha256=L5KwcT6Vd4HqAXFCPGmHUONgM2eOCTbvxdoIs6CQchw,51877
235
235
  metaflow/plugins/argo/argo_workflows_decorator.py,sha256=CLSjPqFTGucZ2_dSQGAYkoWWUZBQ9TCBXul4rxhDj3w,8282
236
236
  metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
@@ -421,19 +421,19 @@ metaflow/tutorials/08-autopilot/README.md,sha256=GnePFp_q76jPs991lMUqfIIh5zSorIe
421
421
  metaflow/tutorials/08-autopilot/autopilot.ipynb,sha256=DQoJlILV7Mq9vfPBGW-QV_kNhWPjS5n6SJLqePjFYLY,3191
422
422
  metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
423
423
  metaflow/user_configs/config_options.py,sha256=d3hKA6WRPe21PdTl7sBnxIp5sE6zBpRtgAGx7hWkkfw,21380
424
- metaflow/user_configs/config_parameters.py,sha256=Loa5wu3vIs0SLyGhbOo8b88nWgCuZ09k24EqC_lI7n4,20890
424
+ metaflow/user_configs/config_parameters.py,sha256=1KZC1x7i-M-PfscIEOMUJ5NT2HTzFsB0HtNMTp_8hqE,20967
425
425
  metaflow/user_decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
426
426
  metaflow/user_decorators/common.py,sha256=0u9NRLQ95TfJCjWVEOGT4MJ9WoQgAMBM9kJ2gJGlVjk,5362
427
427
  metaflow/user_decorators/mutable_flow.py,sha256=EywKTN3cnXPQF_s62wQaC4a4aH14j8oeqzD3yZaiDxw,19467
428
428
  metaflow/user_decorators/mutable_step.py,sha256=-BY0UDXf_RCAEnC5JlLzEXGdiw1KD9oSrSxS_SWaB9Y,16791
429
429
  metaflow/user_decorators/user_flow_decorator.py,sha256=2yDwZq9QGv9W-7kEuKwa8o4ZkTvuHJ5ESz7VVrGViAI,9890
430
430
  metaflow/user_decorators/user_step_decorator.py,sha256=4558NR8RJtN22OyTwCXO80bAMhMTaRGMoX12b1GMcPc,27232
431
- metaflow-2.17.5.data/data/share/metaflow/devtools/Makefile,sha256=TT4TCq8ALSfqYyGqDPocN5oPcZe2FqoCZxmGO1LmyCc,13760
432
- metaflow-2.17.5.data/data/share/metaflow/devtools/Tiltfile,sha256=Ty5p6AD3MwJAcAnOGv4yMz8fExAsnNQ11r8whK6uzzw,21381
433
- metaflow-2.17.5.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
434
- metaflow-2.17.5.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
435
- metaflow-2.17.5.dist-info/METADATA,sha256=8p1TxoX8SU5a2LIpAPlSNgyMsqfgIPk4FDA01CI4ZfA,6740
436
- metaflow-2.17.5.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
437
- metaflow-2.17.5.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
438
- metaflow-2.17.5.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
439
- metaflow-2.17.5.dist-info/RECORD,,
431
+ metaflow-2.18.0.data/data/share/metaflow/devtools/Makefile,sha256=TT4TCq8ALSfqYyGqDPocN5oPcZe2FqoCZxmGO1LmyCc,13760
432
+ metaflow-2.18.0.data/data/share/metaflow/devtools/Tiltfile,sha256=Ty5p6AD3MwJAcAnOGv4yMz8fExAsnNQ11r8whK6uzzw,21381
433
+ metaflow-2.18.0.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
434
+ metaflow-2.18.0.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
435
+ metaflow-2.18.0.dist-info/METADATA,sha256=Ic26QTgdp3FKW3w-l43idt6wchjKZWHfNrcN5bCUyeE,6740
436
+ metaflow-2.18.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
437
+ metaflow-2.18.0.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
438
+ metaflow-2.18.0.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
439
+ metaflow-2.18.0.dist-info/RECORD,,