mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-02-13 18:11:06 +03:00
Make TLObjects picklable (#752)
This commit is contained in:
parent
bd1b0ecdb4
commit
3bf259d6b3
|
@ -5,13 +5,36 @@ from threading import Event
|
||||||
|
|
||||||
class TLObject:
|
class TLObject:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.confirm_received = Event()
|
|
||||||
self.rpc_error = None
|
self.rpc_error = None
|
||||||
self.result = None
|
self.result = None
|
||||||
|
|
||||||
# These should be overrode
|
# These should be overrode
|
||||||
self.content_related = False # Only requests/functions/queries are
|
self.content_related = False # Only requests/functions/queries are
|
||||||
|
|
||||||
|
# Internal parameter to tell pickler in which state Event object was
|
||||||
|
self._event_is_set = False
|
||||||
|
self._set_event()
|
||||||
|
|
||||||
|
def _set_event(self):
|
||||||
|
self.confirm_received = Event()
|
||||||
|
|
||||||
|
# Set Event state to 'set' if needed
|
||||||
|
if self._event_is_set:
|
||||||
|
self.confirm_received.set()
|
||||||
|
|
||||||
|
def __getstate__(self):
|
||||||
|
# Save state of the Event object
|
||||||
|
self._event_is_set = self.confirm_received.is_set()
|
||||||
|
|
||||||
|
# Exclude Event object from dict and return new state
|
||||||
|
new_dct = dict(self.__dict__)
|
||||||
|
del new_dct["confirm_received"]
|
||||||
|
return new_dct
|
||||||
|
|
||||||
|
def __setstate__(self, state):
|
||||||
|
self.__dict__ = state
|
||||||
|
self._set_event()
|
||||||
|
|
||||||
# These should not be overrode
|
# These should not be overrode
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def pretty_format(obj, indent=None):
|
def pretty_format(obj, indent=None):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user