From 829eb0b1065d370f1aa6be8838cb27a7472f8532 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Tue, 5 Sep 2023 03:07:25 -0400 Subject: [PATCH] Slightly improve performance of constructing Permissions using kwargs --- discord/permissions.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/discord/permissions.py b/discord/permissions.py index 1f0d0f235..2751f10d7 100644 --- a/discord/permissions.py +++ b/discord/permissions.py @@ -142,9 +142,12 @@ class Permissions(BaseFlags): self.value = permissions for key, value in kwargs.items(): - if key not in self.VALID_FLAGS: - raise TypeError(f'{key!r} is not a valid permission name.') - setattr(self, key, value) + try: + flag = self.VALID_FLAGS[key] + except KeyError: + raise TypeError(f'{key!r} is not a valid permission name.') from None + else: + self._set_flag(flag, value) def is_subset(self, other: Permissions) -> bool: """Returns ``True`` if self has the same or fewer permissions as other.""" @@ -364,8 +367,9 @@ class Permissions(BaseFlags): A list of key/value pairs to bulk update permissions with. """ for key, value in kwargs.items(): - if key in self.VALID_FLAGS: - setattr(self, key, value) + flag = self.VALID_FLAGS.get(key) + if flag is not None: + self._set_flag(flag, value) def handle_overwrite(self, allow: int, deny: int) -> None: # Basically this is what's happening here.