From e791a1e82dc9d69108692b18366f5d30644e1fe3 Mon Sep 17 00:00:00 2001 From: daviddoji Date: Fri, 29 Oct 2021 17:26:05 +0200 Subject: [PATCH] Refactoring --- src/update_results_table.py | 81 ++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 27 deletions(-) diff --git a/src/update_results_table.py b/src/update_results_table.py index fec145f..ff3a9f5 100644 --- a/src/update_results_table.py +++ b/src/update_results_table.py @@ -28,43 +28,70 @@ def _file_stem(f): return f[-5:] def get_problems(path=None, ext=None): + wd = os.getcwd() os.chdir(Path(path)) - return sorted([script.as_posix() for script in Path(".").rglob(f"*[0-9].{ext}")], key=_file_stem) - -def execute(): - """ - Execute script and return output - """ - # scripts = get_problems(path="Python", ext="py") - scripts = get_problems(path="Julia", ext="jl") - # print(scripts[:5]) + scripts = sorted([script.as_posix() for script in Path(".").rglob(f"*[0-9].{ext}")], key=_file_stem) + os.chdir(wd) + return scripts +def timing_Python(path=None): + wd = os.getcwd() + scripts = get_problems(path=path, ext="py") + os.chdir(Path(path)) python_timings, python_results = [], [] + for script in scripts[:5]: + _res = run(["python3", f"{script}"], capture_output=True, text=True).stdout.split("\n") + python_timings.append(_res[0]) + python_results.append(_res[2]) + + os.chdir(wd) + return python_timings, python_results + +def timing_Julia(path=None): + wd = os.getcwd() + scripts = get_problems(path="Julia", ext="jl") + os.chdir(Path(path)) julia_problem_numbers, julia_timings, julia_results = [], [], [] for script in scripts[:5]: - # _res = run(["python3", f"{script}"], capture_output=True, text=True).stdout.split("\n") - # python_timings.append(_res[0]) - # python_results.append(_res[2]) _res = run(["julia", f"{script}"], capture_output=True, text=True).stdout.split("\n") julia_problem_numbers.append(_res[0]) julia_timings.append(_res[1].split("(")[0]) julia_results.append(_res[3]) - writer = MarkdownTableWriter( - table_name="Project Euler Solutions", - # headers=["Problem #", "Result", "Execution time (Python)"], - # value_matrix=[[f"{int(t[25:28]):03d}", int(r[22:]), t[29:]] for t,r in zip(python_timings, python_results)], - headers=["Problem #", "Result", "Execution time (Julia)"], - value_matrix=[[f"{int(p[-5:-1]):03d}", int(r[23:]), t] for p,t,r in zip(julia_problem_numbers, julia_timings, julia_results)], - column_styles=[ - Style(align="center"), - Style(align="right", thousand_separator="_"), - Style(align="right"), - ], # specify styles for each column - margin=1 # add a whitespace for both sides of each cell - ) - writer.write_table() - return writer.dumps() + os.chdir(wd) + return julia_problem_numbers, julia_timings, julia_results + +def execute(): + """ + Execute scripts and return md formatted table + """ + python_timings, python_results = timing_Python(path="Python") + julia_problem_numbers, julia_timings, julia_results = timing_Julia(path="Julia") + + for lang in ["Python", "Julia"]: + if lang == "Python": + headers=["Problem #", "Result", "Execution time (Python)"] + value_matrix=[[f"{int(t[25:28]):03d}", int(r[22:]), t[29:]] for t,r in zip(python_timings, python_results)] + elif lang == "Julia": + headers=["Problem #", "Result", "Execution time (Julia)"] + value_matrix=[[f"{int(p[-5:-1]):03d}", int(r[23:]), t] for p,t,r in zip(julia_problem_numbers, julia_timings, julia_results)] + print(f"Printing for {lang}") + writer = MarkdownTableWriter( + table_name="Project Euler Solutions", + headers=headers, #["Problem #", "Result", f"Execution time ({lang})"], + value_matrix=value_matrix, #[[f"{int(t[25:28]):03d}", int(r[22:]), t[29:]] for t,r in zip(python_timings, python_results)], + # headers=["Problem #", "Result", "Execution time (Julia)"], + # value_matrix=[[f"{int(p[-5:-1]):03d}", int(r[23:]), t] for p,t,r in zip(julia_problem_numbers, julia_timings, julia_results)], + column_styles=[ + Style(align="center"), + Style(align="right", thousand_separator="_"), + Style(align="right"), + ], # specify styles for each column + margin=1 # add a whitespace for both sides of each cell + ) + writer.write_table() + print(writer.dumps()) + # return writer.dumps() if __name__ == "__main__":