Debugger/DebuggerInterfacePython3.py

branch
jsonrpc
changeset 5131
889ed5ff7a68
parent 5129
e4ab234cf071
child 5136
b1dde2dc14bd
equal deleted inserted replaced
5130:27fe451262bf 5131:889ed5ff7a68
30 ClientDefaultCapabilities = DebugClientCapabilities.HasAll 30 ClientDefaultCapabilities = DebugClientCapabilities.HasAll
31 31
32 32
33 class DebuggerInterfacePython3(QObject): 33 class DebuggerInterfacePython3(QObject):
34 """ 34 """
35 Class implementing the Python debugger interface for the debug server. 35 Class implementing the Python 3 debugger interface for the debug server.
36 """ 36 """
37 def __init__(self, debugServer, passive): 37 def __init__(self, debugServer, passive):
38 """ 38 """
39 Constructor 39 Constructor
40 40
403 self.qsock.readyRead.disconnect(self.__parseClientLine) 403 self.qsock.readyRead.disconnect(self.__parseClientLine)
404 404
405 # close down socket, and shut down client as well. 405 # close down socket, and shut down client as well.
406 self.__sendJsonCommand("RequestShutdown", {}) 406 self.__sendJsonCommand("RequestShutdown", {})
407 self.qsock.flush() 407 self.qsock.flush()
408
409 self.qsock.close() 408 self.qsock.close()
410 409
411 # reinitialize 410 # reinitialize
412 self.qsock = None 411 self.qsock = None
413 self.queue = [] 412 self.queue = []
920 elif method == "RequestRaw": 919 elif method == "RequestRaw":
921 self.debugServer.signalClientRawInput( 920 self.debugServer.signalClientRawInput(
922 params["prompt"], params["echo"]) 921 params["prompt"], params["echo"])
923 922
924 elif method == "ResponseBPConditionError": 923 elif method == "ResponseBPConditionError":
925 params["filename"] = self.translate(params["filename"], True) 924 fn = self.translate(params["filename"], True)
926 self.debugServer.signalClientBreakConditionError( 925 self.debugServer.signalClientBreakConditionError(
927 params["filename"], params["line"]) 926 fn, params["line"])
928 927
929 elif method == "ResponseClearBreakpoint": 928 elif method == "ResponseClearBreakpoint":
930 params["filename"] = self.translate(params["filename"], True) 929 fn = self.translate(params["filename"], True)
931 self.debugServer.signalClientClearBreak( 930 self.debugServer.signalClientClearBreak(fn, params["line"])
932 params["filename"], params["line"])
933 931
934 elif method == "ResponseWatchConditionError": 932 elif method == "ResponseWatchConditionError":
935 self.debugServer.signalClientWatchConditionError( 933 self.debugServer.signalClientWatchConditionError(
936 params["condition"]) 934 params["condition"])
937 935
970 params["message"], self.translate(params["filename"], True), 968 params["message"], self.translate(params["filename"], True),
971 params["linenumber"], params["function"], params["arguments"]) 969 params["linenumber"], params["function"], params["arguments"])
972 970
973 elif method == "ResponseExit": 971 elif method == "ResponseExit":
974 self.__scriptName = "" 972 self.__scriptName = ""
973 # TODO: combine these into signalClientExit
975 self.debugServer.signalClientExit(params["status"]) 974 self.debugServer.signalClientExit(params["status"])
976 if params["message"]: 975 if params["message"]:
977 self.debugServer.signalClientOutput(params["message"]) 976 self.debugServer.signalClientOutput(params["message"])
978 977
979 elif method == "PassiveStartup": 978 elif method == "PassiveStartup":
1018 self.debugServer.clientUtTestSucceededUnexpected( 1017 self.debugServer.clientUtTestSucceededUnexpected(
1019 params["testname"], params["id"]) 1018 params["testname"], params["id"])
1020 1019
1021 elif method == "RequestForkTo": 1020 elif method == "RequestForkTo":
1022 self.__askForkTo() 1021 self.__askForkTo()
1023
1024 def __sendCommand(self, cmd):
1025 """
1026 Private method to send a single line command to the client.
1027
1028 @param cmd command to send to the debug client (string)
1029 """
1030 if self.qsock is not None:
1031 self.qsock.write(cmd.encode('utf8', 'backslashreplace'))
1032 else:
1033 self.queue.append(cmd)
1034 1022
1035 def __sendJsonCommand(self, command, params): 1023 def __sendJsonCommand(self, command, params):
1036 """ 1024 """
1037 Private method to send a single command to the client. 1025 Private method to send a single command to the client.
1038 1026
1083 if ext.startswith("."): 1071 if ext.startswith("."):
1084 exts.append(ext) 1072 exts.append(ext)
1085 else: 1073 else:
1086 exts.append(".{0}".format(ext)) 1074 exts.append(".{0}".format(ext))
1087 1075
1088 if exts: 1076 if exts and Preferences.getDebugger("Python3Interpreter"):
1089 return ["Python3", ClientDefaultCapabilities, exts, 1077 return ["Python3", ClientDefaultCapabilities, exts,
1090 createDebuggerInterfacePython3] 1078 createDebuggerInterfacePython3]
1091 else: 1079 else:
1092 return ["", 0, [], None] 1080 return ["", 0, [], None]

eric ide

mercurial