1818import sys
1919import signal
2020import socket
21+ import contextlib
2122
2223from packaging .version import parse as parse_version
2324
@@ -228,8 +229,9 @@ def _maybe_allow_interrupt(qapp):
228229 wsock , rsock = socket .socketpair ()
229230 wsock .setblocking (False )
230231 old_wakeup_fd = signal .set_wakeup_fd (wsock .fileno ())
231- sn = QtCore .QSocketNotifier (rsock .fileno (),
232- QtCore .QSocketNotifier .Read )
232+ sn = QtCore .QSocketNotifier (
233+ rsock .fileno (), _enum ('QtCore.QSocketNotifier.Type' ).Read
234+ )
233235
234236 @sn .activated .connect
235237 def on_signal (* args ):
@@ -252,59 +254,4 @@ def handle(*args):
252254 signal .set_wakeup_fd (old_wakeup_fd )
253255 signal .signal (signal .SIGINT , old_sigint_handler )
254256 if handler_args is not None :
255- old_sigint_handler (handler_args )
256-
257- # class _maybe_allow_interrupt:
258- #
259- # def __init__(self, qt_object):
260- # self.interrupted_qobject = qt_object
261- # self.old_fd = None
262- # self.caught_args = None
263- #
264- # self.skip = False
265- # self.old_sigint_handler = signal.getsignal(signal.SIGINT)
266- # if self.old_sigint_handler in (None, signal.SIG_IGN, signal.SIG_DFL):
267- # self.skip = True
268- # return
269- #
270- # QAS = QtNetwork.QAbstractSocket
271- # self.qt_socket = QAS(QAS.TcpSocket, qt_object)
272- # # Create a socket pair
273- # self.wsock, self.rsock = socket.socketpair()
274- # # Let Qt listen on the one end
275- # self.qt_socket.setSocketDescriptor(self.rsock.fileno())
276- # self.wsock.setblocking(False)
277- # self.qt_socket.readyRead.connect(self._readSignal)
278- #
279- # def __enter__(self):
280- # if self.skip:
281- # return
282- #
283- # signal.signal(signal.SIGINT, self._handle)
284- # # And let Python write on the other end
285- # self.old_fd = signal.set_wakeup_fd(self.wsock.fileno())
286- #
287- # def __exit__(self, type, val, traceback):
288- # if self.skip:
289- # return
290- #
291- # signal.set_wakeup_fd(self.old_fd)
292- # signal.signal(signal.SIGINT, self.old_sigint_handler)
293- #
294- # self.wsock.close()
295- # self.rsock.close()
296- # self.qt_socket.abort()
297- # if self.caught_args is not None:
298- # self.old_sigint_handler(*self.caught_args)
299- #
300- # def _readSignal(self):
301- # # Read the written byte to re-arm the socket if a signal different
302- # # from SIGINT was caught.
303- # # Since a custom handler was installed for SIGINT, KeyboardInterrupt
304- # # is not raised here.
305- # self.qt_socket.readData(1)
306- #
307- # def _handle(self, *args):
308- # self.caught_args = args # save the caught args to call the old
309- # # SIGINT handler afterwards
310- # self.interrupted_qobject.quit()
257+ old_sigint_handler (* handler_args )
0 commit comments