fault.circuit_utils
module
Source code
def check_interface_is_subset(circuit1, circuit2):
"""
Checks that the interface of circuit1 is a subset of circuit2
Subset is defined as circuit2 contains all the ports of circuit1. Ports are
matched by name comparison, then the types are checked to see if one could
be converted to another.
"""
circuit1_port_names = circuit1.interface.ports.keys()
for name in circuit1_port_names:
if name not in circuit2.interface.ports:
raise ValueError(f"{circuit2} (circuit2) does not have port {name}")
circuit1_kind = type(type(getattr(circuit1, name)))
circuit2_kind = type(type(getattr(circuit2, name)))
circuit1_sub_circuit2 = issubclass(circuit1_kind, circuit2_kind)
circuit2_sub_circuit1 = issubclass(circuit2_kind, circuit1_kind)
# Check that the type of one could be converted to the other
if not (circuit1_sub_circuit2 or circuit2_sub_circuit1):
raise ValueError(f"Port {name} types don't match:"
f" Type0={circuit1_kind},"
f" Type1={circuit2_kind}")}
Functions
def check_interface_is_subset(circuit1, circuit2)
-
Checks that the interface of circuit1 is a subset of circuit2
Subset is defined as circuit2 contains all the ports of circuit1. Ports are matched by name comparison, then the types are checked to see if one could be converted to another.
Source code
def check_interface_is_subset(circuit1, circuit2): """ Checks that the interface of circuit1 is a subset of circuit2 Subset is defined as circuit2 contains all the ports of circuit1. Ports are matched by name comparison, then the types are checked to see if one could be converted to another. """ circuit1_port_names = circuit1.interface.ports.keys() for name in circuit1_port_names: if name not in circuit2.interface.ports: raise ValueError(f"{circuit2} (circuit2) does not have port {name}") circuit1_kind = type(type(getattr(circuit1, name))) circuit2_kind = type(type(getattr(circuit2, name))) circuit1_sub_circuit2 = issubclass(circuit1_kind, circuit2_kind) circuit2_sub_circuit1 = issubclass(circuit2_kind, circuit1_kind) # Check that the type of one could be converted to the other if not (circuit1_sub_circuit2 or circuit2_sub_circuit1): raise ValueError(f"Port {name} types don't match:" f" Type0={circuit1_kind}," f" Type1={circuit2_kind}")}