Source code for prsctrl_gui.utility.config

"""
Static app configuration class
"""
from importlib.metadata import PackageNotFoundError
from os import path, environ
from devctrl.utility.config_file import ConfigFile



[docs] class AppConfig: """ Configuration File """ APP_NAME: str = "prsctrl-gui" APP_VERSION: str = "unknown" CONFIG_DIR: str = path.expanduser("~/.config/prsctrl") MAIN_CFG: ConfigFile = None MEAS_CFG: ConfigFile = None
[docs] @classmethod def initialize(cls) -> None: """ Perform any necessary initializations here, e.g.: - Loading settings from a file """ if 'XDG_CONFIG_HOME' in environ.keys(): AppConfig.CONFIG_DIR = path.join(environ["XDG_CONFIG_HOME"], "prsctrl") # Main CFG AppConfig.MAIN_CFG_PATH = path.join(AppConfig.CONFIG_DIR, "prsctrl-gui.yaml") AppConfig.MAIN_CFG = ConfigFile(AppConfig.MAIN_CFG_PATH, { "voltage_measurement_device_auto_reconnect": True, "led_device_auto_reconnect": True, "datadir": "~/data2", }) # Measurement CFG AppConfig.MEAS_CFG_PATH = path.join(AppConfig.CONFIG_DIR, "prsctrl-gui_measurement.yaml") AppConfig.MEAS_CFG = ConfigFile(AppConfig.MEAS_CFG_PATH, {}) # Get the Version from importlib # This will always show the version of the installed package, not the local development version from importlib.metadata import version, PackageNotFoundError try: AppConfig.APP_VERSION = version("prsctrl-gui") except PackageNotFoundError: pass
[docs] @classmethod def finalize(cls) -> None: """ Write configuration to file """ AppConfig.MAIN_CFG.save() AppConfig.MEAS_CFG.save()