aboutsummaryrefslogtreecommitdiff
path: root/discord/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'discord/utils.py')
-rw-r--r--discord/utils.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/discord/utils.py b/discord/utils.py
index 4dfc7a0c..8303916c 100644
--- a/discord/utils.py
+++ b/discord/utils.py
@@ -26,6 +26,7 @@ DEALINGS IN THE SOFTWARE.
import array
import asyncio
+import collections.abc
import unicodedata
from base64 import b64encode
from bisect import bisect_left
@@ -78,6 +79,32 @@ def cached_slot_property(name):
return CachedSlotProperty(name, func)
return decorator
+class SequenceProxy(collections.abc.Sequence):
+ """Read-only proxy of a Sequence."""
+ def __init__(self, proxied):
+ self.__proxied = proxied
+
+ def __getitem__(self, idx):
+ return self.__proxied[idx]
+
+ def __len__(self):
+ return len(self.__proxied)
+
+ def __contains__(self, item):
+ return item in self.__proxied
+
+ def __iter__(self):
+ return iter(self.__proxied)
+
+ def __reversed__(self):
+ return reversed(self.__proxied)
+
+ def index(self, value, *args, **kwargs):
+ return self.__proxied.index(value, *args, **kwargs)
+
+ def count(self, value):
+ return self.__proxied.count(value)
+
def parse_time(timestamp):
if timestamp:
return datetime.datetime(*map(int, re.split(r'[^\d]', timestamp.replace('+00:00', ''))))