Source code for help2man.external.__main__

#!/usr/bin/env python
"""This module can be called by
`python -m <https://docs.python.org/3/library/__main__.html>`_
to check if any fake module imports any variable don't owned by any true module.
"""
import os
from importlib import import_module
from pathlib import Path
from typing import Any, NoReturn, _SpecialForm

from setuptools import find_packages


[docs]def filter_var(variables: dict[str, Any]) -> dict[str, Any]: """Filter var. :param variables: :type variables: dict[str, Any] :rtype: dict[str, Any] """ return dict( filter( lambda x: not x[0].startswith("_") and not isinstance(x[1], _SpecialForm), variables.items(), ) )
[docs]def get_wrong_varnames(file: str, fake_vars: dict[str, Any]) -> list[str]: """Get wrong varnames. :param file: :type file: str :param fake_vars: :type fake_vars: dict[str, Any] :rtype: list[str] """ true_vars = vars(import_module(Path(file).absolute().parent.name)) true_vars = filter_var(true_vars) fake_vars = filter_var(fake_vars) wrong_varnames = [] for varname in fake_vars: if varname not in true_vars: wrong_varnames += [varname] return wrong_varnames
[docs]def main_once(file: str, fake_vars: dict[str, Any]) -> NoReturn: """``python -m translate_shell.external.XXX`` call this function. :param file: :type file: str :param fake_vars: :type fake_vars: dict[str, Any] :rtype: NoReturn """ exit(print_wrong_varnames(file, fake_vars, ""))
[docs]def main() -> NoReturn: """``python -m translate_shell.external`` call this function. :rtype: NoReturn """ wrong_vars_number = 0 for name in find_packages(os.path.dirname(__file__)): fake_name = "translate_shell.external." + name print(fake_name, end=": ") module = import_module(fake_name + ".__main__") file: str = module.__file__ # type: ignore wrong_vars_number += print_wrong_varnames(file, vars(module)) exit(wrong_vars_number)
if __name__ == "__main__": main()