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 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.