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 (
@@ -434,7 +433,7 @@ def _base_kubernetes_annotations(self):
434433 return annotations
435434
436435 def _get_schedule (self ):
437- schedule = self .flow ._flow_state [ FlowStateItems . FLOW_DECORATORS ] .get ("schedule" )
436+ schedule = self .flow ._flow_decorators .get ("schedule" )
438437 if schedule :
439438 # Remove the field "Year" if it exists
440439 schedule = schedule [0 ]
@@ -460,15 +459,14 @@ def schedule(self):
460459
461460 def trigger_explanation (self ):
462461 # Trigger explanation for cron workflows
463- flow_decos = self .flow ._flow_state [FlowStateItems .FLOW_DECORATORS ]
464- if flow_decos .get ("schedule" ):
462+ if self .flow ._flow_decorators .get ("schedule" ):
465463 return (
466464 "This workflow triggers automatically via the CronWorkflow *%s*."
467465 % self .name
468466 )
469467
470468 # Trigger explanation for @trigger
471- elif flow_decos .get ("trigger" ):
469+ elif self . flow . _flow_decorators .get ("trigger" ):
472470 return (
473471 "This workflow triggers automatically when the upstream %s "
474472 "is/are published."
@@ -478,7 +476,7 @@ def trigger_explanation(self):
478476 )
479477
480478 # Trigger explanation for @trigger_on_finish
481- elif flow_decos .get ("trigger_on_finish" ):
479+ elif self . flow . _flow_decorators .get ("trigger_on_finish" ):
482480 return (
483481 "This workflow triggers automatically when the upstream %s succeed(s)"
484482 % self .list_to_prose (
@@ -541,10 +539,7 @@ def get_execution(cls, name):
541539
542540 def _process_parameters (self ):
543541 parameters = {}
544- has_schedule = (
545- self .flow ._flow_state [FlowStateItems .FLOW_DECORATORS ].get ("schedule" )
546- is not None
547- )
542+ has_schedule = self .flow ._flow_decorators .get ("schedule" ) is not None
548543 seen = set ()
549544 for var , param in self .flow ._get_parameters ():
550545 # Throw an exception if the parameter is specified twice.
@@ -630,9 +625,10 @@ def _process_triggers(self):
630625 # Impute triggers for Argo Workflow Template specified through @trigger and
631626 # @trigger_on_finish decorators
632627
633- flow_decos = self .flow ._flow_state [FlowStateItems .FLOW_DECORATORS ]
634628 # Disallow usage of @trigger and @trigger_on_finish together for now.
635- if flow_decos .get ("trigger" ) and flow_decos .get ("trigger_on_finish" ):
629+ if self .flow ._flow_decorators .get ("trigger" ) and self .flow ._flow_decorators .get (
630+ "trigger_on_finish"
631+ ):
636632 raise ArgoWorkflowsException (
637633 "Argo Workflows doesn't support both *@trigger* and "
638634 "*@trigger_on_finish* decorators concurrently yet. Use one or the "
@@ -642,7 +638,7 @@ def _process_triggers(self):
642638 options = None
643639
644640 # @trigger decorator
645- if flow_decos .get ("trigger" ):
641+ if self . flow . _flow_decorators .get ("trigger" ):
646642 # Parameters are not duplicated, and exist in the flow. Additionally,
647643 # convert them to lower case since Metaflow parameters are case
648644 # insensitive.
@@ -655,7 +651,7 @@ def _process_triggers(self):
655651 if not param .IS_CONFIG_PARAMETER
656652 ]
657653 )
658- trigger_deco = flow_decos .get ("trigger" )[0 ]
654+ trigger_deco = self . flow . _flow_decorators .get ("trigger" )[0 ]
659655 trigger_deco .format_deploytime_value ()
660656 for event in trigger_deco .triggers :
661657 parameters = {}
@@ -687,17 +683,19 @@ def _process_triggers(self):
687683 parameters [key .lower ()] = value
688684 event ["parameters" ] = parameters
689685 event ["type" ] = "event"
690- triggers .extend (flow_decos .get ("trigger" )[0 ].triggers )
686+ triggers .extend (self . flow . _flow_decorators .get ("trigger" )[0 ].triggers )
691687
692688 # Set automatic parameter mapping iff only a single event dependency is
693689 # specified with no explicit parameter mapping.
694690 if len (triggers ) == 1 and not triggers [0 ].get ("parameters" ):
695691 triggers [0 ]["parameters" ] = dict (zip (params , params ))
696- options = flow_decos .get ("trigger" )[0 ].options
692+ options = self . flow . _flow_decorators .get ("trigger" )[0 ].options
697693
698694 # @trigger_on_finish decorator
699- if flow_decos .get ("trigger_on_finish" ):
700- trigger_on_finish_deco = flow_decos .get ("trigger_on_finish" )[0 ]
695+ if self .flow ._flow_decorators .get ("trigger_on_finish" ):
696+ trigger_on_finish_deco = self .flow ._flow_decorators .get (
697+ "trigger_on_finish"
698+ )[0 ]
701699 trigger_on_finish_deco .format_deploytime_value ()
702700 for event in trigger_on_finish_deco .triggers :
703701 # Actual filters are deduced here since we don't have access to
@@ -736,7 +734,7 @@ def _process_triggers(self):
736734 "flow" : event ["flow" ],
737735 }
738736 )
739- options = flow_decos .get ("trigger_on_finish" )[0 ].options
737+ options = self . flow . _flow_decorators .get ("trigger_on_finish" )[0 ].options
740738
741739 for event in triggers :
742740 # Assign a sanitized name since we need this at many places to please
@@ -2805,9 +2803,7 @@ def _lifecycle_hooks(self):
28052803 hooks .append (self ._pager_duty_change_template ())
28062804 hooks .append (self ._incident_io_change_template ())
28072805
2808- exit_hook_decos = self .flow ._flow_state [FlowStateItems .FLOW_DECORATORS ].get (
2809- "exit_hook" , []
2810- )
2806+ exit_hook_decos = self .flow ._flow_decorators .get ("exit_hook" , [])
28112807
28122808 for deco in exit_hook_decos :
28132809 hooks .extend (self ._lifecycle_hook_from_deco (deco ))
0 commit comments