diff -r e9e7eca7efee -r bf71ee032bb4 src/eric7/DebugClients/Python/QProcessExtension.py --- a/src/eric7/DebugClients/Python/QProcessExtension.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/DebugClients/Python/QProcessExtension.py Wed Jul 13 14:55:47 2022 +0200 @@ -18,49 +18,52 @@ def patchQProcess(module, debugClient): """ Function to patch the QtCore module's QProcess. - + @param module reference to the imported module to be patched @type module @param debugClient reference to the debug client object @type DebugClient - """ # __IGNORE_WARNING_D234__ + """ # __IGNORE_WARNING_D234__ global _debugClient - + class QProcessWrapper(module.QProcess): """ Wrapper class for *.QProcess. """ + _origQProcessStartDetached = module.QProcess.startDetached - + def __init__(self, parent=None): """ Constructor """ super().__init__(parent) - + ################################################################### ## Handling of 'start(...)' below ################################################################### - + def start(self, *args, **kwargs): """ Public method to start the process. - + This method patches the arguments such, that a debug client is started for the Python script. A Python script is assumed, if the program to be started contains the string 'python'. - + @param args arguments of the start call @type list @param kwargs keyword arguments of the start call @type dict """ if ( - _debugClient.debugging and - _debugClient.multiprocessSupport and - ((len(args) >= 2 and isinstance(args[1], list)) or - (len(args) == 1 and not isinstance(args[0], str)) or - len(args) == 0) + _debugClient.debugging + and _debugClient.multiprocessSupport + and ( + (len(args) >= 2 and isinstance(args[1], list)) + or (len(args) == 1 and not isinstance(args[0], str)) + or len(args) == 0 + ) ): if len(args) >= 2: program = args[0] @@ -87,24 +90,23 @@ _debugClient, [program] + arguments, ) - super().start( - newArgs[0], newArgs[1:], mode) + super().start(newArgs[0], newArgs[1:], mode) return - + super().start(*args, **kwargs) - + ################################################################### ## Handling of 'startDetached(...)' below ################################################################### - + def startDetached(self, *args, **kwargs): """ Public method to start the detached process. - + This method patches the arguments such, that a debug client is started for the Python script. A Python script is assumed, if the program to be started contains the string 'python'. - + @param args arguments of the start call @type list @param kwargs keyword arguments of the start call @@ -113,19 +115,18 @@ @rtype bool """ if isinstance(self, str): - return QProcessWrapper.startDetachedStatic( - self, *args) + return QProcessWrapper.startDetachedStatic(self, *args) else: return self.__startDetached(*args, **kwargs) - + def __startDetached(self, *args, **kwargs): """ Private method to start the detached process. - + This method patches the arguments such, that a debug client is started for the Python script. A Python script is assumed, if the program to be started contains the string 'python'. - + @param args arguments of the start call @type list @param kwargs keyword arguments of the start call @@ -134,30 +135,29 @@ @rtype bool """ if ( - _debugClient.debugging and - _debugClient.multiprocessSupport and - len(args) == 0 + _debugClient.debugging + and _debugClient.multiprocessSupport + and len(args) == 0 ): program = self.program() arguments = self.arguments() wd = self.workingDirectory() - + ok = isPythonProgram(program) if ok: - return QProcessWrapper.startDetachedStatic( - program, arguments, wd) - + return QProcessWrapper.startDetachedStatic(program, arguments, wd) + return super().startDetached(*args, **kwargs) - + @staticmethod def startDetachedStatic(*args, **kwargs): """ Static method to start the detached process. - + This method patches the arguments such, that a debug client is started for the Python script. A Python script is assumed, if the program to be started contains the string 'python'. - + @param args arguments of the start call @type list @param kwargs keyword arguments of the start call @@ -166,9 +166,9 @@ @rtype bool """ if ( - _debugClient.debugging and - _debugClient.multiprocessSupport and - (len(args) >= 2 and isinstance(args[1], list)) + _debugClient.debugging + and _debugClient.multiprocessSupport + and (len(args) >= 2 and isinstance(args[1], list)) ): program = args[0] arguments = args[1] @@ -188,10 +188,10 @@ [program] + arguments, ) return QProcessWrapper._origQProcessStartDetached( - newArgs[0], newArgs[1:], wd) - - return QProcessWrapper._origQProcessStartDetached( - *args, **kwargs) - + newArgs[0], newArgs[1:], wd + ) + + return QProcessWrapper._origQProcessStartDetached(*args, **kwargs) + _debugClient = debugClient module.QProcess = QProcessWrapper