1212from metaflow import JSONType , current
1313from metaflow .decorators import flow_decorators
1414from metaflow .exception import MetaflowException
15- from metaflow .flowspec import FlowStateItems
1615from metaflow .graph import FlowGraph
1716from metaflow .includefile import FilePathClass
1817from metaflow .metaflow_config import (
@@ -457,7 +456,7 @@ def _base_kubernetes_annotations(self):
457456 return annotations
458457
459458 def _get_schedule (self ):
460- schedule = self .flow ._flow_state [ FlowStateItems . FLOW_DECORATORS ] .get ("schedule" )
459+ schedule = self .flow ._flow_decorators .get ("schedule" )
461460 if schedule :
462461 # Remove the field "Year" if it exists
463462 schedule = schedule [0 ]
@@ -483,15 +482,14 @@ def schedule(self):
483482
484483 def trigger_explanation (self ):
485484 # Trigger explanation for cron workflows
486- flow_decos = self .flow ._flow_state [FlowStateItems .FLOW_DECORATORS ]
487- if flow_decos .get ("schedule" ):
485+ if self .flow ._flow_decorators .get ("schedule" ):
488486 return (
489487 "This workflow triggers automatically via the CronWorkflow *%s*."
490488 % self .name
491489 )
492490
493491 # Trigger explanation for @trigger
494- elif flow_decos .get ("trigger" ):
492+ elif self . flow . _flow_decorators .get ("trigger" ):
495493 return (
496494 "This workflow triggers automatically when the upstream %s "
497495 "is/are published."
@@ -501,7 +499,7 @@ def trigger_explanation(self):
501499 )
502500
503501 # Trigger explanation for @trigger_on_finish
504- elif flow_decos .get ("trigger_on_finish" ):
502+ elif self . flow . _flow_decorators .get ("trigger_on_finish" ):
505503 return (
506504 "This workflow triggers automatically when the upstream %s succeed(s)"
507505 % self .list_to_prose (
@@ -564,10 +562,7 @@ def get_execution(cls, name):
564562
565563 def _process_parameters (self ):
566564 parameters = {}
567- has_schedule = (
568- self .flow ._flow_state [FlowStateItems .FLOW_DECORATORS ].get ("schedule" )
569- is not None
570- )
565+ has_schedule = self .flow ._flow_decorators .get ("schedule" ) is not None
571566 seen = set ()
572567 for var , param in self .flow ._get_parameters ():
573568 # Throw an exception if the parameter is specified twice.
@@ -653,9 +648,10 @@ def _process_triggers(self):
653648 # Impute triggers for Argo Workflow Template specified through @trigger and
654649 # @trigger_on_finish decorators
655650
656- flow_decos = self .flow ._flow_state [FlowStateItems .FLOW_DECORATORS ]
657651 # Disallow usage of @trigger and @trigger_on_finish together for now.
658- if flow_decos .get ("trigger" ) and flow_decos .get ("trigger_on_finish" ):
652+ if self .flow ._flow_decorators .get ("trigger" ) and self .flow ._flow_decorators .get (
653+ "trigger_on_finish"
654+ ):
659655 raise ArgoWorkflowsException (
660656 "Argo Workflows doesn't support both *@trigger* and "
661657 "*@trigger_on_finish* decorators concurrently yet. Use one or the "
@@ -665,7 +661,7 @@ def _process_triggers(self):
665661 options = None
666662
667663 # @trigger decorator
668- if flow_decos .get ("trigger" ):
664+ if self . flow . _flow_decorators .get ("trigger" ):
669665 # Parameters are not duplicated, and exist in the flow. Additionally,
670666 # convert them to lower case since Metaflow parameters are case
671667 # insensitive.
@@ -678,7 +674,7 @@ def _process_triggers(self):
678674 if not param .IS_CONFIG_PARAMETER
679675 ]
680676 )
681- trigger_deco = flow_decos .get ("trigger" )[0 ]
677+ trigger_deco = self . flow . _flow_decorators .get ("trigger" )[0 ]
682678 trigger_deco .format_deploytime_value ()
683679 for event in trigger_deco .triggers :
684680 parameters = {}
@@ -710,17 +706,19 @@ def _process_triggers(self):
710706 parameters [key .lower ()] = value
711707 event ["parameters" ] = parameters
712708 event ["type" ] = "event"
713- triggers .extend (flow_decos .get ("trigger" )[0 ].triggers )
709+ triggers .extend (self . flow . _flow_decorators .get ("trigger" )[0 ].triggers )
714710
715711 # Set automatic parameter mapping iff only a single event dependency is
716712 # specified with no explicit parameter mapping.
717713 if len (triggers ) == 1 and not triggers [0 ].get ("parameters" ):
718714 triggers [0 ]["parameters" ] = dict (zip (params , params ))
719- options = flow_decos .get ("trigger" )[0 ].options
715+ options = self . flow . _flow_decorators .get ("trigger" )[0 ].options
720716
721717 # @trigger_on_finish decorator
722- if flow_decos .get ("trigger_on_finish" ):
723- trigger_on_finish_deco = flow_decos .get ("trigger_on_finish" )[0 ]
718+ if self .flow ._flow_decorators .get ("trigger_on_finish" ):
719+ trigger_on_finish_deco = self .flow ._flow_decorators .get (
720+ "trigger_on_finish"
721+ )[0 ]
724722 trigger_on_finish_deco .format_deploytime_value ()
725723 for event in trigger_on_finish_deco .triggers :
726724 # Actual filters are deduced here since we don't have access to
@@ -759,7 +757,7 @@ def _process_triggers(self):
759757 "flow" : event ["flow" ],
760758 }
761759 )
762- options = flow_decos .get ("trigger_on_finish" )[0 ].options
760+ options = self . flow . _flow_decorators .get ("trigger_on_finish" )[0 ].options
763761
764762 for event in triggers :
765763 # Assign a sanitized name since we need this at many places to please
@@ -2837,9 +2835,7 @@ def _lifecycle_hooks(self):
28372835 hooks .append (self ._pager_duty_change_template ())
28382836 hooks .append (self ._incident_io_change_template ())
28392837
2840- exit_hook_decos = self .flow ._flow_state [FlowStateItems .FLOW_DECORATORS ].get (
2841- "exit_hook" , []
2842- )
2838+ exit_hook_decos = self .flow ._flow_decorators .get ("exit_hook" , [])
28432839
28442840 for deco in exit_hook_decos :
28452841 hooks .extend (self ._lifecycle_hook_from_deco (deco ))
0 commit comments