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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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]
): ):