:py:mod:`ethos_penalps.data_classes`
====================================

.. py:module:: ethos_penalps.data_classes


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

Classes
~~~~~~~

.. autoapisummary::

   ethos_penalps.data_classes.Commodity
   ethos_penalps.data_classes.LoadType
   ethos_penalps.data_classes.ProcessStateData
   ethos_penalps.data_classes.EmptyMetaDataInformation
   ethos_penalps.data_classes.LoadProfileDataFrameMetaInformation
   ethos_penalps.data_classes.ProductEnergyData
   ethos_penalps.data_classes.StreamLoadEnergyData
   ethos_penalps.data_classes.LoadProfileEntry
   ethos_penalps.data_classes.LoopCounter
   ethos_penalps.data_classes.ProcessStepProductionPlanEntry
   ethos_penalps.data_classes.StorageProductionPlanEntry
   ethos_penalps.data_classes.StateConnector
   ethos_penalps.data_classes.ProcessStepDataFrameMetaInformation
   ethos_penalps.data_classes.StorageDataFrameMetaInformation
   ethos_penalps.data_classes.CurrentProcessNode
   ethos_penalps.data_classes.OutputBranchIdentifier
   ethos_penalps.data_classes.TemporalBranchIdentifier
   ethos_penalps.data_classes.StreamBranchIdentifier
   ethos_penalps.data_classes.OutputInputBranchConnector
   ethos_penalps.data_classes.StaticTimePeriod
   ethos_penalps.data_classes.ProcessChainIdentifier
   ethos_penalps.data_classes.ProductionOrder
   ethos_penalps.data_classes.OrderCollection
   ethos_penalps.data_classes.ProcessStateEnergyLoadData
   ethos_penalps.data_classes.ProcessStateEnergyLoadDataBasedOnStreamMass
   ethos_penalps.data_classes.ProductionOrderMetadata
   ethos_penalps.data_classes.ProcessStateEnergyData




.. py:class:: Commodity


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   This object describes a commodity used in an Enterprise. It can be transported in streams
   or converted into other commodities in process steps.

   .. py:attribute:: name
      :type: str

      

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

      Return str(self).


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

      Return repr(self).



.. py:class:: LoadType


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: name
      :type: str

      

   .. py:attribute:: uuid
      :type: str

      


.. py:class:: ProcessStateData


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: process_state_name
      :type: str

      

   .. py:attribute:: start_time
      :type: datetime.datetime

      

   .. py:attribute:: end_time
      :type: datetime.datetime

      


.. py:class:: EmptyMetaDataInformation


   .. py:attribute:: name
      :type: str

      

   .. py:attribute:: object_type
      :type: str

      


.. py:class:: LoadProfileDataFrameMetaInformation


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: name
      :type: str

      

   .. py:attribute:: object_type
      :type: str

      

   .. py:attribute:: data_frame
      :type: pandas.DataFrame

      

   .. py:attribute:: first_start_time
      :type: datetime.datetime

      

   .. py:attribute:: last_end_time
      :type: datetime.datetime

      

   .. py:attribute:: load_type
      :type: LoadType

      

   .. py:attribute:: power_unit
      :type: str

      

   .. py:attribute:: energy_unit
      :type: str

      

   .. py:attribute:: maximum_energy
      :type: float

      

   .. py:attribute:: maximum_average_power
      :type: float

      


.. py:class:: ProductEnergyData


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: product_commodity
      :type: Commodity

      

   .. py:attribute:: specific_energy_demand
      :type: float

      

   .. py:attribute:: load_type
      :type: LoadType

      

   .. py:attribute:: mass_unit
      :type: str

      

   .. py:attribute:: energy_unit
      :type: str

      


.. py:class:: StreamLoadEnergyData


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: stream_name
      :type: str

      

   .. py:attribute:: specific_energy_demand
      :type: float

      

   .. py:attribute:: load_type
      :type: LoadType

      

   .. py:attribute:: mass_unit
      :type: str

      

   .. py:attribute:: energy_unit
      :type: str

      


.. py:class:: LoadProfileEntry


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: load_type
      :type: LoadType

      

   .. py:attribute:: start_time
      :type: datetime.datetime

      

   .. py:attribute:: end_time
      :type: datetime.datetime

      

   .. py:attribute:: energy_quantity
      :type: float

      

   .. py:attribute:: energy_unit
      :type: str

      

   .. py:attribute:: average_power_consumption
      :type: float

      

   .. py:attribute:: power_unit
      :type: str

      


.. py:class:: LoopCounter


   .. py:attribute:: loop_number
      :type: float | str
      :value: 'Loop has not started'

      


.. py:class:: ProcessStepProductionPlanEntry


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: process_step_name
      :type: str

      

   .. py:attribute:: process_state_name
      :type: str

      

   .. py:attribute:: start_time
      :type: datetime.datetime

      

   .. py:attribute:: end_time
      :type: datetime.datetime

      

   .. py:attribute:: duration
      :type: str

      

   .. py:attribute:: process_state_type
      :type: str

      


.. py:class:: StorageProductionPlanEntry


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: process_step_name
      :type: str

      

   .. py:attribute:: start_time
      :type: datetime.datetime

      

   .. py:attribute:: end_time
      :type: datetime.datetime

      

   .. py:attribute:: duration
      :type: str

      

   .. py:attribute:: storage_level_at_start
      :type: float

      

   .. py:attribute:: storage_level_at_end
      :type: float

      

   .. py:attribute:: commodity
      :type: Commodity

      


.. py:class:: StateConnector


   .. py:attribute:: start_state_name
      :type: str

      

   .. py:attribute:: end_state_name
      :type: str

      


.. py:class:: ProcessStepDataFrameMetaInformation


   .. py:attribute:: data_frame
      :type: pandas.DataFrame

      

   .. py:attribute:: process_step_name
      :type: str

      

   .. py:attribute:: list_of_process_state_names
      :type: list[str]

      

   .. py:attribute:: first_start_time
      :type: datetime.datetime

      

   .. py:attribute:: last_end_time
      :type: datetime.datetime

      


.. py:class:: StorageDataFrameMetaInformation


   .. py:attribute:: data_frame
      :type: pandas.DataFrame

      

   .. py:attribute:: process_step_name
      :type: str

      

   .. py:attribute:: commodity
      :type: Commodity

      

   .. py:attribute:: first_start_time
      :type: datetime.datetime

      

   .. py:attribute:: last_end_time
      :type: datetime.datetime

      

   .. py:attribute:: mass_unit
      :type: str

      


.. py:class:: CurrentProcessNode


   .. py:attribute:: node_name
      :type: str
      :value: 'Node not set yet'

      


.. py:class:: OutputBranchIdentifier


   .. py:attribute:: branch_number
      :type: float

      

   .. py:attribute:: global_unique_identifier
      :type: Optional[str]

      


.. py:class:: TemporalBranchIdentifier


   .. py:attribute:: branch_number
      :type: float

      

   .. py:attribute:: global_unique_identifier
      :type: Optional[str]

      


.. py:class:: StreamBranchIdentifier


   .. py:attribute:: stream_name
      :type: str

      

   .. py:attribute:: global_unique_identifier
      :type: Optional[str]

      


.. py:class:: OutputInputBranchConnector


   .. py:attribute:: input_branch_identifier
      :type: TemporalBranchIdentifier

      

   .. py:attribute:: output_branch_identifier
      :type: OutputBranchIdentifier

      


.. py:class:: StaticTimePeriod


   .. py:attribute:: start_time
      :type: datetime.datetime

      

   .. py:attribute:: end_time
      :type: datetime.datetime

      

   .. py:attribute:: uuid
      :type: OutputBranchIdentifier

      

   .. py:method:: get_duration() -> datetime.timedelta



.. py:class:: ProcessChainIdentifier


   .. py:attribute:: chain_number
      :type: int

      

   .. py:attribute:: chain_name
      :type: str

      

   .. py:attribute:: unique_identifier
      :type: str

      


.. py:class:: ProductionOrder


   .. py:attribute:: production_target
      :type: float

      

   .. py:attribute:: production_deadline
      :type: datetime.datetime

      

   .. py:attribute:: order_number
      :type: float

      

   .. py:attribute:: commodity
      :type: Commodity

      

   .. py:attribute:: global_unique_identifier
      :type: str

      

   .. py:attribute:: produced_mass
      :type: float
      :value: 0

      


.. py:class:: OrderCollection(target_mass: float, commodity: Commodity, order_data_frame: pandas.DataFrame | None = None)


   .. py:method:: sort_orders_by_deadline(ascending: bool = True)


   .. py:method:: append_order_collection(order_collection: OrderCollection)



.. py:class:: ProcessStateEnergyLoadData


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: process_state_name
      :type: str

      

   .. py:attribute:: process_step_name
      :type: str

      

   .. py:attribute:: specific_energy_demand
      :type: float

      

   .. py:attribute:: load_type
      :type: LoadType

      

   .. py:attribute:: mass_unit
      :type: str

      

   .. py:attribute:: energy_unit
      :type: str

      


.. py:class:: ProcessStateEnergyLoadDataBasedOnStreamMass


   Bases: :py:obj:`ProcessStateEnergyLoadData`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: stream_name
      :type: str

      


.. py:class:: ProductionOrderMetadata


   Bases: :py:obj:`dataclasses_json.DataClassJsonMixin`

   DataClassJsonMixin is an ABC that functions as a Mixin.

   As with other ABCs, it should not be instantiated directly.

   .. py:attribute:: data_frame
      :type: pandas.DataFrame

      

   .. py:attribute:: list_of_aggregated_production_order
      :type: list[list[numbers.Number]]

      

   .. py:attribute:: list_of_unique_deadlines
      :type: list[datetime.datetime]

      

   .. py:attribute:: commodity
      :type: Commodity

      

   .. py:attribute:: total_order_mass
      :type: numbers.Number

      

   .. py:attribute:: earliest_deadline
      :type: datetime.datetime

      

   .. py:attribute:: latest_deadline
      :type: datetime.datetime

      


.. py:class:: ProcessStateEnergyData


   .. py:attribute:: process_step_name
      :type: str

      

   .. py:attribute:: process_state_name
      :type: str

      

   .. py:attribute:: dict_of_loads
      :type: dict[str, LoadType]

      

   .. py:attribute:: dict_of_load_energy_data
      :type: dict[str, ProcessStateEnergyLoadData]

      

   .. py:method:: add_process_state_energy_load_data(process_state_energy_load_data: ProcessStateEnergyLoadData)


   .. py:method:: get_dict_of_loads() -> dict[str, LoadType]



