meshai/work/tests/test_import_smoke.py
Matt Johnson 1ffde64c3c chore(central-ripout 2d-i): relocate the fire engine + renderer out of central/
Moves the last two live files out of the retired-Central folder. central/ is
now EMPTY and deleted entirely (incl. __init__.py).

- fire-fusion engine (ingest_hotspot_pixel + the growth/cluster/spotting
  engine) → env/fire_fusion.py, next to its sole consumer env/firms.py.
- wildfire text renderer (_render + its live helpers) → env/fire_render.py.

THE COUPLING RESOLVED: firms_handler._handle_pass_boundary had a LAZY import
inside a function body — `from meshai.central.wfigs_handler import _render` —
sitting on the live FIRMS fire-growth path. It is now a normal top-of-file
import (`from meshai.env.fire_render import _render`), visible and greppable.

PURE MOVE — no behavior change:
- The parity oracle (test_fire_refactor.py) PASSES UNCHANGED (only its import
  paths updated) — proving the fire wire output is byte-for-byte identical
  before and after. Fire alerts say exactly what they said.
- handle_firms / handle_wfigs (dead entrypoints, only caller was the deleted
  consumer.py) were KEPT and moved rather than dropped — the wording-cleanup
  PR removes them deliberately. "When unsure, keep."
- fire_render.py's geo-helper imports still point at central_normalizer — that
  file's split is a SEPARATE PR; carried the imports along, did not touch it.

Consumers + test import paths rewired. Full suite: 2059 passed, 0 failed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 22:27:08 +00:00

44 lines
1.8 KiB
Python

"""Phase-0 import smoke test: every meshai/central/*_handler.py module
must be importable without error after the budget shim refactor.
This guards against a broken import chain (e.g. circular imports or a bad
re-export in the shim) that would silently break all handlers.
chore/ripout-2d: the last two central/ handlers (firms_handler.py,
wfigs_handler.py) relocated to meshai/env/fire_fusion.py + fire_render.py
(central/ has no *_handler.py left -- the fusion engine's only consumer is
the native env/firms.py adapter). The glob below now also covers those two
explicitly so this guard still exercises the relocated live import chain;
it keeps globbing central/ too in case a future handler lands back there.
"""
import glob
import importlib
import os
def _handler_modules():
"""Collect handler-ish module names: meshai.central.*_handler (glob) +
the fire-fusion modules relocated out of central/ during the ripout."""
central_pattern = os.path.join(
os.path.dirname(__file__),
"..", "meshai", "central", "*_handler.py",
)
central_paths = sorted(glob.glob(central_pattern))
modules = [f"meshai.central.{os.path.basename(p)[:-3]}" for p in central_paths]
modules += ["meshai.env.fire_fusion", "meshai.env.fire_render"]
assert modules, "No handler-ish modules found — check the glob path"
return modules
def test_all_central_handlers_importable():
"""Each *_handler module must import cleanly (no ImportError / circular deps)."""
failed = []
for mod_name in _handler_modules():
try:
importlib.import_module(mod_name)
except ImportError as exc:
failed.append(f"{mod_name}: {exc}")
assert not failed, (
"The following handler modules raised ImportError:\n" + "\n".join(failed)
)