75 lines
2.4 KiB
Python
75 lines
2.4 KiB
Python
from configparser import ConfigParser
|
|
from typing import List, Optional
|
|
|
|
from facefusion import state_manager
|
|
from facefusion.common_helper import cast_bool, cast_float, cast_int
|
|
|
|
CONFIG_PARSER = None
|
|
|
|
|
|
def get_config_parser() -> ConfigParser:
|
|
global CONFIG_PARSER
|
|
|
|
if CONFIG_PARSER is None:
|
|
CONFIG_PARSER = ConfigParser()
|
|
CONFIG_PARSER.read(state_manager.get_item('config_path'), encoding = 'utf-8')
|
|
return CONFIG_PARSER
|
|
|
|
|
|
def clear_config_parser() -> None:
|
|
global CONFIG_PARSER
|
|
|
|
CONFIG_PARSER = None
|
|
|
|
|
|
def get_str_value(section : str, option : str, fallback : Optional[str] = None) -> Optional[str]:
|
|
config_parser = get_config_parser()
|
|
|
|
if config_parser.has_option(section, option) and config_parser.get(section, option).strip():
|
|
return config_parser.get(section, option)
|
|
return fallback
|
|
|
|
|
|
def get_int_value(section : str, option : str, fallback : Optional[str] = None) -> Optional[int]:
|
|
config_parser = get_config_parser()
|
|
|
|
if config_parser.has_option(section, option) and config_parser.get(section, option).strip():
|
|
return config_parser.getint(section, option)
|
|
return cast_int(fallback)
|
|
|
|
|
|
def get_float_value(section : str, option : str, fallback : Optional[str] = None) -> Optional[float]:
|
|
config_parser = get_config_parser()
|
|
|
|
if config_parser.has_option(section, option) and config_parser.get(section, option).strip():
|
|
return config_parser.getfloat(section, option)
|
|
return cast_float(fallback)
|
|
|
|
|
|
def get_bool_value(section : str, option : str, fallback : Optional[str] = None) -> Optional[bool]:
|
|
config_parser = get_config_parser()
|
|
|
|
if config_parser.has_option(section, option) and config_parser.get(section, option).strip():
|
|
return config_parser.getboolean(section, option)
|
|
return cast_bool(fallback)
|
|
|
|
|
|
def get_str_list(section : str, option : str, fallback : Optional[str] = None) -> Optional[List[str]]:
|
|
config_parser = get_config_parser()
|
|
|
|
if config_parser.has_option(section, option) and config_parser.get(section, option).strip():
|
|
return config_parser.get(section, option).split()
|
|
if fallback:
|
|
return fallback.split()
|
|
return None
|
|
|
|
|
|
def get_int_list(section : str, option : str, fallback : Optional[str] = None) -> Optional[List[int]]:
|
|
config_parser = get_config_parser()
|
|
|
|
if config_parser.has_option(section, option) and config_parser.get(section, option).strip():
|
|
return list(map(int, config_parser.get(section, option).split()))
|
|
if fallback:
|
|
return list(map(int, fallback.split()))
|
|
return None
|