diff --git a/wake_printers/c3.py b/wake_printers/c3.py index 07d09e485..2bac06084 100644 --- a/wake_printers/c3.py +++ b/wake_printers/c3.py @@ -1,11 +1,14 @@ from __future__ import annotations + import networkx as nx import rich_click as click +from rich import print +from rich.tree import Tree + import wake.ir as ir import wake.ir.types as types -from rich import print from wake.printers import Printer, printer -from rich.tree import Tree + # C3 linearization printer class C3Printer(Printer): @@ -17,38 +20,54 @@ def print(self) -> None: def visit_contract_definition(self, node: ir.ContractDefinition) -> None: print(f"[italic]C3 linearization ordered[/italic]") - tree = Tree('.') + tree = Tree(".") # Using Rich Tree strcutrue to print the C3 linearization def add_contract_to_tree(parent_node, n, index): contract_name = n.canonical_name - if not self._interfaces and contract_name.startswith('I'): + if not self._interfaces and contract_name.startswith("I"): return - - contract_node = parent_node.add(f"{index:2d}.[bold][link={self.generate_link(n)}]{contract_name}[/link][/bold]") + contract_node = parent_node.add( + f"{index:2d}.[bold][link={self.generate_link(n)}]{contract_name}[/link][/bold]" + ) # If verobose (-v/--verbose), add inheritance and constructor info if self._verbose: # Inheritance - base contracts if n.base_contracts: - base_contracts_str = ", ".join(f"[blue]{x.base_name.name}[/blue]" for x in n.base_contracts) - contract_node.add(f"[italic]Base Contracts:[/italic] {base_contracts_str}") + base_contracts_str = ", ".join( + f"[blue]{x.base_name.name}[/blue]" for x in n.base_contracts + ) + contract_node.add( + f"[italic]Base Contracts:[/italic] {base_contracts_str}" + ) # Constructor and unherited constructors for x in n.functions: if x.kind == "constructor": - constructor_str = f"[green]{x.canonical_name.split('.')[1]}[/green]" + constructor_str = ( + f"[green]{x.canonical_name.split('.')[1]}[/green]" + ) if x.modifiers: - modifiers_str = ", ".join(f"[green]{op.source}[/green]" for op in x.modifiers if op.kind == "baseConstructorSpecifier") + modifiers_str = ", ".join( + f"[green]{op.source}[/green]" + for op in x.modifiers + if op.kind == "baseConstructorSpecifier" + ) constructor_str += f", {modifiers_str}" - contract_node.add(f"[italic]Constructor:[/italic] {constructor_str}") + contract_node.add( + f"[italic]Constructor:[/italic] {constructor_str}" + ) return contract_node + # Counter for more readable output counter = 1 for n in node.linearized_base_contracts: add_contract_to_tree(tree, n, counter) - counter += 1 if self._interfaces or not n.canonical_name.startswith('I') else 0 + counter += ( + 1 if self._interfaces or not n.canonical_name.startswith("I") else 0 + ) print(tree) @@ -70,7 +89,3 @@ def add_contract_to_tree(parent_node, n, index): def cli(self, interfaces: bool, verbose: bool) -> None: self._interfaces = interfaces self._verbose = verbose - pass - - -