:py:mod:`ethos_penalps.process_nodes.process_step`
==================================================

.. py:module:: ethos_penalps.process_nodes.process_step


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

Classes
~~~~~~~

.. autoapisummary::

   ethos_penalps.process_nodes.process_step.ProcessStep




Attributes
~~~~~~~~~~

.. autoapisummary::

   ethos_penalps.process_nodes.process_step.logger


.. py:data:: logger

   

.. py:class:: ProcessStep(name: str, stream_handler: ethos_penalps.stream_handler.StreamHandler, production_plan: ethos_penalps.production_plan.ProductionPlan, load_profile_handler: ethos_penalps.load_profile_calculator.LoadProfileHandler, enterprise_time_data: ethos_penalps.time_data.TimeData)


   Bases: :py:obj:`ethos_penalps.process_nodes.process_node.ProcessNode`

   Is a class which represents an individual process step of an industry process.
   Its two main components are the process_state_handler and the production_branch_dict.
   The production branch dict contains production branches which are used to check the coherence of the production activity
   of this process step and the upstream and downstream nodes. The process states handler contains all features which determine
   the temporal and logical behavior of a process step during production and idle time.

   .. py:method:: __str__() -> str


   .. py:method:: process_input_order(input_node_operation: ethos_penalps.node_operations.NodeOperation) -> ethos_penalps.node_operations.NodeOperation

      Conducts the incoming node operations. Currently DownstreamValidationOperation and UpstreamNewProductionOrder are supported

      1. For DownstreamValidationOperation it is checked if the production branch of the current node is fulfilled.
          - branch_is_fulfilled==True:
              1. The current branch is stored to the production plan
              2. A new DownstreamValidationOperation is created for the downstream node
          - branch_is_fulfilled==False:
              1. A new UpstreamNewProductionOrders is created to produce the missing product
      2. From a new UpstreamNewProductionOrder
          1. A new Production branch is created
          2. A new UpstreamNewProductionOrder is created and returned


      :return: _description_
      :rtype: list[ProductionOrder]


   .. py:method:: create_down_stream_validation_operation(current_production_branch: ethos_penalps.process_node_communicator.ProcessNodeCommunicator, downstream_validation_operation: ethos_penalps.node_operations.DownstreamValidationOrder) -> ethos_penalps.node_operations.DownstreamValidationOrder


   .. py:method:: get_last_fulfilled_production_branch() -> ethos_penalps.process_node_communicator.ProcessNodeCommunicator | ethos_penalps.process_node_communicator.EmptyProductionBranch


   .. py:method:: get_downstream_node_name() -> str


   .. py:method:: get_upstream_node_name() -> str


   .. py:method:: create_main_mass_balance(commodity: ethos_penalps.data_classes.Commodity, input_to_output_conversion_factor: float, main_input_stream: ethos_penalps.stream.ContinuousStream | ethos_penalps.stream.BatchStream, main_output_stream: ethos_penalps.stream.ContinuousStream | ethos_penalps.stream.BatchStream) -> ethos_penalps.mass_balance.MassBalance

      Mass balance is an output mass balance


   .. py:method:: get_input_stream_name() -> str


   .. py:method:: get_output_stream_name()



