Avoid mutating entity descriptions in ovo_energy (#105971)

This commit is contained in:
Erik Montnemery 2023-12-18 14:03:57 +01:00 committed by GitHub
parent 8518d46d28
commit bad9598baa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,7 +2,7 @@
from __future__ import annotations from __future__ import annotations
from collections.abc import Callable from collections.abc import Callable
from dataclasses import dataclass import dataclasses
from datetime import datetime, timedelta from datetime import datetime, timedelta
from typing import Final from typing import Final
@ -33,7 +33,7 @@ KEY_LAST_ELECTRICITY_COST: Final = "last_electricity_cost"
KEY_LAST_GAS_COST: Final = "last_gas_cost" KEY_LAST_GAS_COST: Final = "last_gas_cost"
@dataclass @dataclasses.dataclass
class OVOEnergySensorEntityDescription(SensorEntityDescription): class OVOEnergySensorEntityDescription(SensorEntityDescription):
"""Class describing System Bridge sensor entities.""" """Class describing System Bridge sensor entities."""
@ -130,8 +130,11 @@ async def async_setup_entry(
and coordinator.data.electricity[-1] is not None and coordinator.data.electricity[-1] is not None
and coordinator.data.electricity[-1].cost is not None and coordinator.data.electricity[-1].cost is not None
): ):
description.native_unit_of_measurement = ( description = dataclasses.replace(
description,
native_unit_of_measurement=(
coordinator.data.electricity[-1].cost.currency_unit coordinator.data.electricity[-1].cost.currency_unit
),
) )
entities.append(OVOEnergySensor(coordinator, description, client)) entities.append(OVOEnergySensor(coordinator, description, client))
if coordinator.data.gas: if coordinator.data.gas:
@ -141,9 +144,12 @@ async def async_setup_entry(
and coordinator.data.gas[-1] is not None and coordinator.data.gas[-1] is not None
and coordinator.data.gas[-1].cost is not None and coordinator.data.gas[-1].cost is not None
): ):
description.native_unit_of_measurement = coordinator.data.gas[ description = dataclasses.replace(
description,
native_unit_of_measurement=coordinator.data.gas[
-1 -1
].cost.currency_unit ].cost.currency_unit,
)
entities.append(OVOEnergySensor(coordinator, description, client)) entities.append(OVOEnergySensor(coordinator, description, client))
async_add_entities(entities, True) async_add_entities(entities, True)