aegis_gui.guisettings.GuiSettings
1import yaml 2import pathlib 3from typing import Optional 4 5 6class GuiSettings: 7 ENVIRONMENT: str 8 DEBUG_MODE: bool 9 # loglevel: str 10 SIMULATION_NUMBER_LIMIT: Optional[int] 11 # can_delete_default_sim: bool 12 # default_selection_states: tuple 13 DATA_RETENTION_DAYS: Optional[int] 14 ABS_PATH_TO_BASE_DIRECTORY: Optional[str] 15 PORT: Optional[int] 16 BASE_HREF = "/aegis/" 17 18 def can_run_more_simulations(self, currently_running): 19 if self.SIMULATION_NUMBER_LIMIT is None: 20 return True 21 else: 22 return self.SIMULATION_NUMBER_LIMIT > currently_running 23 24 def get_base_dir(self): 25 if self.ABS_PATH_TO_BASE_DIRECTORY is None: 26 return pathlib.Path.home().absolute() 27 else: 28 return pathlib.Path(self.ABS_PATH_TO_BASE_DIRECTORY).absolute() 29 30 def set(self, environment: str, debug): 31 32 # Read from YML 33 path_to_yaml = pathlib.Path(__file__).parent / "gui_settings.yml" 34 with open(path_to_yaml, "r") as file: 35 yml = yaml.safe_load(file) 36 if environment == "local": 37 yml = yml["LocalConfig"] 38 elif environment == "server": 39 yml = yml["ServerConfig"] 40 else: 41 raise ValueError(f"{environment} is an invalid input for environment; should be 'local' or 'server'") 42 43 assert isinstance(debug, bool) 44 45 self.ENVIRONMENT = yml["ENVIRONMENT"] 46 self.DEBUG_MODE = debug 47 self.SIMULATION_NUMBER_LIMIT = yml["SIMULATION_NUMBER_LIMIT"] 48 self.DATA_RETENTION_DAYS = yml["DATA_RETENTION_DAYS"] 49 self.MAX_SIM_NAME_LENGTH = yml["MAX_SIM_NAME_LENGTH"] 50 self.ABS_PATH_TO_BASE_DIRECTORY = yml["ABS_PATH_TO_BASE_DIRECTORY"] 51 self.PORT = yml["PORT"] 52 53 # Derived 54 self.base_dir = self.get_base_dir() / "aegis_data" 55 self.sim_dir = self.base_dir / "sim_data" 56 self.figure_dir = self.base_dir / "figures" 57 58 self.base_dir.mkdir(exist_ok=True, parents=True) 59 self.sim_dir.mkdir(exist_ok=True, parents=True) 60 self.figure_dir.mkdir(exist_ok=True, parents=True) 61 62 def wrap_href(self, href): 63 return self.BASE_HREF + href 64 65 66gui_settings = GuiSettings() 67 68# def create_config_class(name, attrs): 69# """Dynamically create a configuration class.""" 70# return type(name, (BaseConfig,), attrs) 71 72 73# def load_configs_from_yaml(file_path): 74 75# config_classes = {} 76 77# for config_name, config_attrs in configs.items(): 78# config_class = create_config_class(config_name, config_attrs) 79# config_classes[config_name] = config_class 80 81# return config_classes 82 83 84# LocalConfig = config_classes["LocalConfig"] 85# ServerConfig = config_classes["ServerConfig"]
class
GuiSettings:
7class GuiSettings: 8 ENVIRONMENT: str 9 DEBUG_MODE: bool 10 # loglevel: str 11 SIMULATION_NUMBER_LIMIT: Optional[int] 12 # can_delete_default_sim: bool 13 # default_selection_states: tuple 14 DATA_RETENTION_DAYS: Optional[int] 15 ABS_PATH_TO_BASE_DIRECTORY: Optional[str] 16 PORT: Optional[int] 17 BASE_HREF = "/aegis/" 18 19 def can_run_more_simulations(self, currently_running): 20 if self.SIMULATION_NUMBER_LIMIT is None: 21 return True 22 else: 23 return self.SIMULATION_NUMBER_LIMIT > currently_running 24 25 def get_base_dir(self): 26 if self.ABS_PATH_TO_BASE_DIRECTORY is None: 27 return pathlib.Path.home().absolute() 28 else: 29 return pathlib.Path(self.ABS_PATH_TO_BASE_DIRECTORY).absolute() 30 31 def set(self, environment: str, debug): 32 33 # Read from YML 34 path_to_yaml = pathlib.Path(__file__).parent / "gui_settings.yml" 35 with open(path_to_yaml, "r") as file: 36 yml = yaml.safe_load(file) 37 if environment == "local": 38 yml = yml["LocalConfig"] 39 elif environment == "server": 40 yml = yml["ServerConfig"] 41 else: 42 raise ValueError(f"{environment} is an invalid input for environment; should be 'local' or 'server'") 43 44 assert isinstance(debug, bool) 45 46 self.ENVIRONMENT = yml["ENVIRONMENT"] 47 self.DEBUG_MODE = debug 48 self.SIMULATION_NUMBER_LIMIT = yml["SIMULATION_NUMBER_LIMIT"] 49 self.DATA_RETENTION_DAYS = yml["DATA_RETENTION_DAYS"] 50 self.MAX_SIM_NAME_LENGTH = yml["MAX_SIM_NAME_LENGTH"] 51 self.ABS_PATH_TO_BASE_DIRECTORY = yml["ABS_PATH_TO_BASE_DIRECTORY"] 52 self.PORT = yml["PORT"] 53 54 # Derived 55 self.base_dir = self.get_base_dir() / "aegis_data" 56 self.sim_dir = self.base_dir / "sim_data" 57 self.figure_dir = self.base_dir / "figures" 58 59 self.base_dir.mkdir(exist_ok=True, parents=True) 60 self.sim_dir.mkdir(exist_ok=True, parents=True) 61 self.figure_dir.mkdir(exist_ok=True, parents=True) 62 63 def wrap_href(self, href): 64 return self.BASE_HREF + href
def
set(self, environment: str, debug):
31 def set(self, environment: str, debug): 32 33 # Read from YML 34 path_to_yaml = pathlib.Path(__file__).parent / "gui_settings.yml" 35 with open(path_to_yaml, "r") as file: 36 yml = yaml.safe_load(file) 37 if environment == "local": 38 yml = yml["LocalConfig"] 39 elif environment == "server": 40 yml = yml["ServerConfig"] 41 else: 42 raise ValueError(f"{environment} is an invalid input for environment; should be 'local' or 'server'") 43 44 assert isinstance(debug, bool) 45 46 self.ENVIRONMENT = yml["ENVIRONMENT"] 47 self.DEBUG_MODE = debug 48 self.SIMULATION_NUMBER_LIMIT = yml["SIMULATION_NUMBER_LIMIT"] 49 self.DATA_RETENTION_DAYS = yml["DATA_RETENTION_DAYS"] 50 self.MAX_SIM_NAME_LENGTH = yml["MAX_SIM_NAME_LENGTH"] 51 self.ABS_PATH_TO_BASE_DIRECTORY = yml["ABS_PATH_TO_BASE_DIRECTORY"] 52 self.PORT = yml["PORT"] 53 54 # Derived 55 self.base_dir = self.get_base_dir() / "aegis_data" 56 self.sim_dir = self.base_dir / "sim_data" 57 self.figure_dir = self.base_dir / "figures" 58 59 self.base_dir.mkdir(exist_ok=True, parents=True) 60 self.sim_dir.mkdir(exist_ok=True, parents=True) 61 self.figure_dir.mkdir(exist_ok=True, parents=True)
gui_settings =
<GuiSettings object>