perf(1.1): lazy topology.generate re-export (C2)
topology/__init__ eagerly imported generator -> allocator -> repository -> the full SQLModel ORM. Defer via PEP 562 __getattr__ so importing the package doesn't drag the DB layer into DB-less workers. Public API (from decnet.topology import generate) unchanged. Guard test locks it in.
This commit is contained in:
@@ -7,7 +7,6 @@ is marked as the DMZ (Internet-facing). Persisted via the repo pattern;
|
||||
deployed via :mod:`decnet.engine.deployer`.
|
||||
"""
|
||||
from decnet.topology.config import TopologyConfig, GeneratedTopology
|
||||
from decnet.topology.generator import generate
|
||||
from decnet.topology.status import (
|
||||
TopologyStatus,
|
||||
assert_transition,
|
||||
@@ -22,3 +21,14 @@ __all__ = [
|
||||
"assert_transition",
|
||||
"TopologyStatusError",
|
||||
]
|
||||
|
||||
|
||||
def __getattr__(name: str):
|
||||
# ponytail: lazy re-export — `generate` pulls generator→allocator→repository→the
|
||||
# full SQLModel ORM (~38MB). Defer it so importing this package (which every worker
|
||||
# does transitively via the CLI) doesn't drag the DB layer into DB-less workers.
|
||||
if name == "generate":
|
||||
from decnet.topology.generator import generate
|
||||
|
||||
return generate
|
||||
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
||||
|
||||
Reference in New Issue
Block a user