summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/pickle.py14
1 files changed, 6 insertions, 8 deletions
diff --git a/Lib/pickle.py b/Lib/pickle.py
index a22580b..8a07925 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -769,6 +769,9 @@ class Unpickler:
pass
if not instantiated:
try:
+ if not hasattr(klass, '__safe_for_unpickling__'):
+ raise UnpicklingError('%s is not safe for unpickling' %
+ klass)
value = apply(klass, args)
except TypeError, err:
raise TypeError, "in constructor for %s: %s" % (
@@ -807,14 +810,9 @@ class Unpickler:
dispatch[GLOBAL] = load_global
def find_class(self, module, name):
- try:
- __import__(module)
- mod = sys.modules[module]
- klass = getattr(mod, name)
- except (ImportError, KeyError, AttributeError):
- raise SystemError, \
- "Failed to import class %s from module %s" % \
- (name, module)
+ __import__(module)
+ mod = sys.modules[module]
+ klass = getattr(mod, name)
return klass
def load_reduce(self):