mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Simplify entity _attr cached_property getter implementation (#113195)
This commit is contained in:
parent
bbef3f7f68
commit
fb163278a4
@ -11,6 +11,7 @@ from enum import Enum, IntFlag, auto
|
|||||||
import functools as ft
|
import functools as ft
|
||||||
import logging
|
import logging
|
||||||
import math
|
import math
|
||||||
|
from operator import attrgetter
|
||||||
import sys
|
import sys
|
||||||
from timeit import default_timer as timer
|
from timeit import default_timer as timer
|
||||||
from types import FunctionType
|
from types import FunctionType
|
||||||
@ -340,16 +341,6 @@ class CachedProperties(type):
|
|||||||
|
|
||||||
return _deleter
|
return _deleter
|
||||||
|
|
||||||
def getter(name: str) -> Callable[[Any], Any]:
|
|
||||||
"""Create a getter for an _attr_ property."""
|
|
||||||
private_attr_name = f"__attr_{name}"
|
|
||||||
|
|
||||||
def _getter(o: Any) -> Any:
|
|
||||||
"""Get an _attr_ property from the backing __attr attribute."""
|
|
||||||
return getattr(o, private_attr_name)
|
|
||||||
|
|
||||||
return _getter
|
|
||||||
|
|
||||||
def setter(name: str) -> Callable[[Any, Any], None]:
|
def setter(name: str) -> Callable[[Any, Any], None]:
|
||||||
"""Create a setter for an _attr_ property."""
|
"""Create a setter for an _attr_ property."""
|
||||||
private_attr_name = f"__attr_{name}"
|
private_attr_name = f"__attr_{name}"
|
||||||
@ -372,7 +363,9 @@ class CachedProperties(type):
|
|||||||
|
|
||||||
def make_property(name: str) -> property:
|
def make_property(name: str) -> property:
|
||||||
"""Help create a property object."""
|
"""Help create a property object."""
|
||||||
return property(fget=getter(name), fset=setter(name), fdel=deleter(name))
|
return property(
|
||||||
|
fget=attrgetter(f"__attr_{name}"), fset=setter(name), fdel=deleter(name)
|
||||||
|
)
|
||||||
|
|
||||||
def wrap_attr(cls: CachedProperties, property_name: str) -> None:
|
def wrap_attr(cls: CachedProperties, property_name: str) -> None:
|
||||||
"""Wrap a cached property's corresponding _attr in a property.
|
"""Wrap a cached property's corresponding _attr in a property.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user