#!/usr/bin/env python # # Author: Mike McKerns (mmckerns @caltech and @uqfoundation) # Copyright (c) 2008-2015 California Institute of Technology. # License: 3-clause BSD. The full license text is available at: # - http://trac.mystic.cacr.caltech.edu/project/pathos/browser/dill/LICENSE """ all Python Standard Library object types (currently: CH 1-15 @ 2.7) and some other common object types (i.e. numpy.ndarray) to load more objects and types, use dill.load_types() """ from __future__ import absolute_import # non-local import of dill.objects from dill import objects for _type in objects.keys(): exec("%s = type(objects['%s'])" % (_type,_type)) del objects try: del _type except NameError: pass del absolute_import
""" #XXX: useful if could read .pkl file and generate the graph... ? import dill as pickle #pickle.debug.trace(True) #import pickle # get all objects for testing from dill import load_types load_types(pickleable=True, unpickleable=True) from dill import objects if __name__ == "__main__": import sys if len(sys.argv) != 2: print("Please provide exactly one type name (e.g. 'IntType')") msg = "\n" for objtype in list(objects.keys())[:40]: msg += objtype + ', ' print(msg + "...") else: objtype = str(sys.argv[-1]) obj = objects[objtype] try: import objgraph objgraph.show_refs(obj, filename=objtype + '.png') except ImportError: print("Please install 'objgraph' to view object graphs") # EOF
def test_objects(): for member in objects.keys(): #pickles(member, exact=True) pickles(member, exact=False)
special['MethodType'] = _method = _class()._method special['UnboundMethodType'] = _class._method objects.update(special) def pickles(name, exact=False): """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) print("weak: %s %s" % (name, type(obj))) else: assert type(obj) == type(pik) except Exception: print("fails: %s %s" % (name, type(obj))) return if __name__ == '__main__': for member in objects.keys(): #pickles(member, exact=True) pickles(member, exact=False) # EOF
special['MethodType'] = _method = _class()._method special['UnboundMethodType'] = _class._method objects.update(special) def pickles(name, exact=False): """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) print ("weak: %s %s" % (name, type(obj))) else: assert type(obj) == type(pik) except Exception: print ("fails: %s %s" % (name, type(obj))) return if __name__ == '__main__': for member in objects.keys(): #pickles(member, exact=True) pickles(member, exact=False) # EOF
#XXX: useful if could read .pkl file and generate the graph... ? import dill as pickle #pickle.debug.trace(True) #import pickle # get all objects for testing from dill import load_types load_types(pickleable=True,unpickleable=True) from dill import objects if __name__ == "__main__": import sys if len(sys.argv) != 2: print ("Please provide exactly one type name (e.g. 'IntType')") msg = "\n" for objtype in list(objects.keys())[:40]: msg += objtype + ', ' print (msg + "...") else: objtype = str(sys.argv[-1]) obj = objects[objtype] try: import objgraph objgraph.show_refs(obj, filename=objtype+'.png') except ImportError: print ("Please install 'objgraph' to view object graphs") # EOF