Source code for semi_cr.core.lab.station.graphing.context

from dataclasses import dataclass, field
from typing import Literal
import networkx as nx

from semi_cr.core.lab.station.base import ConfigBundle
from semi_cr.core.lab.station.graphing.static_builder import build_wiring_graph
from semi_cr.core.lab.station.graphing.view import graph_view

[docs] @dataclass class ConfigContext: """Builds a graph from a ConfigBundle""" config: ConfigBundle graph: nx.MultiDiGraph = field(init=False) def __post_init__(self) -> None: self.graph = self.build_graph()
[docs] def build_graph(self) -> nx.MultiDiGraph: return build_wiring_graph(self.config.config)
[docs] def view_graph( self, what: Literal["nodes", "edges", "both"] = "both", include_attrs: bool = True, ): return graph_view(self.graph, what=what, include_attrs=include_attrs)