OK, this is really the last one tonight!
NEWFALSE and NEWTRUE.
diff --git a/Lib/pickle.py b/Lib/pickle.py
index aa67ed1..95bdd26 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -356,7 +356,10 @@
dispatch[NoneType] = save_none
def save_bool(self, object):
- self.write(object and TRUE or FALSE)
+ if self.proto >= 2:
+ self.write(object and NEWTRUE or NEWFALSE)
+ else:
+ self.write(object and TRUE or FALSE)
dispatch[bool] = save_bool
def save_int(self, object, pack=struct.pack):
@@ -760,6 +763,14 @@
self.append(None)
dispatch[NONE] = load_none
+ def load_false(self):
+ self.append(False)
+ dispatch[NEWFALSE] = load_false
+
+ def load_true(self):
+ self.append(True)
+ dispatch[NEWTRUE] = load_true
+
def load_int(self):
data = self.readline()
if data == FALSE[1:]:
diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py
index 50e9aa4..3d65383 100644
--- a/Lib/test/pickletester.py
+++ b/Lib/test/pickletester.py
@@ -293,6 +293,13 @@
y = self.loads(s)
self.assertEqual(x, y, (proto, x, s, y))
+ def test_singletons(self):
+ for proto in 0, 1, 2:
+ for x in None, False, True:
+ s = self.dumps(x, proto)
+ y = self.loads(s)
+ self.assert_(x is y, (proto, x, s, y))
+
class AbstractPickleModuleTests(unittest.TestCase):
def test_dump_closed_file(self):