@@ -45,14 +45,14 @@ def print_issues(issue_iter: list['LintIssue'], issue_order: list[tuple]):
4545 log_info ('{}:{}:{}' .format (issue .severity_icon , issue .category_icon , issue .description ))
4646
4747
48- def fix_issues (issue_iter ):
48+ def fix_issues (blint , issue_iter ):
4949 """Runs fixes on each issue that has a fix option.
5050
5151 :param issue_iter: list of issues
5252 """
5353 orig_num_issues = len (issue_iter )
5454 bpy .ops .scene_analyzer .fix_issue_all ()
55- reload_issues (context )
55+ blint . save_load . reload_issues (context )
5656 curr_issues = window_manager .lint_issues
5757 curr_num_issues = len (curr_issues )
5858 num_fixed = orig_num_issues - curr_num_issues
@@ -66,35 +66,46 @@ def fix_issues(issue_iter):
6666
6767 # get lint rules from preferences
6868 try :
69- from blint .model .lint_issue import get_sort_value
70- from blint .save_load import reload_issues
69+ import blint
7170 except ImportError :
72- log_error ('blint not found, the blint addon must be installed and enabled!' )
73- sys .exit (1 )
71+ try :
72+ # find blint as an extension
73+
74+ import sys
75+ module_path = min ([p for p in sys .modules .keys () if 'blint' in p ], key = len , default = None )
76+ if module_path is None :
77+ raise ImportError
78+ blint = sys .modules [module_path ]
79+ except ImportError :
80+ log_error ('blint not found, the blint addon must be installed and enabled!' )
81+ sys .exit (1 )
7482
7583 context = bpy .context
7684 window_manager = context .window_manager
7785
7886 context .scene .render .engine = 'CYCLES'
7987
80- reload_issues (context )
88+ blint . save_load . reload_issues (context )
8189
8290 # print blender file name
8391 try :
8492 if len (window_manager .lint_issues ) == 0 :
8593 log_info ('No issues found' )
8694 else :
8795 issues = window_manager .lint_issues
88- issue_sort_vals = [(idx , get_sort_value (issue ), issue .description ) for idx , issue in enumerate (issues )]
96+ issue_sort_vals = [
97+ (idx , blint .model .lint_issue .get_sort_value (issue ), issue .description )
98+ for idx , issue in enumerate (issues )
99+ ]
89100 issue_sort_vals .sort (key = lambda x : (x [1 ], x [2 ]))
90101 print_issues (issues , issue_sort_vals )
91102
92103 num_fixable = len ([True for issue in issues if issue .fix_expr ])
93104 if num_fixable > 0 :
94105 if auto_fix :
95106 log_info ('Fixing {} of {} issues...' .format (num_fixable , len (issues )))
96- fix_issues (issues )
97- reload_issues (context )
107+ fix_issues (blint , issues )
108+ blint . save_load . reload_issues (context )
98109 else :
99110 log_info ('{} of {} issues can be automatically fixed' .format (num_fixable , len (issues )))
100111
0 commit comments