| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | """ |
| | 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) |
| |
|