From 57f59e600dc31dbe618223918c866db759351ddf Mon Sep 17 00:00:00 2001 From: KV Date: Wed, 22 May 2024 02:22:42 +0200 Subject: [PATCH] Look-up mated connectors before mate processing The code processing mates used a mix of repeated connector look-ups and local connector variables, and one variable was used before it was assigned the correct value. This error was detected when investigating the #355 bug report. The local connector variables are now both assigned initially when processing each mate, and used instead of repeated connector look-ups. --- src/wireviz/Harness.py | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/wireviz/Harness.py b/src/wireviz/Harness.py index 30468a6a..51287a2f 100644 --- a/src/wireviz/Harness.py +++ b/src/wireviz/Harness.py @@ -595,6 +595,7 @@ def typecheck(name: str, value: Any, expect: type) -> None: typecheck("tweak.append", self.tweak.append, str) dot.body.append(self.tweak.append) + # TODO: All code below until "return dot" must be moved above all tweak processing! for mate in self.mates: if mate.shape[0] == "<" and mate.shape[-1] == ">": dir = "both" @@ -613,29 +614,18 @@ def typecheck(name: str, value: Any, expect: type) -> None: raise Exception(f"{mate} is an unknown mate") from_connector = self.connectors[mate.from_name] - if ( - isinstance(mate, MatePin) - and self.connectors[mate.from_name].style != "simple" - ): + to_connector = self.connectors[mate.to_name] + if isinstance(mate, MatePin) and from_connector.style != "simple": from_pin_index = from_connector.pins.index(mate.from_pin) from_port_str = f":p{from_pin_index+1}r" else: # MateComponent or style == 'simple' from_port_str = "" - if ( - isinstance(mate, MatePin) - and self.connectors[mate.to_name].style != "simple" - ): + if isinstance(mate, MatePin) and to_connector.style != "simple": to_pin_index = to_connector.pins.index(mate.to_pin) - to_port_str = ( - f":p{to_pin_index+1}l" - if isinstance(mate, MatePin) - and self.connectors[mate.to_name].style != "simple" - else "" - ) + to_port_str = f":p{to_pin_index+1}l" else: # MateComponent or style == 'simple' to_port_str = "" code_from = f"{mate.from_name}{from_port_str}:e" - to_connector = self.connectors[mate.to_name] code_to = f"{mate.to_name}{to_port_str}:w" dot.attr("edge", color=color, style="dashed", dir=dir)