@dataclass class BaseConfig: """Mixin to allow converting to EFB Config dataclasses from various types using classmethods.""" def __init__(self, *args, **kwargs): if args and isinstance(args[0], str): argdict = json.loads(args[0]) elif args and isinstance(args[0], dict): argdict = args[0] else: argdict = kwargs for k in self.__annotations__: self.__dict__[k] = argdict[k] @dataclass(init=False) class UFMConfig(BaseConfig): """Base UFM Config, used by the EFB class.""" init_mem: Path zero_mem: bool start_page: int num_pages: int