"""Cached access to bundled SVG node symbols.""" from __future__ import annotations import os from PyQt6.QtSvg import QSvgRenderer _NODES_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), "resources", "nodes") _cache: dict[str, QSvgRenderer] = {} def nodes_dir() -> str: return _NODES_DIR def renderer(svg_name: str) -> QSvgRenderer | None: """Return a cached, valid QSvgRenderer for ``svg_name`` or None.""" if not svg_name: return None r = _cache.get(svg_name) if r is None: path = os.path.join(_NODES_DIR, svg_name) if not os.path.exists(path): return None r = QSvgRenderer(path) if not r.isValid(): return None _cache[svg_name] = r return r