Source code for unidown.core.settings

import multiprocessing
from pathlib import Path


[docs]class Settings: """ :ivar _root_dir: root path :ivar temp_dir: temporary main path, here are the sub folders for every plugin :ivar download_dir: download main path, here are the sub folders for every plugin :ivar savestate_dir: savestates main path, here are the sub folders for every plugin :ivar log_file: log file of the program :ivar available_plugins: available plugins which are found at starting the program, name -> EntryPoint :ivar using_cores: how many _cores should be used :ivar _log_level: log level :ivar _disable_tqdm: if the console progress bar is disabled :param root_dir: root dir :param log_file: log file """ def __init__(self, root_dir: Path = None, log_file: Path = None, log_level: str = 'INFO'): if root_dir is None: root_dir = Path('./') if log_file is None: log_file = root_dir.joinpath(Path('unidown.log')) self._root_dir: Path = root_dir self._temp_dir: Path = self._root_dir.joinpath(Path('temp/')) self._download_dir: Path = self._root_dir.joinpath(Path('downloads/')) self._savestate_dir: Path = self._root_dir.joinpath(Path('savestates/')) self._log_file: Path = log_file self._cores = min(4, max(1, multiprocessing.cpu_count() - 1)) self._log_level = log_level self._disable_tqdm = False
[docs] def mkdir(self): """ Create all base directories. """ self._root_dir.mkdir(parents=True, exist_ok=True) self._temp_dir.mkdir(parents=True, exist_ok=True) self._download_dir.mkdir(parents=True, exist_ok=True) self._savestate_dir.mkdir(parents=True, exist_ok=True)
[docs] def check_dirs(self): """ Check the directories if they exist. :raises FileExistsError: if a file exists but is not a directory """ dirs = [self._root_dir, self._temp_dir, self._download_dir, self._savestate_dir] for directory in dirs: if directory.exists() and not directory.is_dir(): raise FileExistsError(str(directory.resolve()) + " cannot be used as a directory.")
@property def root_dir(self) -> Path: """ Plain getter. """ return self._root_dir @property def temp_dir(self) -> Path: """ Plain getter. """ return self._temp_dir @property def download_dir(self) -> Path: """ Plain getter. """ return self._download_dir @property def savestate_dir(self) -> Path: """ Plain getter. """ return self._savestate_dir @property def log_file(self) -> Path: """ Plain getter. """ return self._log_file @property def cores(self) -> int: """ Plain getter. """ return self._cores @property def log_level(self) -> str: """ Plain getter. """ return self._log_level @property def disable_tqdm(self) -> bool: """ Plain getter. """ return self._disable_tqdm