src/eric7/EricNetwork/EricJsonStreamReader.py

Sat, 31 Dec 2022 16:23:21 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 31 Dec 2022 16:23:21 +0100
branch
eric7
changeset 9653
e67609152c5e
parent 9521
a663a8be64da
child 9654
7328efba128b
child 10439
21c28b0f9e41
permissions
-rw-r--r--

Updated copyright for 2023.

9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9521
diff changeset
3 # Copyright (c) 2022 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a JSON based reader class.
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import json
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtCore import pyqtSignal, pyqtSlot
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
13 from PyQt6.QtNetwork import QHostAddress, QTcpServer
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
15 from eric7 import Preferences, Utilities
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
16 from eric7.EricWidgets import EricMessageBox
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 class EricJsonReader(QTcpServer):
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 Class implementing a JSON based reader class.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
22
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 The reader is responsible for opening a socket to listen for writer
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 connections.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
25
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @signal dataReceived(object) emitted after a data object was received
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
28
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 dataReceived = pyqtSignal(object)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
30
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 def __init__(self, name="", ip=None, parent=None):
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @param name name of the server (used for output only)
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @type str
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @param ip IP address to listen at
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @type str
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @param parent parent object
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @type QObject
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 super().__init__(parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.__name = name
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.__connection = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
46
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 # setup the network interface
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 if ip is None:
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 networkInterface = Preferences.getDebugger("NetworkInterface")
9521
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
50 if networkInterface in ("allv4", "localv4") or "." in networkInterface:
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 # IPv4
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52 self.__hostAddress = "127.0.0.1"
9521
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
53 elif networkInterface in ("all", "allv6", "localv6"):
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 # IPv6
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
55 self.__hostAddress = "::1"
9521
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
56 else:
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
57 self.__hostAddress = networkInterface
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 else:
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.__hostAddress = ip
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.listen(QHostAddress(self.__hostAddress))
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.newConnection.connect(self.handleNewConnection)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63
9521
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
64 ## Note: Need the address and port if client is started external in debugger.
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
65 hostAddressStr = (
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
66 "[{0}]".format(self.__hostAddress)
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
67 if ":" in self.__hostAddress
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
68 else self.__hostAddress
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
69 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
70 print( # __IGNORE_WARNING_M801__
9521
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
71 "JSON server ({2}) listening on: {0}:{1:d}".format(
a663a8be64da Debugger
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
72 hostAddressStr, self.serverPort(), self.__name
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
73 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
75
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 def address(self):
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 Public method to get the host address.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
79
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 @return host address
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 @rtype str
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 return self.__hostAddress
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
84
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 def port(self):
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 Public method to get the port number to connect to.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
88
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 @return port number
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @rtype int
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 return self.serverPort()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 @pyqtSlot()
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 def handleNewConnection(self):
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 Public slot for new incoming connections from a writer.
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 connection = self.nextPendingConnection()
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 if not connection.isValid():
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 if self.__connection is not None:
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.__connection.close()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105
9062
7f27bf3b50c3 Implemented most of the 'unittest' executor and runner.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9057
diff changeset
106 self.__connection = connection
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 connection.readyRead.connect(self.__receiveJson)
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 connection.disconnected.connect(self.__handleDisconnect)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
110
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 @pyqtSlot()
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 def __handleDisconnect(self):
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 Private slot handling a disconnect of the writer.
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 if self.__connection is not None:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
117 self.__receiveJson() # read all buffered data first
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 self.__connection.close()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 self.__connection = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
121
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 @pyqtSlot()
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 def __receiveJson(self):
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 """
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 Private slot handling received data from the writer.
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
9090
224c634a1808 Modified the JSON stream reader to ensure all data is read before the connection is closed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
127 while self.__connection and self.__connection.canReadLine():
224c634a1808 Modified the JSON stream reader to ensure all data is read before the connection is closed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9062
diff changeset
128 dataStr = self.__connection.readLine()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129 jsonLine = bytes(dataStr).decode("utf-8", "backslashreplace")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
130
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131 # - print("JSON Reader ({0}): {1}".format(self.__name, jsonLine))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
132 # - this is for debugging only
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
133
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 try:
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 data = json.loads(jsonLine.strip())
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 except (TypeError, ValueError) as err:
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 EricMessageBox.critical(
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 None,
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 self.tr("JSON Protocol Error"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
140 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
141 """<p>The data received from the writer"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142 """ could not be decoded. Please report"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143 """ this issue with the received data to the"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144 """ eric bugs email address.</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145 """<p>Error: {0}</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
146 """<p>Data:<br/>{1}</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
147 ).format(str(err), Utilities.html_encode(jsonLine.strip())),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148 EricMessageBox.Ok,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149 )
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
151
9057
ddc46e93ccc4 Added classes to realize a JSON based stream between two processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 self.dataReceived.emit(data)

eric ide

mercurial