diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/qc.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/scripts/qc.py b/scripts/qc.py index 9d57f4b..9bad55e 100644 --- a/scripts/qc.py +++ b/scripts/qc.py @@ -2,10 +2,12 @@ import os import sys import argparse +from typing import Union, Callable import magic from quality_control.errors import InvalidValue +from quality_control.utils import make_progress_calculator from quality_control.parsing import ( take, FileType, @@ -54,10 +56,18 @@ def cli_argument_parser(): default=False, action="store_true") return parser -def progress_indicator(msg): +def make_progress_indicator( + verbose: bool, progress_calc_fn: Callable) -> Union[Callable, None]: """Utility to display the progress""" - print(f"LINE: {msg['line_number']} ({msg['percent']:.2f}%)", end="\r") - return msg + if not verbose: + return None + + def __indicator__(linenumber, linetext): + msg = progress_calc_fn(linenumber, linetext) + print(f"LINE: {msg.currentline} ({msg.percent:.2f}%)", end="\r") + return msg + + return __indicator__ def print_errors(errors, verbose): """Print out the errors""" @@ -78,8 +88,8 @@ def print_errors(errors, verbose): def check(filepath, filetype, strains, count, verbose=False): """Check the file and print out results""" - if verbose: - updater = progress_indicator + updater = make_progress_indicator( + verbose, make_progress_calculator(os.stat(filepath).st_size)) if count > 0: return print_errors( |