mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
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:
parent
d15a0a05d3
commit
e276339cea
3 changed files with 29 additions and 29 deletions
|
@ -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):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue