Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/example_frbc_rm.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
)
from s2python.s2_connection import S2Connection, AssetDetails
from s2python.s2_control_type import FRBCControlType, NoControlControlType
from s2python.validate_values_mixin import S2Message
from s2python.message import S2Message

logger = logging.getLogger("s2python")
logger.addHandler(logging.StreamHandler(sys.stdout))
Expand Down
12 changes: 12 additions & 0 deletions src/s2python/ddbc/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from s2python.ddbc.ddbc_actuator_description import DDBCActuatorDescription
from s2python.ddbc.ddbc_operation_mode import DDBCOperationMode
from s2python.ddbc.ddbc_instruction import DDBCInstruction
from s2python.ddbc.ddbc_actuator_status import DDBCActuatorStatus
from s2python.ddbc.ddbc_average_demand_rate_forecast_element import (
DDBCAverageDemandRateForecastElement,
)
from s2python.ddbc.ddbc_average_demand_rate_forecast import (
DDBCAverageDemandRateForecast,
)
from s2python.ddbc.ddbc_system_description import DDBCSystemDescription
from s2python.ddbc.ddbc_timer_status import DDBCTimerStatus
30 changes: 30 additions & 0 deletions src/s2python/ddbc/ddbc_actuator_description.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from typing import List
import uuid

from s2python.generated.gen_s2 import (
DDBCActuatorDescription as GenDDBCActuatorDescription,
)
from s2python.generated.gen_s2 import Commodity
from s2python.ddbc.ddbc_operation_mode import DDBCOperationMode

from s2python.common.timer import Timer

from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class DDBCActuatorDescription(GenDDBCActuatorDescription, S2MessageComponent["DDBCActuatorDescription"]):
model_config = GenDDBCActuatorDescription.model_config
model_config["validate_assignment"] = True

id: uuid.UUID = GenDDBCActuatorDescription.model_fields["id"] # type: ignore[assignment]
supported_commodites: List[Commodity] = GenDDBCActuatorDescription.model_fields[
"supported_commodites"
] # type: ignore[assignment]
timers: List[Timer] = GenDDBCActuatorDescription.model_fields["timers"] # type: ignore[assignment]
operation_modes: List[DDBCOperationMode] = GenDDBCActuatorDescription.model_fields[
"operation_modes"
] # type: ignore[assignment]
22 changes: 22 additions & 0 deletions src/s2python/ddbc/ddbc_actuator_status.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import uuid

from s2python.generated.gen_s2 import DDBCActuatorStatus as GenDDBCActuatorStatus
from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class DDBCActuatorStatus(GenDDBCActuatorStatus, S2MessageComponent["DDBCActuatorStatus"]):
model_config = GenDDBCActuatorStatus.model_config
model_config["validate_assignment"] = True

message_id: uuid.UUID = GenDDBCActuatorStatus.model_fields["message_id"] # type: ignore[assignment]
actuator_id: uuid.UUID = GenDDBCActuatorStatus.model_fields["actuator_id"] # type: ignore[assignment]
active_operation_mode_id: uuid.UUID = GenDDBCActuatorStatus.model_fields[
"active_operation_mode_id"
] # type: ignore[assignment]
operation_mode_factor: float = GenDDBCActuatorStatus.model_fields[
"operation_mode_factor"
] # type: ignore[assignment]
30 changes: 30 additions & 0 deletions src/s2python/ddbc/ddbc_average_demand_rate_forecast.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from typing import List
import uuid

from s2python.generated.gen_s2 import (
DDBCAverageDemandRateForecast as GenDDBCAverageDemandRateForecast,
)
from s2python.ddbc.ddbc_average_demand_rate_forecast_element import (
DDBCAverageDemandRateForecastElement,
)

from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class DDBCAverageDemandRateForecast(
GenDDBCAverageDemandRateForecast,
S2MessageComponent["DDBCAverageDemandRateForecast"],
):
model_config = GenDDBCAverageDemandRateForecast.model_config
model_config["validate_assignment"] = True

message_id: uuid.UUID = GenDDBCAverageDemandRateForecast.model_fields["message_id"] # type: ignore[assignment]
elements: List[
DDBCAverageDemandRateForecastElement
] = GenDDBCAverageDemandRateForecast.model_fields[
"elements"
] # type: ignore[assignment]
21 changes: 21 additions & 0 deletions src/s2python/ddbc/ddbc_average_demand_rate_forecast_element.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from s2python.generated.gen_s2 import Duration

from s2python.generated.gen_s2 import (
DDBCAverageDemandRateForecastElement as GenDDBCAverageDemandRateForecastElement,
)

from s2python.validate_values_mixin import catch_and_convert_exceptions, S2MessageComponent


@catch_and_convert_exceptions
class DDBCAverageDemandRateForecastElement(
GenDDBCAverageDemandRateForecastElement,
S2MessageComponent["DDBCAverageDemandRateForecastElement"],
):
model_config = GenDDBCAverageDemandRateForecastElement.model_config
model_config["validate_assignment"] = True

duration: Duration = GenDDBCAverageDemandRateForecastElement.model_fields["duration"] # type: ignore[assignment]
demand_rate_expected: float = GenDDBCAverageDemandRateForecastElement.model_fields[
"demand_rate_expected"
] # type: ignore[assignment]
19 changes: 19 additions & 0 deletions src/s2python/ddbc/ddbc_instruction.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import uuid

from s2python.generated.gen_s2 import DDBCInstruction as GenDDBCInstruction
from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class DDBCInstruction(GenDDBCInstruction, S2MessageComponent["DDBCInstruction"]):
model_config = GenDDBCInstruction.model_config
model_config["validate_assignment"] = True

message_id: uuid.UUID = GenDDBCInstruction.model_fields["message_id"] # type: ignore[assignment]
actuator_id: uuid.UUID = GenDDBCInstruction.model_fields["actuator_id"] # type: ignore[assignment]
operation_mode_id: uuid.UUID = GenDDBCInstruction.model_fields["operation_mode_id"] # type: ignore[assignment]
operation_mode_factor: float = GenDDBCInstruction.model_fields["operation_mode_factor"] # type: ignore[assignment]
abnormal_condition: bool = GenDDBCInstruction.model_fields["abnormal_condition"] # type: ignore[assignment]
26 changes: 26 additions & 0 deletions src/s2python/ddbc/ddbc_operation_mode.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from typing import List
import uuid

from s2python.generated.gen_s2 import DDBCOperationMode as GenDDBCOperationMode

from s2python.common.power_range import PowerRange
from s2python.common.number_range import NumberRange

from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class DDBCOperationMode(GenDDBCOperationMode, S2MessageComponent["DDBCOperationMode"]):
model_config = GenDDBCOperationMode.model_config
model_config["validate_assignment"] = True

# ? Id vs id
id: uuid.UUID = GenDDBCOperationMode.model_fields["Id"] # type: ignore[assignment]
power_ranges: List[PowerRange] = GenDDBCOperationMode.model_fields["power_ranges"] # type: ignore[assignment]
supply_ranges: List[NumberRange] = GenDDBCOperationMode.model_fields["supply_ranges"] # type: ignore[assignment]
abnormal_condition_only: bool = GenDDBCOperationMode.model_fields[
"abnormal_condition_only"
] # type: ignore[assignment]
29 changes: 29 additions & 0 deletions src/s2python/ddbc/ddbc_system_description.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from typing import List
import uuid

from s2python.generated.gen_s2 import (
DDBCSystemDescription as GenDDBCSystemDescription,
)
from s2python.common.number_range import NumberRange
from s2python.ddbc.ddbc_actuator_description import DDBCActuatorDescription
from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class DDBCSystemDescription(GenDDBCSystemDescription, S2MessageComponent["DDBCSystemDescription"]):
model_config = GenDDBCSystemDescription.model_config
model_config["validate_assignment"] = True

message_id: uuid.UUID = GenDDBCSystemDescription.model_fields["message_id"] # type: ignore[assignment]
actuators: List[DDBCActuatorDescription] = GenDDBCSystemDescription.model_fields[
"actuators"
] # type: ignore[assignment]
present_demand_rate: NumberRange = GenDDBCSystemDescription.model_fields[
"present_demand_rate"
] # type: ignore[assignment]
provides_average_demand_rate_forecast: bool = GenDDBCSystemDescription.model_fields[
"provides_average_demand_rate_forecast"
] # type: ignore[assignment]
18 changes: 18 additions & 0 deletions src/s2python/ddbc/ddbc_timer_status.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import uuid

from s2python.generated.gen_s2 import DDBCTimerStatus as GenDDBCTimerStatus

from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class DDBCTimerStatus(GenDDBCTimerStatus, S2MessageComponent["DDBCTimerStatus"]):
model_config = GenDDBCTimerStatus.model_config
model_config["validate_assignment"] = True

message_id: uuid.UUID = GenDDBCTimerStatus.model_fields["message_id"] # type: ignore[assignment]
timer_id: uuid.UUID = GenDDBCTimerStatus.model_fields["timer_id"] # type: ignore[assignment]
actuator_id: uuid.UUID = GenDDBCTimerStatus.model_fields["actuator_id"] # type: ignore[assignment]
10 changes: 10 additions & 0 deletions src/s2python/pebc/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from s2python.pebc.pebc_allowed_limit_range import PEBCAllowedLimitRange
from s2python.pebc.pebc_power_constraints import PEBCPowerConstraints
from s2python.pebc.pebc_power_envelope import PEBCPowerEnvelope
from s2python.pebc.pebc_power_envelope_element import PEBCPowerEnvelopeElement
from s2python.pebc.pebc_energy_constraint import PEBCEnergyConstraint
from s2python.generated.gen_s2 import (
PEBCPowerEnvelopeConsequenceType,
PEBCPowerEnvelopeLimitType,
)
from s2python.pebc.pebc_instruction import PEBCInstruction
26 changes: 26 additions & 0 deletions src/s2python/pebc/pebc_allowed_limit_range.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from s2python.generated.gen_s2 import (
PEBCAllowedLimitRange as GenPEBCAllowedLimitRange,
PEBCPowerEnvelopeLimitType as GenPEBCPowerEnvelopeLimitType,
)
from s2python.common import CommodityQuantity, NumberRange
from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class PEBCAllowedLimitRange(GenPEBCAllowedLimitRange, S2MessageComponent["PEBCAllowedLimitRange"]):
model_config = GenPEBCAllowedLimitRange.model_config
model_config["validate_assignment"] = True

commodity_quantity: CommodityQuantity = GenPEBCAllowedLimitRange.model_fields[
"commodity_quantity"
] # type: ignore[assignment]
limit_type: GenPEBCPowerEnvelopeLimitType = GenPEBCAllowedLimitRange.model_fields[
"limit_type"
] # type: ignore[assignment]
range_boundary: NumberRange = GenPEBCAllowedLimitRange.model_fields["range_boundary"] # type: ignore[assignment]
abnormal_condition_only: bool = [
GenPEBCAllowedLimitRange.model_fields["abnormal_condition_only"] # type: ignore[assignment]
]
25 changes: 25 additions & 0 deletions src/s2python/pebc/pebc_energy_constraint.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import uuid

from s2python.generated.gen_s2 import (
PEBCEnergyConstraint as GenPEBCEnergyConstraint,
)
from s2python.common import CommodityQuantity
from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class PEBCEnergyConstraint(GenPEBCEnergyConstraint, S2MessageComponent["PEBCEnergyConstraint"]):
model_config = GenPEBCEnergyConstraint.model_config
model_config["validate_assignment"] = True

message_id: uuid.UUID = GenPEBCEnergyConstraint.model_fields["message_id"] # type: ignore[assignment]
id: uuid.UUID = GenPEBCEnergyConstraint.model_fields["id"] # type: ignore[assignment]

upper_average_power: float = GenPEBCEnergyConstraint.model_fields["upper_average_power"] # type: ignore[assignment]
lower_average_power: float = GenPEBCEnergyConstraint.model_fields["lower_average_power"] # type: ignore[assignment]
commodity_quantity: CommodityQuantity = [
GenPEBCEnergyConstraint.model_fields["commodity_quantity"] # type: ignore[assignment]
]
27 changes: 27 additions & 0 deletions src/s2python/pebc/pebc_instruction.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import uuid
from typing import List

from s2python.generated.gen_s2 import (
PEBCInstruction as GenPEBCInstruction,
)
from s2python.pebc.pebc_power_envelope import PEBCPowerEnvelope
from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class PEBCInstruction(GenPEBCInstruction, S2MessageComponent["PEBCInstruction"]):
model_config = GenPEBCInstruction.model_config
model_config["validate_assignment"] = True

message_id: uuid.UUID = GenPEBCInstruction.model_fields["message_id"] # type: ignore[assignment]
id: uuid.UUID = GenPEBCInstruction.model_fields["id"] # type: ignore[assignment]
power_constraints_id: uuid.UUID = [
GenPEBCInstruction.model_fields["power_constraints_id"] # type: ignore[assignment]
]
power_envelopes: List[PEBCPowerEnvelope] = [
GenPEBCInstruction.model_fields["power_envelopes"] # type: ignore[assignment]
]
abnormal_conditions: bool = GenPEBCInstruction.model_fields["abnormal_conditions"] # type: ignore[assignment]
27 changes: 27 additions & 0 deletions src/s2python/pebc/pebc_power_constraints.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import uuid
from typing import List

from s2python.generated.gen_s2 import (
PEBCPowerConstraints as GenPEBCPowerConstraints,
PEBCPowerEnvelopeConsequenceType as GenPEBCPowerEnvelopeConsequenceType,
)
from s2python.pebc.pebc_allowed_limit_range import PEBCAllowedLimitRange
from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class PEBCPowerConstraints(GenPEBCPowerConstraints, S2MessageComponent["PEBCPowerConstraints"]):
model_config = GenPEBCPowerConstraints.model_config
model_config["validate_assignment"] = True

message_id: uuid.UUID = GenPEBCPowerConstraints.model_fields["message_id"] # type: ignore[assignment]
id: uuid.UUID = GenPEBCPowerConstraints.model_fields["id"] # type: ignore[assignment]
consequence_type: GenPEBCPowerEnvelopeConsequenceType = GenPEBCPowerConstraints.model_fields[
"consequence_type"
] # type: ignore[assignment]
allowed_limit_ranges: List[PEBCAllowedLimitRange] = GenPEBCPowerConstraints.model_fields[
"allowed_limit_ranges"
] # type: ignore[assignment]
23 changes: 23 additions & 0 deletions src/s2python/pebc/pebc_power_envelope.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from typing import List
from s2python.generated.gen_s2 import (
PEBCPowerEnvelope as GenPEBCPowerEnvelope,
)
from s2python.pebc.pebc_power_envelope_element import PEBCPowerEnvelopeElement
from s2python.common import CommodityQuantity
from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class PEBCPowerEnvelope(GenPEBCPowerEnvelope, S2MessageComponent["PEBCPowerEnvelope"]):
model_config = GenPEBCPowerEnvelope.model_config
model_config["validate_assignment"] = True

commodity_quantity: CommodityQuantity = GenPEBCPowerEnvelope.model_fields[
"commodity_quantity"
] # type: ignore[assignment]
power_envelope_elements: List[PEBCPowerEnvelopeElement] = GenPEBCPowerEnvelope.model_fields[
"power_envelope_elements"
] # type: ignore[assignment]
16 changes: 16 additions & 0 deletions src/s2python/pebc/pebc_power_envelope_element.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from s2python.generated.gen_s2 import (
PEBCPowerEnvelopeElement as GenPEBCPowerEnvelopeElement,
)
from s2python.validate_values_mixin import (
catch_and_convert_exceptions,
S2MessageComponent,
)


@catch_and_convert_exceptions
class PEBCPowerEnvelopeElement(GenPEBCPowerEnvelopeElement, S2MessageComponent["PEBCPowerEnvelopeElement"]):
model_config = GenPEBCPowerEnvelopeElement.model_config
model_config["validate_assignment"] = True

lower_limit: float = GenPEBCPowerEnvelopeElement.model_fields["lower_limit"] # type: ignore[assignment]
upper_limit: float = GenPEBCPowerEnvelopeElement.model_fields["upper_limit"] # type: ignore[assignment]
Loading
Loading