Make sure ProxyDictPreWrite and ProxyDictPostWrite are pickled correctly

This commit is contained in:
allegroai 2019-12-21 18:33:15 +02:00
parent 4e0f711e39
commit e4024e01d5

View File

@ -17,6 +17,9 @@ class ProxyDictPostWrite(dict):
super(ProxyDictPostWrite, self).__setitem__(key, value) super(ProxyDictPostWrite, self).__setitem__(key, value)
self._set_callback() self._set_callback()
def __reduce__(self):
return dict, (), None, None, iter(self._to_dict().items())
def _set_callback(self, *_): def _set_callback(self, *_):
if self._update_func: if self._update_func:
self._update_func(self._update_obj, self) self._update_func(self._update_obj, self)
@ -48,6 +51,9 @@ class ProxyDictPreWrite(dict):
self._update_obj = update_obj self._update_obj = update_obj
self._update_func = update_func self._update_func = update_func
def __reduce__(self):
return dict, (), None, None, iter(self.items())
def __setitem__(self, key, value): def __setitem__(self, key, value):
key_value = self._set_callback((key, value,)) key_value = self._set_callback((key, value,))
if key_value: if key_value: