| |
| |
| |
| |
| |
| |
| |
| """ |
| demonstrate dill's ability to pickle different python types |
| test pickling of all Python Standard Library objects (currently: CH 1-14 @ 2.7) |
| """ |
|
|
| import dill as pickle |
| pickle.settings['recurse'] = True |
| |
| |
|
|
| |
| from dill import load_types, objects, extend |
| load_types(pickleable=True,unpickleable=False) |
|
|
| |
| |
| |
|
|
| |
| class _class: |
| def _method(self): |
| pass |
|
|
| |
| special = {} |
| special['LambdaType'] = _lambda = lambda x: lambda y: x |
| special['MethodType'] = _method = _class()._method |
| special['UnboundMethodType'] = _class._method |
| objects.update(special) |
|
|
| def pickles(name, exact=False, verbose=True): |
| """quick check if object pickles with dill""" |
| obj = objects[name] |
| try: |
| pik = pickle.loads(pickle.dumps(obj)) |
| if exact: |
| try: |
| assert pik == obj |
| except AssertionError: |
| assert type(obj) == type(pik) |
| if verbose: print ("weak: %s %s" % (name, type(obj))) |
| else: |
| assert type(obj) == type(pik) |
| except Exception: |
| if verbose: print ("fails: %s %s" % (name, type(obj))) |
|
|
|
|
| def test_objects(verbose=True): |
| for member in objects.keys(): |
| |
| pickles(member, exact=False, verbose=verbose) |
|
|
| if __name__ == '__main__': |
| import warnings |
| warnings.simplefilter('ignore') |
| test_objects(verbose=False) |
|
|