import sys
import types
visited = set()
def tree(parent, mod, indent = 0):
print '"%s" -> "%s" ; '%(parent, mod.__name__)
if mod in visited:
return
visited.add(mod)
for i in dir(mod):
obj = getattr(mod, i)
if isinstance(obj, types.ModuleType):
tree(mod.__name__, obj, indent + 1)
if __name__ == "__main__":
class Foo: pass
Foo.__name__ = "Top"
mod = __import__(sys.argv[1])
print "Digraph F {"
tree(Foo, mod)
print "}"