refactor: Only loop once on "cached_properties" when building slotted classes (#1290)
Only loop once on "cached_properties" when building slotted classes Previously the cached_properties dict was read three times. Co-authored-by: Hynek Schlawack <hs@ox.cx>
This commit is contained in:
parent
b393d79aaf
commit
e1b2c9491b
|
@ -931,19 +931,13 @@ class _ClassBuilder:
|
|||
# To know to update them.
|
||||
additional_closure_functions_to_update = []
|
||||
if cached_properties:
|
||||
# Add cached properties to names for slotting.
|
||||
names += tuple(cached_properties.keys())
|
||||
|
||||
for name in cached_properties:
|
||||
# Clear out function from class to avoid clashing.
|
||||
del cd[name]
|
||||
|
||||
additional_closure_functions_to_update.extend(
|
||||
cached_properties.values()
|
||||
)
|
||||
|
||||
class_annotations = _get_annotations(self._cls)
|
||||
for name, func in cached_properties.items():
|
||||
# Add cached properties to names for slotting.
|
||||
names += (name,)
|
||||
# Clear out function from class to avoid clashing.
|
||||
del cd[name]
|
||||
additional_closure_functions_to_update.append(func)
|
||||
annotation = inspect.signature(func).return_annotation
|
||||
if annotation is not inspect.Parameter.empty:
|
||||
class_annotations[name] = annotation
|
||||
|
|
Loading…
Reference in New Issue