from __future__ import annotations import importlib from pathlib import Path REPO_ROOT = Path(__file__).resolve().parents[2] PKG_ROOT = REPO_ROOT / "sync_state_machine" def _module_name(py_file: Path) -> str: rel = py_file.relative_to(REPO_ROOT).with_suffix("") return ".".join(rel.parts) def test_sync_state_machine_module_import_surface() -> None: py_files = sorted(PKG_ROOT.rglob("*.py")) assert py_files, "No python modules found under sync_state_machine" excluded_names = {"__main__"} excluded_parts = {"tests", "__pycache__"} imported = 0 for py_file in py_files: if any(part in excluded_parts for part in py_file.parts): continue if py_file.stem in excluded_names: continue module_name = _module_name(py_file) importlib.import_module(module_name) imported += 1 assert imported >= 20