Skip to content

get_api

Source code in library_analyzer/processing/api/_get_api.py
def get_api(package_name: str, root: Optional[Path] = None) -> API:
    if root is None:
        root = package_root(package_name)
    dist = distribution(package_name) or ""
    dist_version = distribution_version(dist) or ""
    files = package_files(root)

    api = API(dist, package_name, dist_version)
    documentation_parser = NumpyDocParser()
    callable_visitor = _AstVisitor(documentation_parser, api)
    walker = ASTWalker(callable_visitor)

    for file in files:
        posix_path = Path(file).as_posix()
        logging.info(f"Working on file {posix_path}")

        if _is_test_file(posix_path):
            logging.info("Skipping test file")
            continue

        with open(file, "r", encoding="utf-8") as f:
            source = f.read()
            walker.walk(
                astroid.parse(
                    source, module_name=__module_name(root, Path(file)), path=file
                )
            )

    return callable_visitor.api