Source code for simvx.core.scene_io

"""Scene I/O: parso-based round-trip parsing and editing of scene `.py` files.

Tier 1 (`source_tree`) provides the lossless parse/dump primitive; Tier 2
(`edits`) provides prefix-preserving editing primitives that operate on the
parso tree returned by Tier 1. Tier 3a (`emitter`, `detection`) provides
greenfield Python emission for live node trees and lightweight scene-file
detection.
"""

from . import edits
from .detection import (
    AmbiguousSceneError,
    has_procedural_construction,
    is_scene_path,
    primary_node_class_from_source,
)
from .emitter import (
    emit_node_construction,
    emit_scene,
    emit_value,
    iter_runtime_kwargs,
    structural_type_name,
)
from .loader import load_scene
from .scene_file import ImportSet, SceneClass, SceneFile
from .scene_module import NotASceneModuleError, SceneModule
from .source_tree import SourceTree, parse_snippet, parse_source
from .symbols import (
    ClassDefRef,
    UseSiteRef,
    find_class_definitions,
    find_class_uses,
    rename_class_in_source,
    rename_module_in_imports,
)

__all__ = [
    "AmbiguousSceneError",
    "ClassDefRef",
    "ImportSet",
    "NotASceneModuleError",
    "SceneClass",
    "SceneFile",
    "SceneModule",
    "SourceTree",
    "UseSiteRef",
    "edits",
    "emit_node_construction",
    "emit_scene",
    "emit_value",
    "find_class_definitions",
    "find_class_uses",
    "has_procedural_construction",
    "is_scene_path",
    "iter_runtime_kwargs",
    "load_scene",
    "parse_snippet",
    "parse_source",
    "primary_node_class_from_source",
    "rename_class_in_source",
    "rename_module_in_imports",
    "structural_type_name",
]