from typing import List, Optional, Dict, Tuple from pathlib import Path class Formatter: """ A formatter is bound to a specific input file with some building configuration. """ def format(self, build_dir: Path) -> Optional[List[Tuple[str, Dict]]]: """ :param build_dir: Directory where output files are written to :return: When configuration files are needed for a future build of the output files, a list of the file names and their needed configurations. Else None. """ pass @property def output_files(self) -> List[str]: """ :return: List of files that will be built when the formatter is invoked """ pass def set_input_file(self, locate_config=True) -> None: raise NotImplementedError