def getmembers(object, predicate=None):
    """Return all members of an object as (name, value) pairs sorted by name.
    Optionally, only return members that satisfy a given predicate."""
    results = []
    for key in dir(object):
        value = getattr(object, key)
        if not predicate or predicate(value):
            results.append((key, value))
    results.sort()
    return results
Return all members of an object as (name, value) pairs sorted by name.
    Optionally, only return members that satisfy a given predicate.
debugger/src/_pydev_imps/_pydev_inspect.py