from __future__ import annotations import pathlib import tomllib import unittest ROOT = pathlib.Path(__file__).resolve().parents[1] class PolicyModuleContractTests(unittest.TestCase): def test_policy_package_does_not_hard_require_access(self) -> None: project = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))["project"] dependencies = tuple(project["dependencies"]) self.assertTrue(any(item.startswith("govoplan-core>=") for item in dependencies)) self.assertFalse(any(item.startswith("govoplan-access") for item in dependencies)) def test_policy_source_does_not_import_access_implementation(self) -> None: offenders: list[str] = [] for path in (ROOT / "src" / "govoplan_policy").rglob("*.py"): source = path.read_text(encoding="utf-8") if "govoplan_access" in source: offenders.append(str(path.relative_to(ROOT))) self.assertEqual([], offenders) if __name__ == "__main__": unittest.main()