*Semantic change*: when unpickling the instance variables of an
instance, use inst.__dict__.update(value) instead of a for loop with
setattr() over the value.keys(). This is more consistent (the
pickling doesn't use getattr() either but pickles inst.__dict__) and
avoids problems with instances that have a __setattr__ hook.
But it *is* a semantic change (because the setattr hook is no longer
used). So beware!
diff --git a/Lib/pickle.py b/Lib/pickle.py
index 97eb4e4..7458792 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -843,8 +843,7 @@
try:
setstate = inst.__setstate__
except AttributeError:
- for key in value.keys():
- setattr(inst, key, value[key])
+ inst.__dict__.update(value)
else:
setstate(value)
dispatch[BUILD] = load_build