diff --git a/facefusion/cli_helper.py b/facefusion/cli_helper.py new file mode 100644 index 0000000..189e642 --- /dev/null +++ b/facefusion/cli_helper.py @@ -0,0 +1,35 @@ +from typing import Tuple + +from facefusion.logger import get_package_logger +from facefusion.typing import TableContents, TableHeaders + + +def render_table(headers : TableHeaders, contents : TableContents) -> None: + package_logger = get_package_logger() + table_column, table_separator = create_table_parts(headers, contents) + + package_logger.info(table_separator) + package_logger.info(table_column.format(*headers)) + package_logger.info(table_separator) + + for content in contents: + content = [ value if value else '' for value in content ] + package_logger.info(table_column.format(*content)) + + package_logger.info(table_separator) + + +def create_table_parts(headers : TableHeaders, contents : TableContents) -> Tuple[str, str]: + column_parts = [] + separator_parts = [] + widths = [ len(header) for header in headers ] + + for content in contents: + for index, value in enumerate(content): + widths[index] = max(widths[index], len(str(value))) + + for width in widths: + column_parts.append('{:<' + str(width) + '}') + separator_parts.append('-' * width) + + return '| ' + ' | '.join(column_parts) + ' |', '+-' + '-+-'.join(separator_parts) + '-+' diff --git a/facefusion/core.py b/facefusion/core.py index 5863d8d..0a004bd 100755 --- a/facefusion/core.py +++ b/facefusion/core.py @@ -6,7 +6,7 @@ from time import time import numpy -from facefusion import content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, logger, process_manager, state_manager, voice_extractor, wording +from facefusion import cli_helper, content_analyser, face_classifier, face_detector, face_landmarker, face_masker, face_recognizer, logger, process_manager, state_manager, voice_extractor, wording from facefusion.args import apply_args, collect_job_args, reduce_job_args, reduce_step_args from facefusion.common_helper import get_first from facefusion.content_analyser import analyse_image, analyse_video @@ -154,7 +154,7 @@ def route_job_manager(args : Args) -> ErrorCode: job_headers, job_contents = compose_job_list(state_manager.get_item('job_status')) if job_contents: - logger.table(job_headers, job_contents) + cli_helper.render_table(job_headers, job_contents) return 0 return 1 if state_manager.get_item('command') == 'job-create': diff --git a/facefusion/logger.py b/facefusion/logger.py index 641d6b2..621aa45 100644 --- a/facefusion/logger.py +++ b/facefusion/logger.py @@ -1,9 +1,8 @@ from logging import Logger, basicConfig, getLogger -from typing import Tuple import facefusion.choices from facefusion.common_helper import get_first, get_last -from facefusion.typing import LogLevel, TableContents, TableHeaders +from facefusion.typing import LogLevel def init(log_level : LogLevel) -> None: @@ -41,37 +40,6 @@ def create_message(message : str, module_name : str) -> str: return message -def table(headers : TableHeaders, contents : TableContents) -> None: - package_logger = get_package_logger() - table_column, table_separator = create_table_parts(headers, contents) - - package_logger.info(table_separator) - package_logger.info(table_column.format(*headers)) - package_logger.info(table_separator) - - for content in contents: - content = [ value if value else '' for value in content ] - package_logger.info(table_column.format(*content)) - - package_logger.info(table_separator) - - -def create_table_parts(headers : TableHeaders, contents : TableContents) -> Tuple[str, str]: - column_parts = [] - separator_parts = [] - widths = [ len(header) for header in headers ] - - for content in contents: - for index, value in enumerate(content): - widths[index] = max(widths[index], len(str(value))) - - for width in widths: - column_parts.append('{:<' + str(width) + '}') - separator_parts.append('-' * width) - - return '| ' + ' | '.join(column_parts) + ' |', '+-' + '-+-'.join(separator_parts) + '-+' - - def enable() -> None: get_package_logger().disabled = False