diff options
author | Biswakalyan Bhuyan <biswa@surgot.in> | 2022-09-24 12:21:56 +0530 |
---|---|---|
committer | Biswakalyan Bhuyan <biswa@surgot.in> | 2022-09-24 12:21:56 +0530 |
commit | 86f99da8d08e1f2e290d8ebfd5adb016faff7bac (patch) | |
tree | 8f121a2aaa187d8266e20df23ad36262ab051866 /get_objgraph | |
download | bin-86f99da8d08e1f2e290d8ebfd5adb016faff7bac.tar.gz bin-86f99da8d08e1f2e290d8ebfd5adb016faff7bac.tar.bz2 bin-86f99da8d08e1f2e290d8ebfd5adb016faff7bac.zip |
script's
Diffstat (limited to 'get_objgraph')
-rwxr-xr-x | get_objgraph | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/get_objgraph b/get_objgraph new file mode 100755 index 0000000..be3da53 --- /dev/null +++ b/get_objgraph @@ -0,0 +1,54 @@ +#!/usr/bin/python +# +# Author: Mike McKerns (mmckerns @caltech and @uqfoundation) +# Copyright (c) 2008-2016 California Institute of Technology. +# Copyright (c) 2016-2022 The Uncertainty Quantification Foundation. +# License: 3-clause BSD. The full license text is available at: +# - https://github.com/uqfoundation/dill/blob/master/LICENSE +""" +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 FrameType + Image generated as FrameType.png +""" + +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 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") + + +# EOF |