From dbe2e964e4d457cdfd846bdd4f376a3c1ca9e1b1 Mon Sep 17 00:00:00 2001 From: Tim Sweet Date: Thu, 10 Jul 2025 14:42:04 -0500 Subject: [PATCH] fix pickle error: parse string instead of passing object up. also include version in json --- dev_scripts/cflow.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/dev_scripts/cflow.py b/dev_scripts/cflow.py index 63bac4f..5ec54bf 100644 --- a/dev_scripts/cflow.py +++ b/dev_scripts/cflow.py @@ -83,7 +83,7 @@ def run(file: Path, out_dir: Path, version: PythonVersion, print=False): result = compare_pyc(in_pyc, out_pyc) if print: 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: return Result.CompileError, e, file, out_dir except Exception: @@ -95,7 +95,7 @@ class NoPool: 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() b_text = b.read_text() 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) elif isinstance(results, list) and 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: console.print(result, style="red bold underline") def equivalence_report_json( infilename: Path, result: 'Result', - results: list[tuple[bool, TestResult]] | Exception) -> dict: + version: PythonVersion, + results: list[tuple[bool, str]] | Exception) -> dict: report = [] if isinstance(results, Exception): report.append({ "file": str(infilename), + "version": str(version), "name": result.name, "status": "error" }) elif isinstance(results, list) and results: for success, result in results: report.append({ - "file": str(infilename), - "name": result.name_a, + "file": str(infilename), + "version": str(version), + "name": result.split(": ")[0], "status": "true" if success else "false" }) else: report.append({ "file": str(infilename), + "version": str(version), "name": "error", "status": "error" }) @@ -189,7 +193,7 @@ def main(input: Path, output: str, version: PythonVersion, graph: str | None, js o = Path(o) result, eqr, infilename, _ = run(input, o, version) if jsonout: - print(json.dumps(equivalence_report_json(infilename, result, eqr))) + print(json.dumps(equivalence_report_json(infilename, result, version, eqr))) else: print_results(o / input.stem / "a.py", o / input.stem / "b.py", result, eqr) else: