1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
const std = @import("std");
const c = @import("c");
pub const Exception = enum {
const Self = @This();
base_exception,
base_exception_group,
exception,
arithmetic_error,
assertion_error,
attribute_error,
blocking_io_error,
broken_pipe_error,
buffer_error,
child_process_error,
connection_aborted_error,
connection_error,
connection_refused_error,
connection_reset_error,
eof_error,
file_exists_error,
file_not_found_error,
floating_point_error,
generator_exit,
import_error,
indentation_error,
index_error,
interrupted_error,
is_a_directory_error,
key_error,
keyboard_interrupt,
lookup_error,
memory_error,
module_not_found_error,
name_error,
not_a_directory_error,
not_implemented_error,
os_error,
overflow_error,
permission_error,
process_lookup_error,
python_finalization_error,
recursion_error,
reference_error,
runtime_error,
stop_async_iteration,
stop_iteration,
syntax_error,
system_error,
system_exit,
tab_error,
timeout_error,
type_error,
unbound_local_error,
unicode_decode_error,
unicode_encode_error,
unicode_error,
unicode_translate_error,
value_error,
zero_division_error,
unknown_error,
pub fn concreteException() ?Self {
const err = c.PyErr_Occurred() orelse return null;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_BaseException) == 1) return .base_exception;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_BaseExceptionGroup) == 1) return .base_exception_group;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_Exception) == 1) return .exception;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ArithmeticError) == 1) return .arithmetic_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_AssertionError) == 1) return .assertion_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_AttributeError) == 1) return .attribute_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_BlockingIOError) == 1) return .blocking_io_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_BrokenPipeError) == 1) return .broken_pipe_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_BufferError) == 1) return .buffer_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ChildProcessError) == 1) return .child_process_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ConnectionAbortedError) == 1) return .connection_aborted_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ConnectionError) == 1) return .connection_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ConnectionRefusedError) == 1) return .connection_refused_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ConnectionResetError) == 1) return .connection_reset_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_EOFError) == 1) return .e_o_f_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_FileExistsError) == 1) return .file_exists_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_FileNotFoundError) == 1) return .file_not_found_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_FloatingPointError) == 1) return .floating_point_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_GeneratorExit) == 1) return .generator_exit;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ImportError) == 1) return .import_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_IndentationError) == 1) return .indentation_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_IndexError) == 1) return .index_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_InterruptedError) == 1) return .interrupted_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_IsADirectoryError) == 1) return .is_a_directory_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_KeyError) == 1) return .key_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_KeyboardInterrupt) == 1) return .keyboard_interrupt;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_LookupError) == 1) return .lookup_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_MemoryError) == 1) return .memory_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ModuleNotFoundError) == 1) return .module_not_found_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_NameError) == 1) return .name_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_NotADirectoryError) == 1) return .not_a_directory_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_NotImplementedError) == 1) return .not_implemented_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_OSError) == 1) return .o_s_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_OverflowError) == 1) return .overflow_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_PermissionError) == 1) return .permission_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ProcessLookupError) == 1) return .process_lookup_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_PythonFinalizationError) == 1) return .python_finalization_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_RecursionError) == 1) return .recursion_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ReferenceError) == 1) return .reference_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_RuntimeError) == 1) return .runtime_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_StopAsyncIteration) == 1) return .stop_async_iteration;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_StopIteration) == 1) return .stop_iteration;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_SyntaxError) == 1) return .syntax_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_SystemError) == 1) return .system_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_SystemExit) == 1) return .system_exit;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_TabError) == 1) return .tab_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_TimeoutError) == 1) return .timeout_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_TypeError) == 1) return .type_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_UnboundLocalError) == 1) return .unbound_local_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_UnicodeDecodeError) == 1) return .unicode_decode_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_UnicodeEncodeError) == 1) return .unicode_encode_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_UnicodeError) == 1) return .unicode_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_UnicodeTranslateError) == 1) return .unicode_translate_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ValueError) == 1) return .value_error;
if (c.PyErr_GivenExceptionMatches(err, c.PyErr_ZeroDivisionError) == 1) return .zero_division_error;
return .unknown_error;
}
};
|