From c0c12b57070a5b494662bebc418e3958bf5bdbee Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Wed, 29 Jan 2003 00:56:17 +0000 Subject: [PATCH] pickle: Comment repair. pickletools: Import decode_long from pickle instead of duplicating it. --- Lib/pickle.py | 13 +++++++++---- Lib/pickletools.py | 25 ++----------------------- 2 files changed, 11 insertions(+), 27 deletions(-) diff --git a/Lib/pickle.py b/Lib/pickle.py index b9bafce964b..863702dc9f1 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 b3c708d1d05..183db1022b3 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.