""" Various small helpers for data writing """ from typing import TYPE_CHECKING if TYPE_CHECKING: from io import TextIOWrapper, StringIO def write_l(line: str, fpl: 'TextIOWrapper | StringIO | None' = None, print_line: bool = False): """ Write a line to screen and to output file Args: line (String): Line to write fpl (Resource): file handler resource, if none write only to console """ if print_line is True: print(line) if fpl is not None: fpl.write(line + "\n") # progress printers def pr_header(tag: str, marker_string: str = '#', width: int = 35): """_summary_ Args: tag (str): _description_ """ print(f" {marker_string} {tag:^{width}} {marker_string}") def pr_title(tag: str, prefix_string: str = '|', space_filler: str = '.', width: int = 35): """_summary_ Args: tag (str): _description_ prefix_string (str, optional): _description_. Defaults to '|'. """ print(f" {prefix_string} {tag:{space_filler}<{width}}:", flush=True) def pr_open(tag: str, prefix_string: str = '|', space_filler: str = '.', width: int = 35): """ writen progress open line with tag Args: tag (str): _description_ prefix_string (str): prefix string. Default: '|' """ print(f" {prefix_string} {tag:{space_filler}<{width}} [", end="", flush=True) def pr_close(tag: str = ''): """ write the close tag with new line Args: tag (str, optional): _description_. Defaults to ''. """ print(f"{tag}]", flush=True) def pr_act(act: str = "."): """ write progress character Args: act (str, optional): _description_. Defaults to ".". """ print(f"{act}", end="", flush=True) # __EMD__