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

.. py:module:: ethos_penalps.process_nodes.sink


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

Classes
~~~~~~~

.. autoapisummary::

   ethos_penalps.process_nodes.sink.Sink




Attributes
~~~~~~~~~~

.. autoapisummary::

   ethos_penalps.process_nodes.sink.logger


.. py:data:: logger

   

.. py:class:: Sink(name: str, commodity: ethos_penalps.data_classes.Commodity, stream_handler: ethos_penalps.stream_handler.StreamHandler, production_plan: ethos_penalps.production_plan.ProductionPlan, time_data: ethos_penalps.time_data.TimeData, order_collection: ethos_penalps.data_classes.OrderCollection | None = None)


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

   Is end point of the process node chain.

   :param ProcessNode: _description_
   :type ProcessNode: _type_

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


   .. py:method:: check_if_sink_has_orders()


   .. py:method:: plan_production() -> ethos_penalps.node_operations.UpstreamNewProductionOrder

      Creates the initial Upstream production order by.

      :return: _description_
      :rtype: _type_


   .. py:method:: convert_order_to_stream(production_order: ethos_penalps.node_operations.ProductionOrder) -> ethos_penalps.stream.ContinuousStreamState | ethos_penalps.stream.BatchStreamState


   .. py:method:: create_storage_entries(list_of_output_stream_states: list[ethos_penalps.stream.ContinuousStreamState | ethos_penalps.stream.BatchStreamState] | None = None)


   .. py:method:: process_input_order(input_node_operation: ethos_penalps.node_operations.DownstreamAdaptionOrder | ethos_penalps.node_operations.DownstreamValidationOrder) -> ethos_penalps.node_operations.UpstreamNewProductionOrder | ethos_penalps.node_operations.UpstreamAdaptionOrder | ethos_penalps.node_operations.TerminateProduction

      Decides if another upstream production operation is required of is the production is terminated

      :param node_operation: _description_
      :type node_operation: NodeOperation
      :return: _description_
      :rtype: UpstreamNewProductionOrder


   .. py:method:: update_production_order(validated_input_stream_state: ethos_penalps.stream.ContinuousStreamState | ethos_penalps.stream.BatchStreamState)


   .. py:method:: store_input_streams_to_production_plan()


   .. py:method:: create_upstream_adaption_operation(downstream_adaption_operation: ethos_penalps.node_operations.DownstreamAdaptionOrder) -> ethos_penalps.node_operations.UpstreamAdaptionOrder


   .. py:method:: create_upstream_new_production_operation(input_stream_state: ethos_penalps.stream.ContinuousStreamState | ethos_penalps.stream.BatchStreamState, production_order: ethos_penalps.node_operations.ProductionOrder) -> ethos_penalps.node_operations.UpstreamNewProductionOrder


   .. py:method:: create_branch_data()


   .. py:method:: create_new_production_branch_identifier() -> ethos_penalps.data_classes.OutputBranchIdentifier


   .. py:method:: create_new_temporal_branch_identifier() -> ethos_penalps.data_classes.TemporalBranchIdentifier


   .. py:method:: add_input_stream(input_stream: ethos_penalps.stream.ContinuousStream | ethos_penalps.stream.BatchStream, process_chain_identifier: ethos_penalps.data_classes.ProcessChainIdentifier)


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


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


   .. py:method:: create_load_profile_entry(stream_entry)


   .. py:method:: get_order_from_parent_source(order_collection_from_source: ethos_penalps.data_classes.OrderCollection)


   .. py:method:: initialize_sink()


   .. py:method:: prepare_sink_for_next_chain(process_chain_identifier: ethos_penalps.data_classes.ProcessChainIdentifier)


   .. py:method:: get_stream_to_process_chain(process_chain_identifier: ethos_penalps.data_classes.ProcessChainIdentifier) -> ethos_penalps.stream.BatchStream | ethos_penalps.stream.ContinuousStream


   .. py:method:: get_output_stream_name() -> None



