From ef9ed315896965d5095c768a80dc0c25f15c1950 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Sat, 16 Mar 2019 15:45:35 +0100 Subject: [PATCH] Add __slots__ to PyrogramType and Update types --- pyrogram/client/types/pyrogram_type.py | 20 +++++++++----------- pyrogram/client/types/update.py | 2 ++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pyrogram/client/types/pyrogram_type.py b/pyrogram/client/types/pyrogram_type.py index 3708cdc5..d746e6a7 100644 --- a/pyrogram/client/types/pyrogram_type.py +++ b/pyrogram/client/types/pyrogram_type.py @@ -17,15 +17,17 @@ # along with Pyrogram. If not, see . from collections import OrderedDict -from json import dumps, JSONEncoder +from json import dumps class PyrogramType: + __slots__ = ["_client"] + def __init__(self, client): self._client = client def __str__(self): - return dumps(self, cls=Encoder, indent=4) + return dumps(self, indent=4, default=default, ensure_ascii=False) def __getitem__(self, item): return getattr(self, item) @@ -40,15 +42,9 @@ def remove_none(obj): return obj -class Encoder(JSONEncoder): - def default(self, o: PyrogramType): - try: - content = { - i: getattr(o, i) - for i in filter(lambda x: not x.startswith("_"), o.__dict__) - } - except AttributeError: - return repr(o) +def default(o: PyrogramType): + try: + content = {i: getattr(o, i) for i in o.__slots__} return remove_none( OrderedDict( @@ -56,3 +52,5 @@ class Encoder(JSONEncoder): + [i for i in content.items()] ) ) + except AttributeError: + return repr(o) diff --git a/pyrogram/client/types/update.py b/pyrogram/client/types/update.py index 2ec22f5a..48179ac0 100644 --- a/pyrogram/client/types/update.py +++ b/pyrogram/client/types/update.py @@ -26,6 +26,8 @@ class ContinuePropagation(StopIteration): class Update: + __slots__ = [] + def stop_propagation(self): raise StopPropagation