@@ -30,43 +30,51 @@ class Object:
3030 QUALNAME = "Base"
3131
3232 @staticmethod
33- def read (b : BytesIO , * args ):
33+ def read (b : BytesIO , * args ): # TODO: Rename b -> data
3434 return Object .all [int .from_bytes (b .read (4 ), "little" )].read (b , * args )
3535
3636 def write (self , * args ) -> bytes :
3737 pass
3838
39+ def __eq__ (self , other : "Object" ) -> bool :
40+ for attr in self .__slots__ :
41+ try :
42+ if getattr (self , attr ) != getattr (other , attr ):
43+ return False
44+ except AttributeError :
45+ return False
46+
47+ return True
48+
3949 def __str__ (self ) -> str :
50+ def default (obj : Object ):
51+ try :
52+ return OrderedDict (
53+ [("_" , obj .QUALNAME )]
54+ + [(attr , getattr (obj , attr ))
55+ for attr in obj .__slots__
56+ if getattr (obj , attr ) is not None ]
57+ )
58+ except AttributeError :
59+ if isinstance (obj , datetime ):
60+ return obj .strftime ("%d-%b-%Y %H:%M:%S" )
61+ else :
62+ return repr (obj )
63+
4064 return dumps (self , indent = 4 , default = default , ensure_ascii = False )
4165
66+ def __repr__ (self ) -> str :
67+ return "pyrogram.api.{}({})" .format (
68+ self .QUALNAME ,
69+ ", " .join (
70+ "{}={}" .format (attr , repr (getattr (self , attr )))
71+ for attr in self .__slots__
72+ if getattr (self , attr ) is not None
73+ )
74+ )
75+
4276 def __len__ (self ) -> int :
4377 return len (self .write ())
4478
4579 def __getitem__ (self , item ):
4680 return getattr (self , item )
47-
48-
49- def remove_none (obj ):
50- if isinstance (obj , (list , tuple , set )):
51- return type (obj )(remove_none (x ) for x in obj if x is not None )
52- elif isinstance (obj , dict ):
53- 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 )
54- else :
55- return obj
56-
57-
58- def default (o : "Object" ):
59- try :
60- content = {i : getattr (o , i ) for i in o .__slots__ }
61-
62- return remove_none (
63- OrderedDict (
64- [("_" , o .QUALNAME )]
65- + [i for i in content .items ()]
66- )
67- )
68- except AttributeError :
69- if isinstance (o , datetime ):
70- return o .strftime ("%d-%b-%Y %H:%M:%S" )
71- else :
72- return repr (o )
0 commit comments