| """Helper to provide extensibility for pickle/cPickle.""" | |
| dispatch_table = {} | |
| safe_constructors = {} | |
| def pickle(ob_type, pickle_function, constructor_ob = None): | |
| dispatch_table[ob_type] = pickle_function | |
| if constructor_ob is not None: | |
| constructor(constructor_ob) | |
| def constructor(object): | |
| safe_constructors[object] = 1 | |
| # Example: provide pickling support for complex numbers. | |
| def pickle_complex(c): | |
| return complex, (c.real, c.imag) | |
| pickle(type(1j), pickle_complex, complex) | |