fix pickle error: parse string instead of passing object up. also

include version in json
This commit is contained in:
Tim Sweet
2025-07-10 14:42:04 -05:00
committed by Joel-Flores123
parent c628a5dad5
commit dbe2e964e4
+11 -7
View File
@@ -83,7 +83,7 @@ def run(file: Path, out_dir: Path, version: PythonVersion, print=False):
result = compare_pyc(in_pyc, out_pyc) result = compare_pyc(in_pyc, out_pyc)
if print: if print:
print_result(f"Equivalance results for {file}", result) print_result(f"Equivalance results for {file}", result)
return Result.Success if all(x.success for x in result) else Result.Failure, [(x.success, x) for x in result], file, out_dir return Result.Success if all(x.success for x in result) else Result.Failure, [(x.success, str(x)) for x in result], file, out_dir
except (CompileError, SyntaxError) as e: except (CompileError, SyntaxError) as e:
return Result.CompileError, e, file, out_dir return Result.CompileError, e, file, out_dir
except Exception: except Exception:
@@ -95,7 +95,7 @@ class NoPool:
imap_unordered = map imap_unordered = map
def print_results(a: Path, b: Path, result: Result, results: list[tuple[bool, TestResult]] | Exception): def print_results(a: Path, b: Path, result: Result, results: list[tuple[bool, str]] | Exception):
a_text = a.read_text() a_text = a.read_text()
b_text = b.read_text() b_text = b.read_text()
console = rich.console.Console(highlight=False) console = rich.console.Console(highlight=False)
@@ -109,31 +109,35 @@ def print_results(a: Path, b: Path, result: Result, results: list[tuple[bool, Te
console.print(results) console.print(results)
elif isinstance(results, list) and results: elif isinstance(results, list) and results:
for success, name in results: for success, name in results:
console.print(str(name), style="" if success else "red bold underline") console.print(name, style="" if success else "red bold underline")
else: else:
console.print(result, style="red bold underline") console.print(result, style="red bold underline")
def equivalence_report_json( def equivalence_report_json(
infilename: Path, result: 'Result', infilename: Path, result: 'Result',
results: list[tuple[bool, TestResult]] | Exception) -> dict: version: PythonVersion,
results: list[tuple[bool, str]] | Exception) -> dict:
report = [] report = []
if isinstance(results, Exception): if isinstance(results, Exception):
report.append({ report.append({
"file": str(infilename), "file": str(infilename),
"version": str(version),
"name": result.name, "name": result.name,
"status": "error" "status": "error"
}) })
elif isinstance(results, list) and results: elif isinstance(results, list) and results:
for success, result in results: for success, result in results:
report.append({ report.append({
"file": str(infilename), "file": str(infilename),
"name": result.name_a, "version": str(version),
"name": result.split(": ")[0],
"status": "true" if success else "false" "status": "true" if success else "false"
}) })
else: else:
report.append({ report.append({
"file": str(infilename), "file": str(infilename),
"version": str(version),
"name": "error", "name": "error",
"status": "error" "status": "error"
}) })
@@ -189,7 +193,7 @@ def main(input: Path, output: str, version: PythonVersion, graph: str | None, js
o = Path(o) o = Path(o)
result, eqr, infilename, _ = run(input, o, version) result, eqr, infilename, _ = run(input, o, version)
if jsonout: if jsonout:
print(json.dumps(equivalence_report_json(infilename, result, eqr))) print(json.dumps(equivalence_report_json(infilename, result, version, eqr)))
else: else:
print_results(o / input.stem / "a.py", o / input.stem / "b.py", result, eqr) print_results(o / input.stem / "a.py", o / input.stem / "b.py", result, eqr)
else: else: