import os import subprocess import sys HEAVY = ["aiogram", "pyrogram", "fastapi", "google.genai"] SERVICES = {"api": (["api.app"], {"fastapi"})} PROBE = """ import importlib, sys for module in sys.argv[1].split(","): importlib.import_module(module) print(" ".join(name for name in sys.argv[2:] if name in sys.modules)) """ ENV = dict(os.environ) def loaded(modules: list[str]) -> tuple[set[str], str]: result = subprocess.run( # noqa: S603 [sys.executable, "-c", PROBE, ",".join(modules), *HEAVY], capture_output=True, text=True, cwd="src", env=ENV, check=False, ) error = (result.stderr.strip().splitlines() or ["exit code"])[-1] return set(result.stdout.split()) & set(HEAVY), error if result.returncode else "" def main() -> int: failed = False for service, (modules, allowed) in SERVICES.items(): found, error = loaded(modules) extra = sorted(found - allowed) status = error or ("imports " + ", ".join(extra) if extra else "") print(f"{service:10s} {'FAIL: ' + status if status else 'ok'}") failed |= bool(status) return int(failed) if __name__ == "__main__": sys.exit(main())