def test_propagate_flipped(self): class InterfaceWithFlippedSub(Component): signature = Signature({ "a": In(Signature({ "b": Out(Signature({ "c": Out(1) })), "d": In(Signature({ "e": Out(1) })), "f": Out(1) })) }) def __init__(self): super().__init__() self.g = Signature({"h": Out(1)}) ifsub = InterfaceWithFlippedSub() self.assertIsInstance(ifsub.a.b.signature, FlippedSignature) self.assertIsInstance(ifsub.a.d.signature, Signature) self.assertIsInstance(ifsub.signature.members["a"].signature. members["b"].signature, FlippedSignature) self.assertIsInstance(ifsub.signature.members["a"].signature. members["d"].signature, Signature) self.assertEqual(ifsub.a.signature.members["f"].flow, In) self.assertEqual(ifsub.g.members["h"].flow, Out)