Simplify entity _attr cached_property getter implementation (#113195)

This commit is contained in:
J. Nick Koston 2024-03-13 00:59:36 -10:00 committed by GitHub
parent bbef3f7f68
commit fb163278a4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -11,6 +11,7 @@ from enum import Enum, IntFlag, auto
import functools as ft
import logging
import math
from operator import attrgetter
import sys
from timeit import default_timer as timer
from types import FunctionType
@ -340,16 +341,6 @@ class CachedProperties(type):
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]:
"""Create a setter for an _attr_ property."""
private_attr_name = f"__attr_{name}"
@ -372,7 +363,9 @@ class CachedProperties(type):
def make_property(name: str) -> property:
"""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:
"""Wrap a cached property's corresponding _attr in a property.