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 def init(log_level : LogLevel) -> None: basicConfig(format = '%(message)s') get_package_logger().setLevel(facefusion.choices.log_level_set.get(log_level)) def get_package_logger() -> Logger: return getLogger('facefusion') def debug(message : str, module_name : str) -> None: get_package_logger().debug(create_message(message, module_name)) def info(message : str, module_name : str) -> None: get_package_logger().info(create_message(message, module_name)) def warn(message : str, module_name : str) -> None: get_package_logger().warning(create_message(message, module_name)) def error(message : str, module_name : str) -> None: get_package_logger().error(create_message(message, module_name)) def create_message(message : str, module_name : str) -> str: scopes = module_name.split('.') first_scope = get_first(scopes) last_scope = get_last(scopes) if first_scope and last_scope: return '[' + first_scope.upper() + '.' + last_scope.upper() + '] ' + message 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 def disable() -> None: get_package_logger().disabled = True