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,
ClimateCommandRequest,
CoverCommandRequest,
DatetimeCommandRequest,
DateCommandRequest,
DeviceInfoRequest,
DeviceInfoResponse,
ExecuteServiceArgument,
@ -1101,9 +1101,9 @@ class APIClient:
def number_command(self, key: int, state: float) -> None:
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(
DatetimeCommandRequest(key=key, state=state)
DateCommandRequest(key=key, year=year, month=month, day=day)
)
def select_command(self, key: int, state: str) -> None:

View File

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

View File

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

View File

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

View File

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

View File

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