Implement an idea by Paul Rubin:

Change pickling format for bools to use a backwards compatible
encoding.  This means you can pickle True or False on Python 2.3
and Python 2.2 or before will read it back as 1 or 0.  The code
used for pickling bools before would create pickles that could
not be read in previous Python versions.
This commit is contained in:
Guido van Rossum 2002-04-05 19:30:08 +00:00
parent d15a0a05d3
commit e276339cea
3 changed files with 29 additions and 29 deletions

View file

@ -101,8 +101,8 @@ TUPLE = 't'
EMPTY_TUPLE = ')'
SETITEMS = 'u'
BINFLOAT = 'G'
TRUE = 'Z'
FALSE = 'z'
TRUE = 'I01\n'
FALSE = 'I00\n'
__all__.extend([x for x in dir() if re.match("[A-Z][A-Z0-9_]+$",x)])
@ -639,20 +639,18 @@ class Unpickler:
self.append(None)
dispatch[NONE] = load_none
def load_false(self):
self.append(False)
dispatch[FALSE] = load_false
def load_true(self):
self.append(True)
dispatch[TRUE] = load_true
def load_int(self):
data = self.readline()
try:
self.append(int(data))
except ValueError:
self.append(long(data))
if data == FALSE[1:]:
val = False
elif data == TRUE[1:]:
val = True
else:
try:
val = int(data)
except ValueError:
val = long(data)
self.append(val)
dispatch[INT] = load_int
def load_binint(self):