From 8be9a116175fbc5cea9d93e5e998af0df4cee23b Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 25 Apr 1997 19:52:29 +0000 Subject: [PATCH] Restore two features of the original 1.4 pickle: - which_module() search __main__ last; - load_inst() no longer checks that the classname really refers to a class. --- Lib/pickle.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Lib/pickle.py b/Lib/pickle.py index 29557e36855..bc01c905a4c 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -128,7 +128,7 @@ the old value, not the modified one. (XXX There are two problems here: I have no answers. Garbage Collection may also become a problem here.) """ -__version__ = "1.7" # Code version +__version__ = "1.8" # Code version from types import * from copy_reg import * @@ -538,7 +538,8 @@ def whichmodule(cls, clsname): import sys for name, module in sys.modules.items(): - if hasattr(module, clsname) and \ + if name != '__main__' and \ + hasattr(module, clsname) and \ getattr(module, clsname) is cls: break else: @@ -677,9 +678,9 @@ class Unpickler: module = self.readline()[:-1] name = self.readline()[:-1] klass = self.find_class(module, name) - if (type(klass) is not ClassType): - raise SystemError, "Imported object %s from module %s is " \ - "not a class" % (name, module) +## if (type(klass) is not ClassType): +## raise SystemError, "Imported object %s from module %s is " \ +## "not a class" % (name, module) value = apply(klass, args) self.append(value)