|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
|
display the reference paths for objects in ``dill.types`` or a .pkl file |
|
|
|
|
|
Notes: |
|
|
the generated image is useful in showing the pointer references in |
|
|
objects that are or can be pickled. Any object in ``dill.objects`` |
|
|
listed in ``dill.load_types(picklable=True, unpicklable=True)`` works. |
|
|
|
|
|
Examples:: |
|
|
|
|
|
$ get_objgraph ArrayType |
|
|
Image generated as ArrayType.png |
|
|
""" |
|
|
|
|
|
import dill as pickle |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 file or type name (e.g. 'IntType')") |
|
|
msg = "\n" |
|
|
for objtype in list(objects.keys())[:40]: |
|
|
msg += objtype + ', ' |
|
|
print (msg + "...") |
|
|
else: |
|
|
objtype = str(sys.argv[-1]) |
|
|
try: |
|
|
obj = objects[objtype] |
|
|
except KeyError: |
|
|
obj = pickle.load(open(objtype,'rb')) |
|
|
import os |
|
|
objtype = os.path.splitext(objtype)[0] |
|
|
try: |
|
|
import objgraph |
|
|
objgraph.show_refs(obj, filename=objtype+'.png') |
|
|
except ImportError: |
|
|
print ("Please install 'objgraph' to view object graphs") |
|
|
|
|
|
|
|
|
|
|
|
|