Skip to content

Commit

Permalink
Only loop once on "cached_properties" when building slotted classes
Browse files Browse the repository at this point in the history
Previously the cached_properties dict was read three times.
  • Loading branch information
dlax committed Jun 3, 2024
1 parent 5618e6f commit 0039f70
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions src/attr/_make.py
Original file line number Diff line number Diff line change
Expand Up @@ -931,19 +931,13 @@ def _create_slots_class(self):
# 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
Expand Down

0 comments on commit 0039f70

Please sign in to comment.