Fix from SF patch 565085: copy._reduction doesn't __setstate__.
Straightforward fix.  Will backport to 2.2.  If there's ever a new 2.1
release, this could be backported there too (since it's an issue with
anything that's got both a __reduce__ and a __setstate__).
diff --git a/Lib/copy.py b/Lib/copy.py
index 0180554..77b7ad3 100644
--- a/Lib/copy.py
+++ b/Lib/copy.py
@@ -301,7 +301,10 @@
     if state:
         if deep:
             state = deepcopy(state, memo)
-        y.__dict__.update(state)
+        if hasattr(y, '__setstate__'):
+            y.__setstate__(state)
+        else:
+            y.__dict__.update(state)
     return y
 
 del d