1CMD_RUN = 101
2CMD_LIST_THREADS = 102
3CMD_THREAD_CREATE = 103
4CMD_THREAD_KILL = 104
5CMD_THREAD_SUSPEND = 105
6CMD_THREAD_RUN = 106
7CMD_STEP_INTO = 107
8CMD_STEP_OVER = 108
9CMD_STEP_RETURN = 109
10CMD_GET_VARIABLE = 110
11CMD_SET_BREAK = 111
12CMD_REMOVE_BREAK = 112
13CMD_EVALUATE_EXPRESSION = 113
14CMD_GET_FRAME = 114
15CMD_EXEC_EXPRESSION = 115
16CMD_WRITE_TO_CONSOLE = 116
17CMD_CHANGE_VARIABLE = 117
18CMD_RUN_TO_LINE = 118
19CMD_RELOAD_CODE = 119
20CMD_GET_COMPLETIONS = 120
21
22# Note: renumbered (conflicted on merge)
23CMD_CONSOLE_EXEC = 121
24CMD_ADD_EXCEPTION_BREAK = 122
25CMD_REMOVE_EXCEPTION_BREAK = 123
26CMD_LOAD_SOURCE = 124
27CMD_ADD_DJANGO_EXCEPTION_BREAK = 125
28CMD_REMOVE_DJANGO_EXCEPTION_BREAK = 126
29CMD_SET_NEXT_STATEMENT = 127
30CMD_SMART_STEP_INTO = 128
31CMD_EXIT = 129
32CMD_SIGNATURE_CALL_TRACE = 130
33
34CMD_SET_PY_EXCEPTION = 131
35CMD_GET_FILE_CONTENTS = 132
36CMD_SET_PROPERTY_TRACE = 133
37# Pydev debug console commands
38CMD_EVALUATE_CONSOLE_EXPRESSION = 134
39CMD_RUN_CUSTOM_OPERATION = 135
40CMD_GET_BREAKPOINT_EXCEPTION = 136
41CMD_STEP_CAUGHT_EXCEPTION = 137
42CMD_SEND_CURR_EXCEPTION_TRACE = 138
43CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED = 139
44CMD_IGNORE_THROWN_EXCEPTION_AT = 140
45CMD_ENABLE_DONT_TRACE = 141
46CMD_SHOW_CONSOLE = 142
47
48CMD_GET_ARRAY = 143
49CMD_STEP_INTO_MY_CODE = 144
50CMD_GET_CONCURRENCY_EVENT = 145
51CMD_SHOW_RETURN_VALUES = 146
52CMD_INPUT_REQUESTED = 147
53CMD_GET_DESCRIPTION = 148
54
55CMD_PROCESS_CREATED = 149
56CMD_SHOW_CYTHON_WARNING = 150
57CMD_LOAD_FULL_VALUE = 151
58
59CMD_GET_THREAD_STACK = 152
60
61# This is mostly for unit-tests to diagnose errors on ci.
62CMD_THREAD_DUMP_TO_STDERR = 153
63
64# Sent from the client to signal that we should stop when we start executing user code.
65CMD_STOP_ON_START = 154
66
67# When the debugger is stopped in an exception, this command will provide the details of the current exception (in the current thread).
68CMD_GET_EXCEPTION_DETAILS = 155
69
70# Allows configuring pydevd settings (can be called multiple times and only keys
71# available in the json will be configured -- keys not passed will not change the
72# previous configuration).
73CMD_PYDEVD_JSON_CONFIG = 156
74
75CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION = 157
76CMD_THREAD_RESUME_SINGLE_NOTIFICATION = 158
77
78CMD_STEP_OVER_MY_CODE = 159
79CMD_STEP_RETURN_MY_CODE = 160
80
81CMD_SET_PY_EXCEPTION_JSON = 161
82CMD_SET_PATH_MAPPING_JSON = 162
83
84CMD_GET_SMART_STEP_INTO_VARIANTS = 163  # XXX: PyCharm has 160 for this (we're currently incompatible anyways).
85
86CMD_REDIRECT_OUTPUT = 200
87CMD_GET_NEXT_STATEMENT_TARGETS = 201
88CMD_SET_PROJECT_ROOTS = 202
89
90CMD_MODULE_EVENT = 203
91CMD_PROCESS_EVENT = 204
92
93CMD_AUTHENTICATE = 205
94
95CMD_STEP_INTO_COROUTINE = 206
96
97CMD_LOAD_SOURCE_FROM_FRAME_ID = 207
98
99CMD_SET_FUNCTION_BREAK = 208
100
101CMD_VERSION = 501
102CMD_RETURN = 502
103CMD_SET_PROTOCOL = 503
104CMD_ERROR = 901
105
106# this number can be changed if there's need to do so
107# if the io is too big, we'll not send all (could make the debugger too non-responsive)
108MAX_IO_MSG_SIZE = 10000
109
110VERSION_STRING = "@@BUILD_NUMBER@@"
111
112from _pydev_bundle._pydev_filesystem_encoding import getfilesystemencoding
113file_system_encoding = getfilesystemencoding()
114filesystem_encoding_is_utf8 = file_system_encoding.lower() in ('utf-8', 'utf_8', 'utf8')
115
116ID_TO_MEANING = {
117    '101': 'CMD_RUN',
118    '102': 'CMD_LIST_THREADS',
119    '103': 'CMD_THREAD_CREATE',
120    '104': 'CMD_THREAD_KILL',
121    '105': 'CMD_THREAD_SUSPEND',
122    '106': 'CMD_THREAD_RUN',
123    '107': 'CMD_STEP_INTO',
124    '108': 'CMD_STEP_OVER',
125    '109': 'CMD_STEP_RETURN',
126    '110': 'CMD_GET_VARIABLE',
127    '111': 'CMD_SET_BREAK',
128    '112': 'CMD_REMOVE_BREAK',
129    '113': 'CMD_EVALUATE_EXPRESSION',
130    '114': 'CMD_GET_FRAME',
131    '115': 'CMD_EXEC_EXPRESSION',
132    '116': 'CMD_WRITE_TO_CONSOLE',
133    '117': 'CMD_CHANGE_VARIABLE',
134    '118': 'CMD_RUN_TO_LINE',
135    '119': 'CMD_RELOAD_CODE',
136    '120': 'CMD_GET_COMPLETIONS',
137    '121': 'CMD_CONSOLE_EXEC',
138    '122': 'CMD_ADD_EXCEPTION_BREAK',
139    '123': 'CMD_REMOVE_EXCEPTION_BREAK',
140    '124': 'CMD_LOAD_SOURCE',
141    '125': 'CMD_ADD_DJANGO_EXCEPTION_BREAK',
142    '126': 'CMD_REMOVE_DJANGO_EXCEPTION_BREAK',
143    '127': 'CMD_SET_NEXT_STATEMENT',
144    '128': 'CMD_SMART_STEP_INTO',
145    '129': 'CMD_EXIT',
146    '130': 'CMD_SIGNATURE_CALL_TRACE',
147
148    '131': 'CMD_SET_PY_EXCEPTION',
149    '132': 'CMD_GET_FILE_CONTENTS',
150    '133': 'CMD_SET_PROPERTY_TRACE',
151    '134': 'CMD_EVALUATE_CONSOLE_EXPRESSION',
152    '135': 'CMD_RUN_CUSTOM_OPERATION',
153    '136': 'CMD_GET_BREAKPOINT_EXCEPTION',
154    '137': 'CMD_STEP_CAUGHT_EXCEPTION',
155    '138': 'CMD_SEND_CURR_EXCEPTION_TRACE',
156    '139': 'CMD_SEND_CURR_EXCEPTION_TRACE_PROCEEDED',
157    '140': 'CMD_IGNORE_THROWN_EXCEPTION_AT',
158    '141': 'CMD_ENABLE_DONT_TRACE',
159    '142': 'CMD_SHOW_CONSOLE',
160    '143': 'CMD_GET_ARRAY',
161    '144': 'CMD_STEP_INTO_MY_CODE',
162    '145': 'CMD_GET_CONCURRENCY_EVENT',
163    '146': 'CMD_SHOW_RETURN_VALUES',
164    '147': 'CMD_INPUT_REQUESTED',
165    '148': 'CMD_GET_DESCRIPTION',
166
167    '149': 'CMD_PROCESS_CREATED',  # Note: this is actually a notification of a sub-process created.
168    '150': 'CMD_SHOW_CYTHON_WARNING',
169    '151': 'CMD_LOAD_FULL_VALUE',
170    '152': 'CMD_GET_THREAD_STACK',
171    '153': 'CMD_THREAD_DUMP_TO_STDERR',
172    '154': 'CMD_STOP_ON_START',
173    '155': 'CMD_GET_EXCEPTION_DETAILS',
174    '156': 'CMD_PYDEVD_JSON_CONFIG',
175    '157': 'CMD_THREAD_SUSPEND_SINGLE_NOTIFICATION',
176    '158': 'CMD_THREAD_RESUME_SINGLE_NOTIFICATION',
177
178    '159': 'CMD_STEP_OVER_MY_CODE',
179    '160': 'CMD_STEP_RETURN_MY_CODE',
180
181    '161': 'CMD_SET_PY_EXCEPTION_JSON',
182    '162': 'CMD_SET_PATH_MAPPING_JSON',
183    '163': 'CMD_GET_SMART_STEP_INTO_VARIANTS',
184
185    '200': 'CMD_REDIRECT_OUTPUT',
186    '201': 'CMD_GET_NEXT_STATEMENT_TARGETS',
187    '202': 'CMD_SET_PROJECT_ROOTS',
188    '203': 'CMD_MODULE_EVENT',
189    '204': 'CMD_PROCESS_EVENT',  # DAP process event.
190
191    '205': 'CMD_AUTHENTICATE',
192
193    '206': 'CMD_STEP_INTO_COROUTINE',
194
195    '207': 'CMD_LOAD_SOURCE_FROM_FRAME_ID',
196
197    '501': 'CMD_VERSION',
198    '502': 'CMD_RETURN',
199    '503': 'CMD_SET_PROTOCOL',
200    '901': 'CMD_ERROR',
201}
202
203
204def constant_to_str(constant):
205    s = ID_TO_MEANING.get(str(constant))
206    if not s:
207        s = '<Unknown: %s>' % (constant,)
208    return s
209