Recursively enumerate all members of root.

Similar to the Python library function os.path.walk.

Traverses the tree of Python objects starting with root, depth first. Parent-child relationships in the tree are defined by membership in modules or classes. The function visit is called with arguments (path, parent, children) for each module or class parent found in the tree of python objects starting with root. path is a string containing the name with which parent is reachable from the current context. For example, if root is a local class called X which contains a class Y, visit will be called with ('Y', X.Y, children)).

If root is not a module or class, visit is never called. traverse never descends into built-in modules.

children, a list of (name, object) pairs are determined by inspect.getmembers. To avoid visiting parts of the tree, children can be modified in place, using del or slice assignment.

Cycles (determined by reference equality, is) stop the traversal. A stack of objects is kept to find cycles. Objects forming cycles may appear in children, but visit will not be called with any object as parent which is already in the stack.

Traversing system modules can take a long time, it is advisable to pass a visit callable which denylists such modules.

root A python object with which to start the traversal.
filters A list of callables. Each taking (path, parent, children) as arguments, and returns a list of accepted children.
accumulator a DocGenerator to accumulate the results.
root_name The short-name of the root module.