Example #1
0
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
Example #2
0
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