def moduleinfo(module, expand=False): """Returns classes, functions and module level variables of a module. """ info = {'doc': getdoc(module), 'obj': module, 'classes': {}, 'funcs': {}, 'vars': {}} pred = lambda x: not inspect.ismodule(x) for name, member in inspect.getmembers(module, pred): if name.startswith('__'): continue try: if not utils.issamesource([module, member]): continue except TypeError: pass if inspect.isclass(member): info['classes'][name] = classinfo(member) elif inspect.isfunction(member): info['funcs'][name] = funcinfo(member) else: if not inspect.isbuiltin(member): info['vars'][name] = varinfo(member) return info
def classinfo(cls): """Return information about class cls in dict format.""" info = {'obj': cls, 'bases': cls.__bases__, 'methods': {}, 'vars': {}} for name, member in inspect.getmembers(cls): if name.startswith('__'): continue try: if not utils.issamesource([cls, member]): continue except TypeError: pass if inspect.ismethod(member): info['methods'][name] = methodinfo(member) else: if not inspect.isbuiltin(member): info['vars'][name] = memberinfo(member) return info