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:
Denis Laxalde 2024-06-26 14:25:39 +02:00 committed by GitHub
parent b393d79aaf
commit e1b2c9491b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 5 additions and 11 deletions

View File

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