:py:mod:`ethos_penalps.process_state_switch_selector`
=====================================================

.. py:module:: ethos_penalps.process_state_switch_selector


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   ethos_penalps.process_state_switch_selector.ProcessStateSwitchSelector
   ethos_penalps.process_state_switch_selector.SingleChoiceSelector
   ethos_penalps.process_state_switch_selector.MultiTargetSelector
   ethos_penalps.process_state_switch_selector.BatchStateSwitchSelector
   ethos_penalps.process_state_switch_selector.ProvideOutputFromStorageSwitchSelector
   ethos_penalps.process_state_switch_selector.ProcessStateSwitchSelectorHandler




Attributes
~~~~~~~~~~

.. autoapisummary::

   ethos_penalps.process_state_switch_selector.logger


.. py:data:: logger

   

.. py:class:: ProcessStateSwitchSelector(process_step_data: ethos_penalps.process_step_data.ProcessStepData)


   Bases: :py:obj:`abc.ABC`

   Helper class that provides a standard way to create an ABC using
   inheritance.

   .. py:method:: select_state_switch() -> ethos_penalps.process_state_switch.ProcessStateSwitch
      :abstractmethod:



.. py:class:: SingleChoiceSelector(process_step_data: ethos_penalps.process_step_data.ProcessStepData, process_state_switch: ethos_penalps.process_state_switch.ProcessStateSwitch)


   Bases: :py:obj:`ProcessStateSwitchSelector`

   Helper class that provides a standard way to create an ABC using
   inheritance.

   .. py:method:: select_state_switch() -> ethos_penalps.process_state_switch.ProcessStateSwitch



.. py:class:: MultiTargetSelector


   Bases: :py:obj:`abc.ABC`

   Helper class that provides a standard way to create an ABC using
   inheritance.


.. py:class:: BatchStateSwitchSelector(process_step_data: ethos_penalps.process_step_data.ProcessStepData, further_input_is_required_switch: ethos_penalps.process_state_switch.ProcessStateSwitch, input_is_satisfied_switch: ethos_penalps.process_state_switch.ProcessStateSwitch)


   Bases: :py:obj:`ProcessStateSwitchSelector`, :py:obj:`MultiTargetSelector`

   Helper class that provides a standard way to create an ABC using
   inheritance.

   .. py:method:: select_state_switch() -> ethos_penalps.process_state_switch.ProcessStateSwitch



.. py:class:: ProvideOutputFromStorageSwitchSelector(process_step_data: ethos_penalps.process_step_data.ProcessStepData, output_is_supplied_from_storage_switch: ethos_penalps.process_state_switch.ProcessStateSwitch, input_stream_is_required_switch: ethos_penalps.process_state_switch.ProcessStateSwitch)


   Bases: :py:obj:`ProcessStateSwitchSelector`, :py:obj:`MultiTargetSelector`

   Helper class that provides a standard way to create an ABC using
   inheritance.

   .. py:method:: select_state_switch() -> ethos_penalps.process_state_switch.ProcessStateSwitch



.. py:class:: ProcessStateSwitchSelectorHandler(process_step_data: ethos_penalps.process_step_data.ProcessStepData)


   The process state switch selector adds an object which decides which process state switch
   has to be applied for the next process state switch

   .. py:method:: get_switch_selector_to_previous_state(current_process_state_name: str) -> ProcessStateSwitchSelector

      Returns a process state switch selector with all process state switches
      that have the current state as a target. Only a single ProcessStateSwitch
      is allowed per state.

      :param current_process_state_name: _description_
      :type current_process_state_name: str
      :return: _description_
      :rtype: ProcessStateSwitchSelector


   .. py:method:: add_process_state_switch_selector(process_state_switch_selector: ProcessStateSwitchSelector)

      Adds a process state switch selector to the process_state_switch_selector_dict.
      Only a single ProcessStateSwitchSelector is allowed per state. It has to handle
      all possible path decisions to the current state.

      :param process_state_switch_selector: _description_
      :type process_state_switch_selector: ProcessStateSwitchSelector
      :raises Exception: _description_


   .. py:method:: create_single_choice_selector(process_state_switch: ethos_penalps.process_state_switch.ProcessStateSwitch) -> SingleChoiceSelector


   .. py:method:: create_batch_state_switch_selector(further_input_is_required_switch: ethos_penalps.process_state_switch.ProcessStateSwitch, input_is_satisfied_switch: ethos_penalps.process_state_switch.ProcessStateSwitch) -> BatchStateSwitchSelector


   .. py:method:: create_storage_provision_state_switch(output_is_supplied_from_storage_switch: ethos_penalps.process_state_switch.ProcessStateSwitch, input_stream_is_required_switch: ethos_penalps.process_state_switch.ProcessStateSwitch)



