"""Route (d): the remaining seven vector subjects. Split from ``vector.py`` to stay under the 250-line file cap. Together the two modules cover all twelve bake-off subjects, which is what makes this cell's number comparable to route (a)'s -- a cell measured on five easy subjects would not be. Each shape carries a distinguishing feature for the same reason the procedural route does: geometric correctness alone reads as a placeholder. """ from __future__ import annotations from typing import Final from python_pkg.artgate.routes.vector import PALETTE, STROKE, register EXTRA_SHAPES: Final[dict[str, str]] = { "scroll": ( f'' f'' f'' f'' f'' f'' f'' ), "book": ( f'' f'' f'' f'' ), "bone": ( f'' f'' f'' f'' f'' ), "bomb": ( f'" f'' f'' f'' f'' f'' ), "sword": ( f'' f'' f'' f'' f'' ), "ring": ( f'' f'' f'' f'' ), "meat": ( f'' f'' f'' f'' f'' ), } # Registering at import time keeps the dependency one-directional: vector.py # never imports this module, so there is no cycle and no lazy import. register(EXTRA_SHAPES)