Scale down changes to only Date Entity

This commit is contained in:
Jesse Hills 2024-03-06 01:31:36 +00:00
parent afb2d35875
commit 718fc0c53c
No known key found for this signature in database
GPG Key ID: BEAAE804EFD8E83A
6 changed files with 39 additions and 48 deletions

View File

@ -37,7 +37,7 @@ from .api_pb2 import ( # type: ignore
CameraImageResponse, CameraImageResponse,
ClimateCommandRequest, ClimateCommandRequest,
CoverCommandRequest, CoverCommandRequest,
DatetimeCommandRequest, DateCommandRequest,
DeviceInfoRequest, DeviceInfoRequest,
DeviceInfoResponse, DeviceInfoResponse,
ExecuteServiceArgument, ExecuteServiceArgument,
@ -1101,9 +1101,9 @@ class APIClient:
def number_command(self, key: int, state: float) -> None: def number_command(self, key: int, state: float) -> None:
self._get_connection().send_message(NumberCommandRequest(key=key, state=state)) self._get_connection().send_message(NumberCommandRequest(key=key, state=state))
def datetime_command(self, key: int, state: str) -> None: def date_command(self, key: int, year: int, month: int, day: int) -> None:
self._get_connection().send_message( self._get_connection().send_message(
DatetimeCommandRequest(key=key, state=state) DateCommandRequest(key=key, year=year, month=month, day=day)
) )
def select_command(self, key: int, state: str) -> None: def select_command(self, key: int, state: str) -> None:

View File

@ -38,8 +38,8 @@ from .api_pb2 import ( # type: ignore
ConnectResponse, ConnectResponse,
CoverCommandRequest, CoverCommandRequest,
CoverStateResponse, CoverStateResponse,
DatetimeCommandRequest, DateCommandRequest,
DatetimeStateResponse, DateStateResponse,
DeviceInfoRequest, DeviceInfoRequest,
DeviceInfoResponse, DeviceInfoResponse,
DisconnectRequest, DisconnectRequest,
@ -61,7 +61,7 @@ from .api_pb2 import ( # type: ignore
ListEntitiesCameraResponse, ListEntitiesCameraResponse,
ListEntitiesClimateResponse, ListEntitiesClimateResponse,
ListEntitiesCoverResponse, ListEntitiesCoverResponse,
ListEntitiesDatetimeResponse, ListEntitiesDateResponse,
ListEntitiesDoneResponse, ListEntitiesDoneResponse,
ListEntitiesFanResponse, ListEntitiesFanResponse,
ListEntitiesLightResponse, ListEntitiesLightResponse,
@ -357,7 +357,7 @@ MESSAGE_TYPE_TO_PROTO = {
97: ListEntitiesTextResponse, 97: ListEntitiesTextResponse,
98: TextStateResponse, 98: TextStateResponse,
99: TextCommandRequest, 99: TextCommandRequest,
100: ListEntitiesDatetimeResponse, 100: ListEntitiesDateResponse,
101: DatetimeStateResponse, 101: DateStateResponse,
102: DatetimeCommandRequest, 102: DateCommandRequest,
} }

View File

@ -637,22 +637,19 @@ class NumberState(EntityState):
missing_state: bool = False missing_state: bool = False
# ==================== DATETIME ==================== # ==================== DATETIME DATE ====================
class DatetimeMode(APIIntEnum):
AUTO = 0 @_frozen_dataclass_decorator
class DateInfo(EntityInfo):
pass
@_frozen_dataclass_decorator @_frozen_dataclass_decorator
class DatetimeInfo(EntityInfo): class DateState(EntityState):
mode: DatetimeMode | None = converter_field(
default=DatetimeMode.AUTO, converter=DatetimeMode.convert
)
@_frozen_dataclass_decorator
class DatetimeState(EntityState):
state: str = ""
missing_state: bool = False missing_state: bool = False
year: int = 0
month: int = 0
day: int = 0
# ==================== SELECT ==================== # ==================== SELECT ====================
@ -824,7 +821,7 @@ COMPONENT_TYPE_TO_INFO: dict[str, type[EntityInfo]] = {
"camera": CameraInfo, "camera": CameraInfo,
"climate": ClimateInfo, "climate": ClimateInfo,
"number": NumberInfo, "number": NumberInfo,
"datetime": DatetimeInfo, "date": DateInfo,
"select": SelectInfo, "select": SelectInfo,
"siren": SirenInfo, "siren": SirenInfo,
"button": ButtonInfo, "button": ButtonInfo,
@ -1173,7 +1170,7 @@ _TYPE_TO_NAME = {
FanInfo: "fan", FanInfo: "fan",
LightInfo: "light", LightInfo: "light",
NumberInfo: "number", NumberInfo: "number",
DatetimeInfo: "datetime", DateInfo: "date",
SelectInfo: "select", SelectInfo: "select",
SensorInfo: "sensor", SensorInfo: "sensor",
SirenInfo: "siren", SirenInfo: "siren",

View File

@ -7,7 +7,7 @@ from .api_pb2 import ( # type: ignore
BinarySensorStateResponse, BinarySensorStateResponse,
ClimateStateResponse, ClimateStateResponse,
CoverStateResponse, CoverStateResponse,
DatetimeStateResponse, DateStateResponse,
FanStateResponse, FanStateResponse,
LightStateResponse, LightStateResponse,
ListEntitiesAlarmControlPanelResponse, ListEntitiesAlarmControlPanelResponse,
@ -16,7 +16,7 @@ from .api_pb2 import ( # type: ignore
ListEntitiesCameraResponse, ListEntitiesCameraResponse,
ListEntitiesClimateResponse, ListEntitiesClimateResponse,
ListEntitiesCoverResponse, ListEntitiesCoverResponse,
ListEntitiesDatetimeResponse, ListEntitiesDateResponse,
ListEntitiesFanResponse, ListEntitiesFanResponse,
ListEntitiesLightResponse, ListEntitiesLightResponse,
ListEntitiesLockResponse, ListEntitiesLockResponse,
@ -50,8 +50,8 @@ from .model import (
ClimateState, ClimateState,
CoverInfo, CoverInfo,
CoverState, CoverState,
DatetimeInfo, DateInfo,
DatetimeState, DateState,
EntityInfo, EntityInfo,
EntityState, EntityState,
FanInfo, FanInfo,
@ -84,7 +84,7 @@ SUBSCRIBE_STATES_RESPONSE_TYPES: dict[Any, type[EntityState]] = {
FanStateResponse: FanState, FanStateResponse: FanState,
LightStateResponse: LightState, LightStateResponse: LightState,
NumberStateResponse: NumberState, NumberStateResponse: NumberState,
DatetimeStateResponse: DatetimeState, DateStateResponse: DateState,
SelectStateResponse: SelectState, SelectStateResponse: SelectState,
SensorStateResponse: SensorState, SensorStateResponse: SensorState,
SirenStateResponse: SirenState, SirenStateResponse: SirenState,
@ -104,7 +104,7 @@ LIST_ENTITIES_SERVICES_RESPONSE_TYPES: dict[Any, type[EntityInfo] | None] = {
ListEntitiesFanResponse: FanInfo, ListEntitiesFanResponse: FanInfo,
ListEntitiesLightResponse: LightInfo, ListEntitiesLightResponse: LightInfo,
ListEntitiesNumberResponse: NumberInfo, ListEntitiesNumberResponse: NumberInfo,
ListEntitiesDatetimeResponse: DatetimeInfo, ListEntitiesDateResponse: DateInfo,
ListEntitiesSelectResponse: SelectInfo, ListEntitiesSelectResponse: SelectInfo,
ListEntitiesSensorResponse: SensorInfo, ListEntitiesSensorResponse: SensorInfo,
ListEntitiesSirenResponse: SirenInfo, ListEntitiesSirenResponse: SirenInfo,

View File

@ -41,7 +41,7 @@ from aioesphomeapi.api_pb2 import (
CameraImageResponse, CameraImageResponse,
ClimateCommandRequest, ClimateCommandRequest,
CoverCommandRequest, CoverCommandRequest,
DatetimeCommandRequest, DateCommandRequest,
DeviceInfoResponse, DeviceInfoResponse,
DisconnectResponse, DisconnectResponse,
ExecuteServiceArgument, ExecuteServiceArgument,
@ -622,23 +622,17 @@ async def test_number_command(
@pytest.mark.parametrize( @pytest.mark.parametrize(
"cmd, req", "cmd, req",
[ [
(dict(key=1, state="2024-02-15"), dict(key=1, state="2024-02-15")), (dict(key=1, year=2024, month=2, day=29), dict(key=1, year=2024, month=2, day=29)),
(dict(key=1, state="18:30"), dict(key=1, state="18:30")), (dict(key=1, year=2000, month=6, day=10), dict(key=1, year=2000, month=6, day=10)),
(dict(key=1, state="18:30:45"), dict(key=1, state="18:30:45")),
(dict(key=1, state="2024-02-15 18:30"), dict(key=1, state="2024-02-15 18:30")),
(
dict(key=1, state="2024-02-15 18:30:45"),
dict(key=1, state="2024-02-15 18:30:45"),
),
], ],
) )
async def test_datetime_command( async def test_date_command(
auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any] auth_client: APIClient, cmd: dict[str, Any], req: dict[str, Any]
) -> None: ) -> None:
send = patch_send(auth_client) send = patch_send(auth_client)
auth_client.datetime_command(**cmd) auth_client.date_command(**cmd)
send.assert_called_once_with(DatetimeCommandRequest(**req)) send.assert_called_once_with(DateCommandRequest(**req))
@pytest.mark.asyncio @pytest.mark.asyncio

View File

@ -13,7 +13,7 @@ from aioesphomeapi.api_pb2 import (
BluetoothGATTGetServicesResponse, BluetoothGATTGetServicesResponse,
ClimateStateResponse, ClimateStateResponse,
CoverStateResponse, CoverStateResponse,
DatetimeStateResponse, DateStateResponse,
DeviceInfoResponse, DeviceInfoResponse,
FanStateResponse, FanStateResponse,
HomeassistantServiceMap, HomeassistantServiceMap,
@ -24,7 +24,7 @@ from aioesphomeapi.api_pb2 import (
ListEntitiesButtonResponse, ListEntitiesButtonResponse,
ListEntitiesClimateResponse, ListEntitiesClimateResponse,
ListEntitiesCoverResponse, ListEntitiesCoverResponse,
ListEntitiesDatetimeResponse, ListEntitiesDateResponse,
ListEntitiesFanResponse, ListEntitiesFanResponse,
ListEntitiesLightResponse, ListEntitiesLightResponse,
ListEntitiesLockResponse, ListEntitiesLockResponse,
@ -71,8 +71,8 @@ from aioesphomeapi.model import (
ClimateState, ClimateState,
CoverInfo, CoverInfo,
CoverState, CoverState,
DatetimeInfo, DateInfo,
DatetimeState, DateState,
DeviceInfo, DeviceInfo,
FanInfo, FanInfo,
FanState, FanState,
@ -246,8 +246,8 @@ def test_api_version_ord():
(ClimateState, ClimateStateResponse), (ClimateState, ClimateStateResponse),
(NumberInfo, ListEntitiesNumberResponse), (NumberInfo, ListEntitiesNumberResponse),
(NumberState, NumberStateResponse), (NumberState, NumberStateResponse),
(DatetimeInfo, ListEntitiesDatetimeResponse), (DateInfo, ListEntitiesDateResponse),
(DatetimeState, DatetimeStateResponse), (DateState, DateStateResponse),
(SelectInfo, ListEntitiesSelectResponse), (SelectInfo, ListEntitiesSelectResponse),
(SelectState, SelectStateResponse), (SelectState, SelectStateResponse),
(HomeassistantServiceCall, HomeassistantServiceResponse), (HomeassistantServiceCall, HomeassistantServiceResponse),
@ -364,7 +364,7 @@ def test_user_service_conversion():
FanInfo, FanInfo,
LightInfo, LightInfo,
NumberInfo, NumberInfo,
DatetimeInfo, DateInfo,
SelectInfo, SelectInfo,
SensorInfo, SensorInfo,
SirenInfo, SirenInfo,