From 27f6e9e28f2a3244bdd00336cf918de97b2ceed6 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Thu, 19 May 2022 10:25:18 +0300 Subject: Extract progress indication from the parsing Since progress indication is not part of the parsing, this commit extracts the progress indication into functions with well defined input arguments that hide the progress indication logic from the parsing function. --- quality_control/utils.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 quality_control/utils.py (limited to 'quality_control/utils.py') diff --git a/quality_control/utils.py b/quality_control/utils.py new file mode 100644 index 0000000..0072608 --- /dev/null +++ b/quality_control/utils.py @@ -0,0 +1,21 @@ +"""Utilities that might be useful elsewhere.""" + +from collections import namedtuple + +ProgressIndicator = namedtuple( + "ProgressIndicator", ("filesize", "processedsize", "currentline", "percent")) + +def make_progress_calculator(filesize: int): + """ + Returns a function that takes two arguments, `linenumber` and `linetext` and + return a `ProgressIndicator` object with the computed progress. + """ + processedsize = 0 + def __calculator__(linenumber: int, linetext: str) -> ProgressIndicator: + nonlocal processedsize + processedsize = processedsize + len(linetext) + return ProgressIndicator( + filesize, processedsize, linenumber, + ((processedsize/filesize) * 100)) + + return __calculator__ -- cgit v1.2.3