Skip to content

Commit

Permalink
fix: allow pydantic to fall back to int/str if value is not in an Enum (
Browse files Browse the repository at this point in the history
  • Loading branch information
cryptk committed May 28, 2023
1 parent 7c11600 commit 9db06b4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 24 deletions.
20 changes: 10 additions & 10 deletions pyomnilogic_local/models/mspconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@ class MSPSystem(BaseModel):

class MSPSensor(OmniBase):
omni_type: OmniType = OmniType.SENSOR
type: SensorType = Field(alias="Type")
units: SensorUnits = Field(alias="Units")
type: SensorType | str = Field(alias="Type")
units: SensorUnits | str = Field(alias="Units")


class MSPFilter(OmniBase):
omni_type: OmniType = OmniType.FILTER
type: FilterType = Field(alias="Filter-Type")
type: FilterType | str = Field(alias="Filter-Type")
max_percent: int = Field(alias="Max-Pump-Speed")
min_percent: int = Field(alias="Min-Pump-Speed")
max_rpm: int = Field(alias="Max-Pump-RPM")
Expand All @@ -87,8 +87,8 @@ class MSPFilter(OmniBase):

class MSPPump(OmniBase):
omni_type: OmniType = OmniType.PUMP
type: PumpType = Field(alias="Type")
function: PumpFunction = Field(alias="Function")
type: PumpType | str = Field(alias="Type")
function: PumpFunction | str = Field(alias="Function")
max_percent: int = Field(alias="Max-Pump-Speed")
min_percent: int = Field(alias="Min-Pump-Speed")
max_rpm: int = Field(alias="Max-Pump-RPM")
Expand All @@ -102,14 +102,14 @@ class MSPPump(OmniBase):

class MSPRelay(OmniBase):
omni_type: OmniType = OmniType.RELAY
type: RelayType = Field(alias="Type")
function: RelayFunction = Field(alias="Function")
type: RelayType | str = Field(alias="Type")
function: RelayFunction | str = Field(alias="Function")


class MSPHeaterEquip(OmniBase):
omni_type: OmniType = OmniType.HEATER_EQUIP
type: Literal["PET_HEATER"] = Field(alias="Type")
heater_type: HeaterType = Field(alias="Heater-Type")
heater_type: HeaterType | str = Field(alias="Heater-Type")
enabled: Literal["yes", "no"] = Field(alias="Enabled")
min_filter_speed: int = Field(alias="Min-Speed-For-Operation")
sensor_id: int = Field(alias="Sensor-System-Id")
Expand Down Expand Up @@ -139,15 +139,15 @@ def __init__(self, **data: Any) -> None:

class MSPColorLogicLight(OmniBase):
omni_type: OmniType = OmniType.CL_LIGHT
type: ColorLogicLightType = Field(alias="Type")
type: ColorLogicLightType | str = Field(alias="Type")
v2_active: Literal["yes", "no"] = Field(alias="V2-Active")


class MSPBoW(OmniBase):
_sub_devices = {"filter", "relay", "heater", "sensor", "colorlogic_light"}

omni_type: OmniType = OmniType.BOW
type: BodyOfWaterType = Field(alias="Type")
type: BodyOfWaterType | str = Field(alias="Type")
filter: list[MSPFilter] | None = Field(alias="Filter")
relay: list[MSPRelay] | None = Field(alias="Relay")
heater: MSPVirtualHeater | None = Field(alias="Heater")
Expand Down
28 changes: 14 additions & 14 deletions pyomnilogic_local/models/telemetry.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class TelemetryBackyard(BaseModel):
system_id: int = Field(alias="@systemId")
status_version: int = Field(alias="@statusVersion")
air_temp: int = Field(alias="@airTemp")
state: BackyardState = Field(alias="@state")
state: BackyardState | int = Field(alias="@state")
config_checksum: int = Field(alias="@ConfigChksum")
msp_version: str = Field(alias="@mspVersion")

Expand All @@ -68,27 +68,27 @@ class TelemetryChlorinator(BaseModel):
sc_mode: int = Field(alias="@scMode")
operating_state: int = Field(alias="@operatingState")
timed_percent: int = Field(alias="@Timed-Percent")
operating_mode: ChlorinatorOperatingMode = Field(alias="@operatingMode")
operating_mode: ChlorinatorOperatingMode | int = Field(alias="@operatingMode")
enable: bool = Field(alias="@enable")


class TelemetryColorLogicLight(BaseModel):
omni_type: OmniType = OmniType.CL_LIGHT
system_id: int = Field(alias="@systemId")
state: ColorLogicPowerState = Field(alias="@lightState")
show: ColorLogicShow = Field(alias="@currentShow")
speed: ColorLogicSpeed = Field(alias="@speed")
brightness: ColorLogicBrightness = Field(alias="@brightness")
state: ColorLogicPowerState | int = Field(alias="@lightState")
show: ColorLogicShow | int = Field(alias="@currentShow")
speed: ColorLogicSpeed | int = Field(alias="@speed")
brightness: ColorLogicBrightness | int = Field(alias="@brightness")
special_effect: int = Field(alias="@specialEffect")


class TelemetryFilter(BaseModel):
omni_type: OmniType = OmniType.FILTER
system_id: int = Field(alias="@systemId")
state: FilterState = Field(alias="@filterState")
state: FilterState | int = Field(alias="@filterState")
speed: int = Field(alias="@filterSpeed")
valve_position: FilterValvePosition = Field(alias="@valvePosition")
why_on: FilterWhyOn = Field(alias="@whyFilterIsOn")
valve_position: FilterValvePosition | int = Field(alias="@valvePosition")
why_on: FilterWhyOn | int = Field(alias="@whyFilterIsOn")
reported_speed: int = Field(alias="@reportedFilterSpeed")
power: int = Field(alias="@power")
last_speed: int = Field(alias="@lastSpeed")
Expand All @@ -103,7 +103,7 @@ class TelemetryGroup(BaseModel):
class TelemetryHeater(BaseModel):
omni_type: OmniType = OmniType.HEATER
system_id: int = Field(alias="@systemId")
state: HeaterState = Field(alias="@heaterState")
state: HeaterState | int = Field(alias="@heaterState")
temp: int = Field(alias="@temp")
enabled: bool = Field(alias="@enable")
priority: int = Field(alias="@priority")
Expand All @@ -113,7 +113,7 @@ class TelemetryHeater(BaseModel):
class TelemetryPump(BaseModel):
omni_type: OmniType = OmniType.PUMP
system_id: int = Field(alias="@systemId")
state: PumpState = Field(alias="@pumpState")
state: PumpState | int = Field(alias="@pumpState")
speed: int = Field(alias="@pummpSpeed")
last_speed: int = Field(alias="@lastSpeed")
why_on: int = Field(alias="@whyOn")
Expand All @@ -122,14 +122,14 @@ class TelemetryPump(BaseModel):
class TelemetryRelay(BaseModel):
omni_type: OmniType = OmniType.RELAY
system_id: int = Field(alias="@systemId")
state: RelayState = Field(alias="@relayState")
state: RelayState | int = Field(alias="@relayState")
why_on: int = Field(alias="@whyOn")


class TelemetryValveActuator(BaseModel):
omni_type: OmniType = OmniType.VALVE_ACTUATOR
system_id: int = Field(alias="@systemId")
state: ValveActuatorState = Field(alias="@valveActuatorState")
state: ValveActuatorState | int = Field(alias="@valveActuatorState")
why_on: int = Field(alias="@whyOn")


Expand All @@ -139,7 +139,7 @@ class TelemetryVirtualHeater(BaseModel):
current_set_point: int = Field(alias="@Current-Set-Point")
enabled: bool = Field(alias="@enable")
solar_set_point: int = Field(alias="@SolarSetPoint")
mode: HeaterMode = Field(alias="@Mode")
mode: HeaterMode | int = Field(alias="@Mode")
silent_mode: int = Field(alias="@SilentMode")
why_on: int = Field(alias="@whyHeaterIsOn")

Expand Down

0 comments on commit 9db06b4

Please sign in to comment.