diff options
Diffstat (limited to 'Lib/pickle.py')
-rw-r--r-- | Lib/pickle.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/Lib/pickle.py b/Lib/pickle.py index d10ac776..9e65368 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -23,8 +23,6 @@ Misc variables: """ -__version__ = "$Revision$" # Code version - from types import FunctionType, BuiltinFunctionType from copyreg import dispatch_table from copyreg import _extension_registry, _inverted_registry, _extension_cache @@ -299,8 +297,8 @@ class _Pickler: f(self, obj) # Call unbound method with explicit self return - # Check copyreg.dispatch_table - reduce = dispatch_table.get(t) + # Check private dispatch table if any, or else copyreg.dispatch_table + reduce = getattr(self, 'dispatch_table', dispatch_table).get(t) if reduce: rv = reduce(obj) else: @@ -377,7 +375,7 @@ class _Pickler: # allowing protocol 0 and 1 to work normally. For this to # work, the function returned by __reduce__ should be # called __newobj__, and its first argument should be a - # new-style class. The implementation for __newobj__ + # class. The implementation for __newobj__ # should be as follows, although pickle has no way to # verify this: # @@ -440,6 +438,14 @@ class _Pickler: self.write(NONE) dispatch[type(None)] = save_none + def save_ellipsis(self, obj): + self.save_global(Ellipsis, 'Ellipsis') + dispatch[type(Ellipsis)] = save_ellipsis + + def save_notimplemented(self, obj): + self.save_global(NotImplemented, 'NotImplemented') + dispatch[type(NotImplemented)] = save_notimplemented + def save_bool(self, obj): if self.proto >= 2: self.write(obj and NEWTRUE or NEWFALSE) @@ -1332,7 +1338,7 @@ def _test(): return doctest.testmod() if __name__ == "__main__": - import sys, argparse + import argparse parser = argparse.ArgumentParser( description='display contents of the pickle files') parser.add_argument( |