from enum import Enum from dataclasses import dataclass from typing import Optional, Any class ResultError(Enum): """Classified error categories.""" SUCCESS = "success" NOT_SUPPORTED = "NOT_SUPPORTED" INVALID_INPUT = "invalid_input" MISSING_FILE = "missing_file" MISSING_DEPENDENCY = "missing_dependency" MISSING_DATA = "missing_data" FILE_SYSTEM = "filesystem" CONNECTION = "connection" DATABASE = "database" PERMISSION = "permission" SUBSCRIPTION = "subscription" PROCESS_GOT_KILLED = "process_got_killed" PROCESS_WONT_START = "process_wont_start" PROCESS_MISMATCH = "process_mismatch" NMCLI = "nmcli_issues" FIREWALL = "firewall" CLIENT_DNS = "client_dns" EXTERNAL_DNS = "external_dns" INTERFACE = "interface" TIMEOUT = "timeout" INVALID_API_REPLY = "invalid_api_reply" ENCRYPTION = "encryption" LEAK_ISSUE = "leak_issue" NEED_SYNC = "need_sync" UNKNOWN = "unknown" @dataclass class Result(): valid: bool goal_result: Optional[bool] = None error_type: ResultError = ResultError.SUCCESS data: Optional[Any] = None message: Optional[str] = None goal: Optional[str] = None def user_message(self) -> str: """Human-readable error for the UI.""" messages = { ResultError.SUCCESS: "Operation completed successfully.", ResultError.UNKNOWN: f"Error: {self.message}", } return messages.get(self.error_type, "Unknown error")