AgentnessBench / tests /web /test_import_safety.py
irregular6612's picture
refactor: restructure proteus into game/web subpackages
426093b
Raw
History Blame Contribute Delete
1.5 kB
"""Importing the web layer must not pull matplotlib or a provider SDK (offline
invariant — same discipline as tests/viz/test_import_safety.py)."""
from __future__ import annotations
import sys
def test_importing_web_pulls_no_heavy_or_network_deps():
# Drop any pre-loaded matplotlib and proteus.web.local so we observe a fresh
# import graph even when earlier tests have cached these modules.
for mod in list(sys.modules):
if mod == "matplotlib" or mod.startswith("matplotlib."):
del sys.modules[mod]
for mod in list(sys.modules):
if mod == "proteus.web.local" or mod.startswith("proteus.web.local."):
del sys.modules[mod]
import proteus.web.local # noqa: F401
import proteus.web.local.server # noqa: F401
assert "matplotlib" not in sys.modules, (
"importing proteus.web.local pulled in matplotlib; keep the web layer offline"
)
# provider SDKs are never imported by the web layer
for sdk in ("openai", "anthropic", "google", "ollama"):
assert sdk not in sys.modules, (
f"importing proteus.web.local pulled in provider SDK {sdk!r}"
)
# spectate routes import providers LAZILY (inside the handler), so a plain
# import of the web layer must still pull no provider SDK.
import proteus.web.local.server # noqa: F401 (re-exercised after the clear above)
for sdk in ("openai", "anthropic", "google", "ollama"):
assert sdk not in sys.modules