Refactored flake8 linting to use subprocess module instead of modifying sys.argv and sys.stdout.

This commit is contained in:
Paul Gauthier (aider) 2024-06-23 17:07:55 -07:00
parent 66fadadea1
commit b44c24678c

View file

@ -124,39 +124,29 @@ class Linter:
def flake8_lint(self, rel_fname): def flake8_lint(self, rel_fname):
fatal = "E9,F821,F823,F831,F406,F407,F701,F702,F704,F706" fatal = "E9,F821,F823,F831,F406,F407,F701,F702,F704,F706"
flake8 = f"flake8 --select={fatal} --show-source --isolated" flake8_cmd = [
sys.executable,
"-m",
"flake8",
f"--select={fatal}",
"--show-source",
"--isolated",
rel_fname,
]
original_argv = sys.argv text = f"## Running: {' '.join(flake8_cmd)}\n\n"
original_stdout = sys.stdout
sys.argv = flake8.split() + [rel_fname]
sys.stdout = io.TextIOWrapper(io.BytesIO(), encoding="utf-8")
text = f"## Running: {' '.join(sys.argv)}\n\n"
original_stdout.write("text:")
original_stdout.write(text)
original_stdout.write("\n")
try: try:
runpy.run_module("flake8", run_name="__main__") result = subprocess.run(
except SystemExit as e: flake8_cmd,
dump(e.code) cwd=self.root,
if e.code == 0: capture_output=True,
errors = None text=True,
else: check=False,
dump("wtf") )
#sys.stdout.seek(0) errors = result.stdout + result.stderr
dump("wtf1") except Exception as e:
errors = sys.stdout.read() errors = f"Error running flake8: {str(e)}"
sys.stdout = original_stdout
sys.argv = original_argv
finally:
sys.stdout = original_stdout
sys.argv = original_argv
dump(errors)
if not errors: if not errors:
return return