Coverage for codexa/core/errors.py: 86%
42 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-10 07:53 +0000
« prev ^ index » next coverage.py v7.9.2, created at 2025-08-10 07:53 +0000
1"""CLI exceptions."""
3from typing import Final, Optional
6class ExitCode:
7 """Class for CLI Exit Codes."""
9 SUCCESS: Final[int] = 0
10 RUNTIME_ERROR: Final[int] = 1
11 INPUT_ERROR: Final[int] = 2
12 ENVIRONMENT_ERROR: Final[int] = 3
13 EXECUTION__ERROR: Final[int] = 4
14 ACCESS_ERROR: Final[int] = 5
15 GENERATION_ERROR: Final[int] = 6
16 OUTPUT_ERROR: Final[int] = 7
19class CodexaBaseError(Exception):
20 """A base CLI Error class.
22 Contains a message, exit_code and help text show to the user
24 exit_code should be a member of ExitCode
25 """
27 def __init__(self, message: str, exit_code: int, help_text: Optional[str]):
28 """Init an CLI Error."""
29 self.message = message
30 self.exit_code = exit_code
31 if help_text is None:
32 help_text = "Help is available with --help. Use the -v flag to increase output verbosity."
33 self.help_text = help_text
34 super().__init__(self.message)
37class CodexaRuntimeError(CodexaBaseError):
38 """General CLI CLI Error class."""
40 def __init__(
41 self,
42 message: str,
43 help_text: Optional[str] = None,
44 ) -> None:
45 """Init an CLI CLI Error."""
46 self.message = message
47 super().__init__(self.message, ExitCode.RUNTIME_ERROR, help_text)
50class CodexaInputError(CodexaBaseError):
51 """CLI user input error class."""
53 def __init__(
54 self,
55 message: str,
56 help_text: Optional[str] = None,
57 ) -> None:
58 """Init an CLI Input Error."""
59 self.message = message
60 super().__init__(self.message, ExitCode.INPUT_ERROR, help_text)
63class CodexaEnvironmentError(CodexaBaseError):
64 """CLI environmnt error class."""
66 def __init__(
67 self,
68 message: str,
69 help_text: Optional[str] = None,
70 ) -> None:
71 """Init an CLI Environment Error."""
72 self.message = message
73 super().__init__(self.message, ExitCode.ENVIRONMENT_ERROR, help_text)
76class CodexaExecutionError(CodexaBaseError):
77 """CLI test execution error class."""
79 def __init__(
80 self,
81 message: str,
82 help_text: Optional[str] = None,
83 ) -> None:
84 """Init an CLI Generation Error."""
85 self.message = message
86 super().__init__(self.message, ExitCode.GENERATION_ERROR, help_text)
89class CodexaAccessorError(CodexaBaseError):
90 """CLI LLM generation error class."""
92 def __init__(
93 self,
94 message: str,
95 help_text: Optional[str] = None,
96 ) -> None:
97 """Init an CLI Generation Error."""
98 self.message = message
99 super().__init__(self.message, ExitCode.GENERATION_ERROR, help_text)
102class CodexaOutputError(CodexaBaseError):
103 """CLI LLM generation error class."""
105 def __init__(
106 self,
107 message: str,
108 help_text: Optional[str] = None,
109 ) -> None:
110 """Init an CLI Generation Error."""
111 self.message = message
112 super().__init__(self.message, ExitCode.GENERATION_ERROR, help_text)