@@ -42,7 +42,22 @@ def print_missing_deps(diff: Set[str], project_name: str) -> None:
4242
4343 missing = ", " .join (sorted (diff ))
4444
45- console .print (f":thinking_face: Cannot locate [data]{ missing } [/] in [proj]{ project_name } [/]" )
45+ console .print (
46+ f":thinking_face: Cannot locate [data]{ missing } [/] in [proj]{ project_name } [/]"
47+ )
48+
49+
50+ def print_excluded_deps (excluded : Set [str ], project_name : str ) -> None :
51+ if not excluded :
52+ return
53+
54+ console = Console (theme = theme .poly_theme )
55+
56+ skipped = ", " .join (sorted (excluded ))
57+
58+ console .print (
59+ f":information: Marked as excluded in [proj]{ project_name } [/]: [data]{ skipped } [/]"
60+ )
4661
4762
4863def print_unused_bricks (bricks : Set [str ], project_name : str ) -> None :
@@ -54,7 +69,25 @@ def print_unused_bricks(bricks: Set[str], project_name: str) -> None:
5469 unused = ", " .join (sorted (bricks ))
5570 verb = "Are" if len (bricks ) > 1 else "Is"
5671
57- console .print (f":mag_right: { verb } [comp]{ unused } [/] needed in [proj]{ project_name } [/]?" )
72+ console .print (
73+ f":mag_right: { verb } [comp]{ unused } [/] needed in [proj]{ project_name } [/]?"
74+ )
75+
76+
77+ def extract_collected_imports (
78+ ns : str , imports_in_bases : dict , imports_in_components : dict
79+ ) -> dict :
80+ brick_imports = {
81+ "bases" : grouping .extract_brick_imports (imports_in_bases , ns ),
82+ "components" : grouping .extract_brick_imports (imports_in_components , ns ),
83+ }
84+
85+ third_party_imports = {
86+ "bases" : libs .extract_third_party_imports (imports_in_bases , ns ),
87+ "components" : libs .extract_third_party_imports (imports_in_components , ns ),
88+ }
89+
90+ return {"brick_imports" : brick_imports , "third_party_imports" : third_party_imports }
5891
5992
6093def collect_all_imports (root : Path , ns : str , project_data : dict ) -> dict :
@@ -67,17 +100,39 @@ def collect_all_imports(root: Path, ns: str, project_data: dict) -> dict:
67100 all_imports_in_bases = imports .fetch_all_imports (bases_paths )
68101 all_imports_in_components = imports .fetch_all_imports (components_paths )
69102
70- brick_imports = {
71- "bases" : grouping .extract_brick_imports (all_imports_in_bases , ns ),
72- "components" : grouping .extract_brick_imports (all_imports_in_components , ns ),
73- }
103+ return extract_collected_imports (
104+ ns , all_imports_in_bases , all_imports_in_components
105+ )
74106
75- third_party_imports = {
76- "bases" : libs .extract_third_party_imports (all_imports_in_bases , ns ),
77- "components" : libs .extract_third_party_imports (all_imports_in_components , ns ),
78- }
79107
80- return {"brick_imports" : brick_imports , "third_party_imports" : third_party_imports }
108+ def collect_imports_to_exclude (root : Path , ns : str , project_data : dict ) -> dict :
109+ exclude = project_data ["exclude" ]
110+
111+ if not exclude :
112+ return {}
113+
114+ bases = set (project_data .get ("bases" , []))
115+ components = set (project_data .get ("components" , []))
116+
117+ bases_paths = workspace .paths .collect_bases_paths (root , ns , bases )
118+ components_paths = workspace .paths .collect_components_paths (root , ns , components )
119+
120+ excludes_in_bases = imports .fetch_excluded_imports (bases_paths , exclude )
121+ excludes_in_components = imports .fetch_excluded_imports (components_paths , exclude )
122+
123+ return extract_collected_imports (ns , excludes_in_bases , excludes_in_components )
124+
125+
126+ def create_exclude_report (collected_excludes : dict ) -> dict :
127+ fallback : dict = {"bases" : {}, "components" : {}}
128+
129+ collected_bricks = collected_excludes .get ("brick_imports" , fallback )
130+ collected_third_party = collected_excludes .get ("third_party_imports" , fallback )
131+
132+ bricks = collect .to_flattened_imports (collected_bricks )
133+ third_party = collect .to_flattened_imports (collected_third_party )
134+
135+ return {"brick_exclude" : bricks , "libs_exclude" : third_party }
81136
82137
83138def create_report (
0 commit comments