From: Jeremy Hylton Date: Thu, 26 Jun 2003 23:20:20 +0000 (+0000) Subject: Don't call constructor() from pickle(). X-Git-Tag: v2.3c1~321 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7567822838b915d3464fd87c54fdd574d67e7aa9;p=python Don't call constructor() from pickle(). The constructor() call only made sense when it registered the constructor as safe for unpickling. We should probably remove the module-global function, but need to worry about backwards compatibility. --- diff --git a/Lib/copy_reg.py b/Lib/copy_reg.py index 0477bcb541..97bef4100f 100644 --- a/Lib/copy_reg.py +++ b/Lib/copy_reg.py @@ -12,6 +12,7 @@ __all__ = ["pickle", "constructor", dispatch_table = {} def pickle(ob_type, pickle_function, constructor_ob=None): + # constructor_ob exists only for backwards compatibility. if type(ob_type) is _ClassType: raise TypeError("copy_reg is not intended for use with classes") @@ -19,10 +20,9 @@ def pickle(ob_type, pickle_function, constructor_ob=None): raise TypeError("reduction functions must be callable") dispatch_table[ob_type] = pickle_function - if constructor_ob is not None: - constructor(constructor_ob) - def constructor(object): + # XXX This function should be deprecated. It is a vestige of + # the old __safe_for_unpickling__ code. if not callable(object): raise TypeError("constructors must be callable")