from typing import Optional from pydantic import BaseModel, model_validator from core.enums import GuiOption class GuiConfig(BaseModel): gui_option: GuiOption raw_ui_filename: Optional[str] = None def should_create_ui(self): return self.gui_option == GuiOption.NEW @property def ui_filename(self) -> str: if self.raw_ui_filename is None: raise ValueError("ui_filename is None") return self.raw_ui_filename @model_validator(mode="after") def validate_dependent_options(self): if self.gui_option == GuiOption.EXISTING and self.raw_ui_filename is None: raise ValueError("--ui-filename is required when --gui-option is 'existing'.") if self.gui_option == GuiOption.NONE and self.raw_ui_filename: raise ValueError("Cannot specify --ui-filename when --gui-option is 'none'.") return self