Thu, 11 Jul 2024 14:21:34 +0200
MicroPython
- Updated the list of known CircuitPython boards for CPy 9.1.0.
- Updated the list of known UF2 capable boards.
8300 | 1 | # -*- coding: utf-8 -*- |
2 | ||
10439
21c28b0f9e41
Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10050
diff
changeset
|
3 | # Copyright (c) 2017 - 2024 Detlev Offenbach <detlev@die-offenbachs.de> |
8300 | 4 | # |
5 | ||
6 | """ | |
7 | Module implementing the JSON based client base class. | |
8 | """ | |
9 | ||
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
10 | import contextlib |
8300 | 11 | import io |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
12 | import json |
8300 | 13 | import select |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
14 | import socket |
10524
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
15 | import struct |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
16 | import sys |
8300 | 17 | import traceback |
10524
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
18 | import zlib |
8300 | 19 | |
20 | ||
8354
12ebd3934fef
Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8327
diff
changeset
|
21 | class EricJsonClient: |
8300 | 22 | """ |
23 | Class implementing a JSON based client base class. | |
24 | """ | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
25 | |
8300 | 26 | def __init__(self, host, port, idString=""): |
27 | """ | |
28 | Constructor | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
29 | |
9057
ddc46e93ccc4
Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8881
diff
changeset
|
30 | @param host IP address the background service is listening |
8300 | 31 | @type str |
32 | @param port port of the background service | |
33 | @type int | |
34 | @param idString assigned client id to be sent back to the server in | |
35 | order to identify the connection | |
36 | @type str | |
37 | """ | |
38 | self.__connection = socket.create_connection((host, port)) | |
39 | if idString: | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
40 | reply = idString + "\n" |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
41 | self.__connection.sendall(reply.encode("utf8", "backslashreplace")) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
42 | |
8300 | 43 | def sendJson(self, command, params): |
44 | """ | |
45 | Public method to send a single refactoring command to the server. | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
46 | |
8300 | 47 | @param command command name to be sent |
48 | @type str | |
49 | @param params dictionary of named parameters for the command | |
50 | @type dict | |
51 | """ | |
52 | commandDict = { | |
53 | "jsonrpc": "2.0", | |
54 | "method": command, | |
55 | "params": params, | |
56 | } | |
10524
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
57 | data = json.dumps(commandDict).encode("utf8", "backslashreplace") |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
58 | header = struct.pack(b"!II", len(data), zlib.adler32(data) & 0xFFFFFFFF) |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
59 | self.__connection.sendall(header) |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
60 | self.__connection.sendall(data) |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
61 | |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
62 | def __receiveBytes(self, length): |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
63 | """ |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
64 | Private method to receive the given length of bytes. |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
65 | |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
66 | @param length bytes to receive |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
67 | @type int |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
68 | @return received bytes or None if connection closed |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
69 | @rtype bytes |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
70 | """ |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
71 | data = bytearray() |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
72 | while len(data) < length: |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
73 | newData = self.__connection.recv(length - len(data)) |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
74 | if not newData: |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
75 | return None |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
76 | |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
77 | data += newData |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
78 | return data |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
79 | |
8300 | 80 | def __receiveJson(self): |
81 | """ | |
10522
c04e878aa308
Did some small code optimizations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
82 | Private method to receive a JSON encoded command and data from the |
8300 | 83 | server. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
84 | |
8300 | 85 | @return tuple containing the received command and a dictionary |
86 | containing the associated data | |
87 | @rtype tuple of (str, dict) | |
88 | """ | |
89 | # step 1: receive the data | |
10524
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
90 | header = self.__receiveBytes(struct.calcsize(b"!II")) |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
91 | if not header: |
8300 | 92 | return None, None |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
93 | |
10524
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
94 | length, datahash = struct.unpack(b"!II", header) |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
95 | |
8300 | 96 | length = int(length) |
10524
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
97 | data = self.__receiveBytes(length) |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
98 | if not data or zlib.adler32(data) & 0xFFFFFFFF != datahash: |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
99 | self.sendJson( |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
100 | "ClientException", |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
101 | { |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
102 | "ExceptionType": "ProtocolError", |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
103 | "ExceptionValue": "The checksum of the data does not match.", |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
104 | "ProtocolData": data.decode("utf8", "backslashreplace"), |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
105 | }, |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
106 | ) |
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
107 | return None, None |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
108 | |
8300 | 109 | # step 2: decode and convert the data |
10524
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
110 | jsonString = data.decode("utf8", "backslashreplace") |
8300 | 111 | try: |
10524
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
112 | commandDict = json.loads(jsonString.strip()) |
8300 | 113 | except (TypeError, ValueError) as err: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
114 | self.sendJson( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
115 | "ClientException", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
116 | { |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
117 | "ExceptionType": "ProtocolError", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
118 | "ExceptionValue": str(err), |
10524
ed4fd87c4d4c
JSON server and client
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10522
diff
changeset
|
119 | "ProtocolData": jsonString.strip(), |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
120 | }, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
121 | ) |
8300 | 122 | return None, None |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
123 | |
8300 | 124 | method = commandDict["method"] |
125 | params = commandDict["params"] | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
126 | |
8300 | 127 | return method, params |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
128 | |
8300 | 129 | def handleCall(self, method, params): |
130 | """ | |
131 | Public method to handle a method call from the server. | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
132 | |
8300 | 133 | Note: This is an empty implementation that must be overridden in |
134 | derived classes. | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
135 | |
8300 | 136 | @param method requested method name |
137 | @type str | |
138 | @param params dictionary with method specific parameters | |
139 | @type dict | |
140 | """ | |
141 | pass | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
142 | |
8300 | 143 | def run(self): |
144 | """ | |
145 | Public method implementing the main loop of the client. | |
146 | """ | |
147 | try: | |
148 | selectErrors = 0 | |
149 | while selectErrors <= 10: # selected arbitrarily | |
150 | try: | |
10689
3ede487187f2
Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10526
diff
changeset
|
151 | rrdy, _wrdy, _xrdy = select.select([self.__connection], [], []) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
152 | |
10526
2549534fcb55
Corrected some typos.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10524
diff
changeset
|
153 | # Just waiting for self.__connection. Therefore no check |
8300 | 154 | # needed. |
155 | method, params = self.__receiveJson() | |
156 | if method is None: | |
157 | selectErrors += 1 | |
158 | elif method == "Exit": | |
159 | break | |
160 | else: | |
161 | self.handleCall(method, params) | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
162 | |
8300 | 163 | # reset select errors |
164 | selectErrors = 0 | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
165 | |
10050
3750abc45d5e
Corrected some code style issues detected by the extended checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
166 | except (KeyboardInterrupt, select.error, socket.error): |
8300 | 167 | selectErrors += 1 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
168 | |
8300 | 169 | except Exception: |
170 | exctype, excval, exctb = sys.exc_info() | |
171 | tbinfofile = io.StringIO() | |
172 | traceback.print_tb(exctb, None, tbinfofile) | |
173 | tbinfofile.seek(0) | |
174 | tbinfo = tbinfofile.read() | |
175 | del exctb | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
176 | self.sendJson( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
177 | "ClientException", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
178 | { |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
179 | "ExceptionType": str(exctype), |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
180 | "ExceptionValue": str(excval), |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
181 | "Traceback": tbinfo, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
182 | }, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
183 | ) |
8300 | 184 | |
185 | # Give time to process latest response on server side | |
186 | with contextlib.suppress(socket.error, OSError): | |
187 | self.__connection.shutdown(socket.SHUT_RDWR) | |
188 | self.__connection.close() | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
189 | |
8327
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
190 | def poll(self, waitMethod=""): |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
191 | """ |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
192 | Public method to check and receive one message (if available). |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
193 | |
8327
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
194 | @param waitMethod name of a method to wait for |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
195 | @type str |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
196 | @return dictionary containing the data of the waited for method |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
197 | @rtype dict |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
198 | """ |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
199 | try: |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
200 | if waitMethod: |
10689
3ede487187f2
Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10526
diff
changeset
|
201 | rrdy, _wrdy, _xrdy = select.select([self.__connection], [], []) |
8327
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
202 | else: |
10689
3ede487187f2
Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10526
diff
changeset
|
203 | rrdy, _wrdy, _xrdy = select.select([self.__connection], [], [], 0) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
204 | |
8327
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
205 | if self.__connection in rrdy: |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
206 | method, params = self.__receiveJson() |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
207 | if method is not None: |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
208 | if method == "Exit": |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
209 | self.__exitClient = True |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
210 | elif method == waitMethod: |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
211 | return params |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
212 | else: |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
213 | self.handleCall(method, params) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
214 | |
10050
3750abc45d5e
Corrected some code style issues detected by the extended checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
215 | except (KeyboardInterrupt, select.error, socket.error): |
8327
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
216 | # just ignore these |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
217 | pass |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
218 | |
8327
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
219 | except Exception: |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
220 | exctype, excval, exctb = sys.exc_info() |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
221 | tbinfofile = io.StringIO() |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
222 | traceback.print_tb(exctb, None, tbinfofile) |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
223 | tbinfofile.seek(0) |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
224 | tbinfo = tbinfofile.read() |
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
225 | del exctb |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
226 | self.sendJson( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
227 | "ClientException", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
228 | { |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
229 | "ExceptionType": str(exctype), |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
230 | "ExceptionValue": str(excval), |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
231 | "Traceback": tbinfo, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
232 | }, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
233 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
234 | |
8327
666c2b81cbb7
Continued porting eric to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
235 | return None |