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

1"""CLI exceptions.""" 

2 

3from typing import Final, Optional 

4 

5 

6class ExitCode: 

7 """Class for CLI Exit Codes.""" 

8 

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 

17 

18 

19class CodexaBaseError(Exception): 

20 """A base CLI Error class. 

21 

22 Contains a message, exit_code and help text show to the user 

23 

24 exit_code should be a member of ExitCode 

25 """ 

26 

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) 

35 

36 

37class CodexaRuntimeError(CodexaBaseError): 

38 """General CLI CLI Error class.""" 

39 

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) 

48 

49 

50class CodexaInputError(CodexaBaseError): 

51 """CLI user input error class.""" 

52 

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) 

61 

62 

63class CodexaEnvironmentError(CodexaBaseError): 

64 """CLI environmnt error class.""" 

65 

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) 

74 

75 

76class CodexaExecutionError(CodexaBaseError): 

77 """CLI test execution error class.""" 

78 

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) 

87 

88 

89class CodexaAccessorError(CodexaBaseError): 

90 """CLI LLM generation error class.""" 

91 

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) 

100 

101 

102class CodexaOutputError(CodexaBaseError): 

103 """CLI LLM generation error class.""" 

104 

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)