From 676f9feba8b7a67f51360b04f535dbdb9b930e09 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Mon, 26 Mar 2018 15:16:09 +0200 Subject: [PATCH] Strip None fields away --- pyrogram/api/core/object.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pyrogram/api/core/object.py b/pyrogram/api/core/object.py index bec9d015..a74eb876 100644 --- a/pyrogram/api/core/object.py +++ b/pyrogram/api/core/object.py @@ -47,6 +47,15 @@ class Object: pass +def remove_none(obj): + if isinstance(obj, (list, tuple, set)): + return type(obj)(remove_none(x) for x in obj if x is not None) + elif isinstance(obj, dict): + return type(obj)((remove_none(k), remove_none(v)) for k, v in obj.items() if k is not None and v is not None) + else: + return obj + + class Encoder(JSONEncoder): def default(self, o: Object): try: @@ -57,7 +66,10 @@ class Encoder(JSONEncoder): else: return repr(o) - return OrderedDict( - [("_", objects.get(getattr(o, "ID", None), None))] - + [i for i in content.items()] - ) + if "pyrogram" in objects.get(getattr(o, "ID", "")): + return remove_none(OrderedDict([i for i in content.items()])) + else: + return OrderedDict( + [("_", objects.get(getattr(o, "ID", None), None))] + + [i for i in content.items()] + )