This commit is contained in:
Victor Alexandrovich Tsyrenschikov
2026-03-30 20:25:42 +05:00
parent 139f9f1bd2
commit 373ed28445
2449 changed files with 53602 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
"""Schema for device property.
https://yandex.ru/dev/dialogs/smart-home/doc/concepts/properties-types.html
"""
from enum import StrEnum
from typing import Any, Literal
from .base import APIModel
from .property_event import EventPropertyInstance, EventPropertyParameters
from .property_float import FloatPropertyInstance, FloatPropertyParameters
class PropertyType(StrEnum):
"""Property type."""
FLOAT = "devices.properties.float"
EVENT = "devices.properties.event"
@property
def short(self) -> str:
"""Return short version of the property type."""
return str(self).replace("devices.properties.", "")
class FloatPropertyDescription(APIModel):
"""Description of a float property for a device list request."""
type: Literal[PropertyType.FLOAT] = PropertyType.FLOAT
retrievable: bool
reportable: bool
parameters: FloatPropertyParameters
class EventPropertyDescription(APIModel):
"""Description of an event property for a device list request."""
type: Literal[PropertyType.EVENT] = PropertyType.EVENT
retrievable: bool
reportable: bool
parameters: EventPropertyParameters[Any]
PropertyDescription = FloatPropertyDescription | EventPropertyDescription
"""Description of a property for a device list request."""
PropertyParameters = FloatPropertyParameters | EventPropertyParameters[Any]
"""Parameters of a property for a device list request."""
PropertyInstance = FloatPropertyInstance | EventPropertyInstance
"""All property instances."""
class PropertyInstanceStateValue(APIModel):
"""Property instance value."""
instance: PropertyInstance
value: Any
class PropertyInstanceState(APIModel):
"""Property state for state query and callback requests."""
type: PropertyType
state: PropertyInstanceStateValue