blob: a629f7394b4737ed55fb35aea212382a6f05b40e [file] [log] [blame]
import inspect
from types import ModuleType
from typing import Callable, List, Tuple
def is_submodule(child: str, parent: str):
return parent in child
def find_functions(function_module: ModuleType) -> List[Tuple[str, Callable]]:
"""Function to determine the set of functions we want to build a graph from.
This iterates through the function module and grabs all function definitions.
:return: list of tuples of (func_name, function).
"""
def valid_fn(fn):
return (
inspect.isfunction(fn)
and not fn.__name__.startswith("_")
and is_submodule(fn.__module__, function_module.__name__)
)
return [f for f in inspect.getmembers(function_module, predicate=valid_fn)]