Module ploigos_step_runner.config.step_config
Representation of an individual step's step configuration.
Classes
class StepConfig (parent_config, step_name)
-
Representation of an individual step's step configuration.
Parameters
parent_config
:Config
- Parent configuration containing this step configuration.
step_name
:str
- Name of the step.
Attributes
__parent_config
:Config
__step_name
:str
__sub_steps
:list
ofSubStepConfig
__sub_step_config_overrides
:dict
Expand source code
class StepConfig: """Representation of an individual step's step configuration. Parameters ---------- parent_config : Config Parent configuration containing this step configuration. step_name : str Name of the step. Attributes ---------- __parent_config : Config __step_name : str __sub_steps : list of SubStepConfig __sub_step_config_overrides : dict """ def __init__(self, parent_config, step_name): self.__parent_config = parent_config self.__step_name = step_name self.__sub_steps = [] self.__step_config_overrides = {} @property def parent_config(self): """ Returns ------- Config """ return self.__parent_config @property def step_name(self): """ Returns ------- str Name of this step. """ return self.__step_name @property def sub_steps(self): """ Returns ------- list of SubStepConfig Sub steps of this step. """ return self.__sub_steps def get_sub_step(self, sub_step_name): """Get sub step of this step with a given name if one exists. Parameters ---------- sub_step_name : str Name of the sub step of this step to get. Returns ------- SubStepConfig Sub step of this step with the given name or None if no sub step with given name exists as part of this step. """ for sub_step in self.sub_steps: if sub_step_name == sub_step.sub_step_name: return sub_step return None @property def step_config_overrides(self): """Gets a deep copy of the step configuration overrides. Returns ------- dict Deep copy of the step configuration overrides. """ return copy.deepcopy(self.__step_config_overrides) @step_config_overrides.setter def step_config_overrides(self, step_config_overrides): """Sets the step configuration overrides. Parameters ---------- step_config_overrides : dict New step configuration overrides. """ self.__step_config_overrides = step_config_overrides if step_config_overrides else {} def add_or_update_sub_step_config( self, sub_step_name, sub_step_implementer_name, sub_step_config_dict=None, sub_step_env_config=None, sub_step_contine_sub_steps_on_failure=False ): # pylint: disable=too-many-arguments """Add a new or update an existing sub step configuration for this step. Parameters ---------- sub_step_name : str Name of the sub step to add or update. sub_step_implementer_name : str Name of the sub step implementer for the sub step being added or updated. If updating this can not be different then existing sub step with the same name. sub_step_config_dict : dict, optional Sub step configuration to add or update for named sub step. If updating this can not have any duplicative leaf keys to the existing sub step configuration. sub_step_env_config : dict, optional Sub step environment configuration to add or update for named sub step. If updating this can not have any duplicative leaf keys to the existing sub step environment configuration. sub_step_contine_sub_steps_on_failure : bool True to continue executing other sub steps in current step if this sub step fails. False to fail all step execution if this sub step fails. Raises ------ AssertionError If attempt to update an existing sub step and new and existing sub step implementers do not match. ValueError If new sub step configuration has duplicative leaf keys to existing sub step configuration. If new sub step environment configuration has duplicative leaf keys to existing sub step environment configuration. """ existing_sub_step_config = None for sub_step_config in self.sub_steps: if sub_step_config.sub_step_name == sub_step_name: existing_sub_step_config = sub_step_config break if existing_sub_step_config is None: sub_step_config = SubStepConfig( parent_step_config=self, sub_step_name=sub_step_name, sub_step_implementer_name=sub_step_implementer_name, sub_step_config_dict=sub_step_config_dict, sub_step_env_config=sub_step_env_config, sub_step_contine_sub_steps_on_failure=sub_step_contine_sub_steps_on_failure ) self.sub_steps.append(sub_step_config) else: assert sub_step_implementer_name == existing_sub_step_config.sub_step_implementer_name,\ f"Step ({self.step_name}) failed to update sub step ({sub_step_name})" + \ " with new config due to new sub step implementer" + \ f" ({sub_step_implementer_name}) not matching existing sub step implementer" + \ f" ({existing_sub_step_config.sub_step_implementer_name})." assert sub_step_contine_sub_steps_on_failure == \ existing_sub_step_config.sub_step_contine_sub_steps_on_failure, \ f"Step ({self.step_name}) failed to update sub step ({sub_step_name})" + \ " with new config due to new continue sub steps on failure" + \ f" ({sub_step_contine_sub_steps_on_failure}) not matching existing" + \ " continue sub steps on failure " + \ f" ({existing_sub_step_config.sub_step_implementer_name})." existing_sub_step_config.merge_sub_step_config(sub_step_config_dict) existing_sub_step_config.merge_sub_step_env_config(sub_step_env_config)
Instance variables
prop parent_config
-
Returns
Config
Expand source code
@property def parent_config(self): """ Returns ------- Config """ return self.__parent_config
prop step_config_overrides
-
Gets a deep copy of the step configuration overrides.
Returns
dict
- Deep copy of the step configuration overrides.
Expand source code
@property def step_config_overrides(self): """Gets a deep copy of the step configuration overrides. Returns ------- dict Deep copy of the step configuration overrides. """ return copy.deepcopy(self.__step_config_overrides)
prop step_name
-
Returns
str
- Name of this step.
Expand source code
@property def step_name(self): """ Returns ------- str Name of this step. """ return self.__step_name
prop sub_steps
-
Returns
list
ofSubStepConfig
- Sub steps of this step.
Expand source code
@property def sub_steps(self): """ Returns ------- list of SubStepConfig Sub steps of this step. """ return self.__sub_steps
Methods
def add_or_update_sub_step_config(self, sub_step_name, sub_step_implementer_name, sub_step_config_dict=None, sub_step_env_config=None, sub_step_contine_sub_steps_on_failure=False)
-
Add a new or update an existing sub step configuration for this step.
Parameters
sub_step_name
:str
- Name of the sub step to add or update.
sub_step_implementer_name
:str
- Name of the sub step implementer for the sub step being added or updated. If updating this can not be different then existing sub step with the same name.
sub_step_config_dict
:dict
, optional- Sub step configuration to add or update for named sub step. If updating this can not have any duplicative leaf keys to the existing sub step configuration.
sub_step_env_config
:dict
, optional- Sub step environment configuration to add or update for named sub step. If updating this can not have any duplicative leaf keys to the existing sub step environment configuration.
sub_step_contine_sub_steps_on_failure
:bool
- True to continue executing other sub steps in current step if this sub step fails. False to fail all step execution if this sub step fails.
Raises
AssertionError
- If attempt to update an existing sub step and new and existing sub step implementers do not match.
ValueError
- If new sub step configuration has duplicative leaf keys to existing sub step configuration. If new sub step environment configuration has duplicative leaf keys to existing sub step environment configuration.
def get_sub_step(self, sub_step_name)
-
Get sub step of this step with a given name if one exists.
Parameters
sub_step_name
:str
- Name of the sub step of this step to get.
Returns
SubStepConfig
- Sub step of this step with the given name or None if no sub step with given name exists as part of this step.