@@ -102,45 +102,17 @@ def print_deps(bricks: dict, import_data: dict, options: dict):
102102 output .save (table , options , "deps" )
103103
104104
105- def without (key : str , bricks : Set [str ]) -> Set [str ]:
106- return {b for b in bricks if b != key }
107-
108-
109- def sorted_usings (usings : Set [str ], bases : Set [str ], components : Set [str ]) -> List [str ]:
110- usings_bases = sorted ({b for b in usings if b in bases })
111- usings_components = sorted ({c for c in usings if c in components })
112-
113- return usings_components + usings_bases
114-
115-
116- def sorted_used_by (
117- brick : str , bases : Set [str ], components : Set [str ], import_data : dict
118- ) -> List [str ]:
119- brick_used_by = without (brick , {k for k , v in import_data .items () if brick in v })
120-
121- return sorted_usings (brick_used_by , bases , components )
122-
123-
124- def sorted_uses (
125- brick : str , bases : Set [str ], components : Set [str ], import_data : dict
126- ) -> List [str ]:
127- brick_uses = without (brick , {b for b in import_data [brick ]})
128-
129- return sorted_usings (brick_uses , bases , components )
130-
131-
132105def calculate_tag (brick : str , bases : Set [str ]) -> str :
133106 return "base" if brick in bases else "comp"
134107
135108
136- def print_brick_deps (brick : str , bricks : dict , import_data : dict , options : dict ):
109+ def print_brick_deps (brick : str , bricks : dict , brick_deps : dict , options : dict ):
137110 bases = bricks ["bases" ]
138- components = bricks ["components" ]
139111
140112 save = options .get ("save" , False )
141113
142- brick_used_by = sorted_used_by ( brick , bases , components , import_data )
143- brick_uses = sorted_uses ( brick , bases , components , import_data )
114+ brick_used_by = brick_deps [ "used_by" ]
115+ brick_uses = brick_deps [ "uses" ]
144116
145117 tag = calculate_tag (brick , bases )
146118
@@ -170,3 +142,24 @@ def print_brick_deps(brick: str, bricks: dict, import_data: dict, options: dict)
170142
171143 if save :
172144 output .save (table , options , f"deps_{ brick } " )
145+
146+
147+ def print_brick_with_circular_deps (brick : str , deps : Set [str ], bricks : dict ) -> None :
148+ bases = bricks ["bases" ]
149+
150+ console = Console (theme = theme .poly_theme )
151+
152+ tag = calculate_tag (brick , bases )
153+
154+ with_tags = [f"[{ calculate_tag (name , bases )} ]{ name } " for name in sorted (deps )]
155+ others = "[data],[/] " .join (with_tags )
156+
157+ prefix = ":information:"
158+ message = f"[{ tag } ]{ brick } [/] [data]is used by[/] { others } [data]and is also uses[/] { others } [data].[/]"
159+
160+ console .print (f"{ prefix } { message } " , overflow = "ellipsis" )
161+
162+
163+ def print_bricks_with_circular_deps (circular_bricks : dict , bricks : dict ) -> None :
164+ for brick , deps in circular_bricks .items ():
165+ print_brick_with_circular_deps (brick , deps , bricks )
0 commit comments