from .common import LcrConnException, Circuit, JointKind, to_human_readable_value def _get_joint_kind_symbol(joint_kind: JointKind) -> str: match joint_kind: case JointKind.SERIES: return "S" case JointKind.PARALLEL: return "P" def _illustrate_circuit(circuit: Circuit) -> None: match circuit.len_devices(): case 1: dev1 = to_human_readable_value(circuit.device_value) print(f"{dev1}") case 2: dev1 = to_human_readable_value(circuit.device_value) joint1 = circuit.joints[0] j1 = _get_joint_kind_symbol(joint1.joint_kind) dev2 = to_human_readable_value(joint1.device_value) print(f"[{j1}] ┬ {dev1}") print(f" └ {dev2}") case 3: dev1 = to_human_readable_value(circuit.device_value) joint1 = circuit.joints[0] j1 = _get_joint_kind_symbol(joint1.joint_kind) dev2 = to_human_readable_value(joint1.device_value) joint2 = circuit.joints[1] j2 = _get_joint_kind_symbol(joint2.joint_kind) dev3 = to_human_readable_value(joint2.device_value) print(f"[{j2}] ┬ [{j1}] ┬ {dev1}") print(f" │ └ {dev2}") print(f" └ {dev3}") case _: raise LcrConnException("Circuit too complex to illustrate")