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)