Avoid mutating entity descriptions in radarr (#105972)

This commit is contained in:
Erik Montnemery
2023-12-18 14:03:41 +01:00
committed by GitHub
parent 7a9e303e20
commit 8518d46d28

View File

@@ -2,8 +2,7 @@
from __future__ import annotations from __future__ import annotations
from collections.abc import Callable from collections.abc import Callable
from copy import deepcopy import dataclasses
from dataclasses import dataclass
from datetime import UTC, datetime from datetime import UTC, datetime
from typing import Any, Generic from typing import Any, Generic
@@ -39,21 +38,23 @@ def get_modified_description(
description: RadarrSensorEntityDescription[T], mount: RootFolder description: RadarrSensorEntityDescription[T], mount: RootFolder
) -> tuple[RadarrSensorEntityDescription[T], str]: ) -> tuple[RadarrSensorEntityDescription[T], str]:
"""Return modified description and folder name.""" """Return modified description and folder name."""
desc = deepcopy(description)
name = mount.path.rsplit("/")[-1].rsplit("\\")[-1] name = mount.path.rsplit("/")[-1].rsplit("\\")[-1]
desc.key = f"{description.key}_{name}" desc = dataclasses.replace(
desc.name = f"{description.name} {name}".capitalize() description,
key=f"{description.key}_{name}",
name=f"{description.name} {name}".capitalize(),
)
return desc, name return desc, name
@dataclass @dataclasses.dataclass
class RadarrSensorEntityDescriptionMixIn(Generic[T]): class RadarrSensorEntityDescriptionMixIn(Generic[T]):
"""Mixin for required keys.""" """Mixin for required keys."""
value_fn: Callable[[T, str], str | int | datetime] value_fn: Callable[[T, str], str | int | datetime]
@dataclass @dataclasses.dataclass
class RadarrSensorEntityDescription( class RadarrSensorEntityDescription(
SensorEntityDescription, RadarrSensorEntityDescriptionMixIn[T], Generic[T] SensorEntityDescription, RadarrSensorEntityDescriptionMixIn[T], Generic[T]
): ):