diff options
-rw-r--r-- | Lib/pickle.py | 13 | ||||
-rw-r--r-- | Lib/pickletools.py | 25 |
2 files changed, 11 insertions, 27 deletions
diff --git a/Lib/pickle.py b/Lib/pickle.py index b9bafce..863702d 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -37,7 +37,7 @@ import warnings __all__ = ["PickleError", "PicklingError", "UnpicklingError", "Pickler", "Unpickler", "dump", "dumps", "load", "loads"] -# These are purely informational; no code usues these +# These are purely informational; no code uses these. format_version = "2.0" # File format version we write compatible_formats = ["1.0", # Original protocol 0 "1.1", # Protocol 0 with INST added @@ -47,7 +47,7 @@ compatible_formats = ["1.0", # Original protocol 0 ] # Old format versions we can read # Why use struct.pack() for pickling but marshal.loads() for -# unpickling? struct.pack() is 40% faster than marshal.loads(), but +# unpickling? struct.pack() is 40% faster than marshal.dumps(), but # marshal.loads() is twice as fast as struct.unpack()! mloads = marshal.loads @@ -73,6 +73,8 @@ class UnpicklingError(PickleError): """ pass +# An instance of _Stop is raised by Unpickler.load_stop() in response to +# the STOP opcode, passing the object that is the result of unpickling. class _Stop(Exception): def __init__(self, value): self.value = value @@ -138,7 +140,7 @@ BINFLOAT = 'G' # push float; arg is 8-byte float encoding TRUE = 'I01\n' # not an opcode; see INT docs in pickletools.py FALSE = 'I00\n' # not an opcode; see INT docs in pickletools.py -# Protocol 2 (not yet implemented). +# Protocol 2 (XXX not yet implemented). PROTO = '\x80' # identify pickle protocol NEWOBJ = '\x81' # build object by applying cls.__new__ to argtuple @@ -772,6 +774,9 @@ def _keep_alive(x, memo): memo[id(memo)]=[x] +# A cache for whichmodule(), mapping a function object to the name of +# the module in which the function was found. + classmap = {} # called classmap for backwards compatibility def whichmodule(func, funcname): @@ -780,7 +785,7 @@ def whichmodule(func, funcname): Search sys.modules for the module. Cache in classmap. Return a module name. - If the function cannot be found, return __main__. + If the function cannot be found, return "__main__". """ if func in classmap: return classmap[func] diff --git a/Lib/pickletools.py b/Lib/pickletools.py index b3c708d..183db10 100644 --- a/Lib/pickletools.py +++ b/Lib/pickletools.py @@ -603,29 +603,7 @@ float8 = ArgumentDescriptor( # Protocol 2 formats -def decode_long(data): - r"""Decode a long from a two's complement little-endian binary string. - >>> decode_long("\xff\x00") - 255L - >>> decode_long("\xff\x7f") - 32767L - >>> decode_long("\x00\xff") - -256L - >>> decode_long("\x00\x80") - -32768L - >>> decode_long("\x80") - -128L - >>> decode_long("\x7f") - 127L - """ - x = 0L - i = 0L - for c in data: - x |= long(ord(c)) << i - i += 8L - if data and ord(c) >= 0x80: - x -= 1L << i - return x +from pickle import decode_long def read_long1(f): r""" @@ -1793,6 +1771,7 @@ def assure_pickle_consistency(verbose=False): raise ValueError("\n".join(msg)) assure_pickle_consistency() +del assure_pickle_consistency ############################################################################## # A pickle opcode generator. |