The default shelve pickle protocol should have been 3.
diff --git a/Lib/shelve.py b/Lib/shelve.py
index cf6dac6..fb2fa93 100644
--- a/Lib/shelve.py
+++ b/Lib/shelve.py
@@ -84,7 +84,7 @@
                  keyencoding="utf-8"):
         self.dict = dict
         if protocol is None:
-            protocol = 2
+            protocol = 3
         self._protocol = protocol
         self.writeback = writeback
         self.cache = {}