import configparser import os from typing import Dict import appdirs class _Config(type): def __getitem__(cls, key: str) -> Dict[str, str]: if key not in cls.config: cls.config[key] = {} return cls.config[key] class Config(object, metaclass=_Config): config = configparser.ConfigParser() @staticmethod def __get_filename() -> str: data_dir = appdirs.user_data_dir('pivotalcli', 'sijmen') os.makedirs(data_dir, exist_ok=True) return os.path.join(data_dir, 'config.ini') @classmethod def read(cls) -> None: cls.config.read(cls.__get_filename()) @classmethod def write(cls) -> None: with open(cls.__get_filename(), mode='w') as config_file: cls.config.write(config_file)