From 0bc15fa130b8f01fe2d67446a2184d474b0d0ba7 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Wed, 8 Jul 2020 23:18:13 -0400 Subject: [PATCH] Don't use a namedtuple for _Overwrites Fix #5109 --- discord/abc.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/discord/abc.py b/discord/abc.py index 41bde7093..dbfd3760b 100644 --- a/discord/abc.py +++ b/discord/abc.py @@ -27,7 +27,6 @@ DEALINGS IN THE SOFTWARE. import abc import copy import asyncio -from collections import namedtuple from .iterators import HistoryIterator from .context_managers import Typing @@ -163,7 +162,22 @@ class PrivateChannel(metaclass=abc.ABCMeta): return NotImplemented return NotImplemented -_Overwrites = namedtuple('_Overwrites', 'id allow deny type') +class _Overwrites: + __slots__ = ('id', 'allow', 'deny', 'type') + + def __init__(self, **kwargs): + self.id = kwargs.pop('id') + self.allow = kwargs.pop('allow', 0) + self.deny = kwargs.pop('deny', 0) + self.type = kwargs.pop('type') + + def _asdict(self): + return { + 'id': self.id, + 'allow': self.allow, + 'deny': self.deny, + 'type': self.type, + } class GuildChannel: """An ABC that details the common operations on a Discord guild channel.