src/eric7/DebugClients/Python/MultiProcessDebugExtension.py

Mon, 07 Nov 2022 17:19:58 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 07 Nov 2022 17:19:58 +0100
branch
eric7
changeset 9482
a2bc06a54d9d
parent 9473
3f23dbf37dbe
child 9571
0e2ab682dfa3
permissions
-rw-r--r--

Corrected/acknowledged some bad import style and removed some obsolete code.

7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
3 # Copyright (c) 2002 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a function to patch the process creation functions to
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 support multiprocess debugging.
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
8243
cc717c2ae956 Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8222
diff changeset
11 import contextlib
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
12 import os
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
13 import sys
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
15 from DebugUtilities import (
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
16 isPythonProgram,
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
17 isWindowsPlatform,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
18 patchArguments,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19 patchArgumentStringWindows,
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
20 )
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 _debugClient = None
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
25 def _shallPatch():
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
26 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
27 Function to determine, if the multiprocessing patches should be done.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
28
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
29 @return flag indicating patching should be performed
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
30 @rtype bool
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
31 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
32 return _debugClient.debugging and _debugClient.multiprocessSupport
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
33
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
34
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 def patchModule(module, functionName, createFunction):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 Function to replace a function of a module with a modified one.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
38
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @param module reference to the module
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @type types.ModuleType
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @param functionName name of the function to be replaced
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @type str
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @param createFunction function creating the replacement
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @type types.FunctionType
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 if hasattr(module, functionName):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
47 originalName = "original_" + functionName
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 if not hasattr(module, originalName):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 setattr(module, originalName, getattr(module, functionName))
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 setattr(module, functionName, createFunction(originalName))
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 def createExecl(originalName):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 Function to patch the 'execl' process creation functions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 <ul>
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 <li>os.execl(path, arg0, arg1, ...)</li>
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 <li>os.execle(path, arg0, arg1, ..., env)</li>
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 <li>os.execlp(file, arg0, arg1, ...)</li>
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 <li>os.execlpe(file, arg0, arg1, ..., env)</li>
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
64 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
65 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
66 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
67 @rtype function
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 def newExecl(path, *args):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 Function replacing the 'execl' functions of the os module.
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 """
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
74 if _shallPatch():
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
75 args = patchArguments(_debugClient, args)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
76 if isPythonProgram(args[0]):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
77 path = args[0]
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
78 return getattr(os, originalName)(path, *args)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
79
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
80 return newExecl
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
81
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
82
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
83 def createExecv(originalName):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
84 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
85 Function to patch the 'execv' process creation functions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
87 <ul>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
88 <li>os.execv(path, args)</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
89 <li>os.execvp(file, args)</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
90 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
92 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
93 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
94 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
95 @rtype function
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
96 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
97
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
98 def newExecv(path, args):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
99 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
100 Function replacing the 'execv' functions of the os module.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
101 """
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
102 if _shallPatch():
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
103 args = patchArguments(_debugClient, args)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
104 if isPythonProgram(args[0]):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
105 path = args[0]
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
106 return getattr(os, originalName)(path, args)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
108 return newExecv
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
109
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
110
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
111 def createExecve(originalName):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
112 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
113 Function to patch the 'execve' process creation functions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
115 <ul>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
116 <li>os.execve(path, args, env)</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
117 <li>os.execvpe(file, args, env)</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
118 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
120 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
121 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
122 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
123 @rtype function
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
124 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
126 def newExecve(path, args, env):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
127 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
128 Function replacing the 'execve' functions of the os module.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
129 """
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
130 if _shallPatch():
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 args = patchArguments(_debugClient, args)
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 if isPythonProgram(args[0]):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 path = args[0]
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
134 return getattr(os, originalName)(path, args, env)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
135
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
136 return newExecve
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
137
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
138
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
139 def createSpawnl(originalName):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
140 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
141 Function to patch the 'spawnl' process creation functions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
143 <ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
144 <li>os.spawnl(mode, path, arg0, arg1, ...)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
145 <li>os.spawnlp(mode, file, arg0, arg1, ...)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
146 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
147
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
148 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
149 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
150 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
151 @rtype function
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
152 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
153
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
154 def newSpawnl(mode, path, *args):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
155 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
156 Function replacing the 'spawnl' functions of the os module.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
157 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
158 args = patchArguments(_debugClient, args)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
159 return getattr(os, originalName)(mode, path, *args)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
160
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
161 return newSpawnl
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
162
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
163
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
164 def createSpawnv(originalName):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
165 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
166 Function to patch the 'spawnv' process creation functions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
167
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
168 <ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
169 <li>os.spawnv(mode, path, args)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
170 <li>os.spawnvp(mode, file, args)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
171 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
172
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
173 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
174 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
175 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
176 @rtype function
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
177 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
179 def newSpawnv(mode, path, args):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
180 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
181 Function replacing the 'spawnv' functions of the os module.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
182 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
183 args = patchArguments(_debugClient, args)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
184 return getattr(os, originalName)(mode, path, args)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
185
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
186 return newSpawnv
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
187
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
188
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
189 def createSpawnve(originalName):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
190 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
191 Function to patch the 'spawnve' process creation functions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
192
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
193 <ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
194 <li>os.spawnve(mode, path, args, env)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
195 <li>os.spawnvpe(mode, file, args, env)</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
196 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
197
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
198 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
199 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
200 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
201 @rtype function
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
202 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
203
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
204 def newSpawnve(mode, path, args, env):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
205 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
206 Function replacing the 'spawnve' functions of the os module.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
207 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
208 args = patchArguments(_debugClient, args)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
209 return getattr(os, originalName)(mode, path, args, env)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
210
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
211 return newSpawnve
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
212
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
213
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
214 def createPosixSpawn(originalName):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
215 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
216 Function to patch the 'posix_spawn' process creation functions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
217
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
218 <ul>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
219 <li>os.posix_spawn(path, argv, env, *, file_actions=None, ...
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
220 (6 more))</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
221 <li>os.posix_spawnp(path, argv, env, *, file_actions=None, ...
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
222 (6 more))</li>
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
223 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
224
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
225 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
226 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
227 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
228 @rtype function
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
229 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
230
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
231 def newPosixSpawn(path, argv, env, **kwargs):
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
232 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
233 Function replacing the 'posix_spawn' functions of the os module.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
234 """
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
235 argv = patchArguments(_debugClient, argv)
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
236 return getattr(os, originalName)(path, argv, env, **kwargs)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
238 return newPosixSpawn
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
239
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
240
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
241 def createForkExec(originalName):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
242 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
243 Function to patch the 'fork_exec' process creation functions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
244
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
245 <ul>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
246 <li>_posixsubprocess.fork_exec(args, executable_list, close_fds,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
247 ... (13 more))</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
248 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
249
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
250 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
251 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
252 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
253 @rtype function
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
254 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
255
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
256 def newForkExec(args, *other_args):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
257 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
258 Function replacing the 'fork_exec' functions of the _posixsubprocess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
259 module.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
260 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
261 import _posixsubprocess # __IGNORE_WARNING_I103__
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
262
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
263 if _shallPatch():
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
264 args = patchArguments(_debugClient, args)
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
265 return getattr(_posixsubprocess, originalName)(args, *other_args)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
266
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
267 return newForkExec
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
268
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
269
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
270 def createFork(originalName):
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
271 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
272 Function to patch the 'fork' process creation functions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
273
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
274 <ul>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
275 <li>os.fork()</li>
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
276 </ul>
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
277
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
278 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
279 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
280 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
281 @rtype function
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
282 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
283
7877
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
284 def newFork():
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
285 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
286 Function replacing the 'fork' function of the os module.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
287 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
288 # A simple fork will result in a new python process
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
289 isNewPythonProcess = True
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
290 frame = sys._getframe()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
291
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
292 multiprocess = _shallPatch()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
293
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
294 isSubprocessFork = False
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
295 isMultiprocessingPopen = False
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
296 while frame is not None:
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
297 if frame.f_code.co_name == "_Popen":
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
298 # fork() was called from multiprocessing; ignore this here
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
299 # because it is handled in 'MultiprocessingExtension.py'.
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
300 isMultiprocessingPopen = True
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
301 break
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
302
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
303 elif (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
304 frame.f_code.co_name == "_execute_child"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
305 and "subprocess" in frame.f_code.co_filename
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
306 ):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
307 isSubprocessFork = True
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
308 # If we're actually in subprocess.Popen creating a child, it
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
309 # may result in something which is not a Python process, (so,
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
310 # we don't want to connect with it in the forked version).
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
311 executable = frame.f_locals.get("executable")
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
312 if executable is not None:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
313 isNewPythonProcess = False
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
314 if isPythonProgram(executable):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
315 isNewPythonProcess = True
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
316 break
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
317
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
318 frame = frame.f_back
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
319 frame = None # Just make sure we don't hold on to it.
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
320
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
321 childProcess = getattr(os, originalName)() # fork
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
322 if not childProcess and not isMultiprocessingPopen and isNewPythonProcess:
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
323 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
324 wd,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
325 host,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
326 port,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
327 exceptions,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
328 tracePython,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
329 redirect,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
330 noencoding,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
331 ) = _debugClient.startOptions
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7973
diff changeset
332 _debugClient.startDebugger(
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7973
diff changeset
333 filename=sys.argv[0],
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7973
diff changeset
334 host=host,
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7973
diff changeset
335 port=port,
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7973
diff changeset
336 enableTrace=multiprocess and not isSubprocessFork,
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7973
diff changeset
337 exceptions=exceptions,
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7973
diff changeset
338 tracePython=tracePython,
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7973
diff changeset
339 redirect=redirect,
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7973
diff changeset
340 passive=False,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
341 multiprocessSupport=multiprocess,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
342 )
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
343 return childProcess
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
344
7877
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
345 return newFork
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
346
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
347
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
348 def createCreateProcess(originalName):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
349 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
350 Function to patch the 'CreateProcess' process creation function of
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
351 Windows.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
353 @param originalName original name of the function to be patched
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
354 @type str
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
355 @return function replacing the original one
7887
c1588f5a83e9 Updated source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7877
diff changeset
356 @rtype function
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
357 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
358
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
359 def newCreateProcess(appName, cmdline, *args):
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
360 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
361 Function replacing the 'CreateProcess' function of the _subprocess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
362 or _winapi module.
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
363 """
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
364 try:
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
365 import _subprocess # __IGNORE_WARNING_I10__
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
366 except ImportError:
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
367 import _winapi as _subprocess # __IGNORE_WARNING_I10__
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
368 return getattr(_subprocess, originalName)(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
369 appName, patchArgumentStringWindows(_debugClient, cmdline), *args
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
370 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
371
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
372 return newCreateProcess
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
373
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
374
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 def patchNewProcessFunctions(multiprocessEnabled, debugClient):
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 Function to patch the process creation functions to support multiprocess
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 debugging.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
379
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 @param multiprocessEnabled flag indicating multiprocess support
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 @type bool
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 @param debugClient reference to the debug client object
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 @type DebugClient
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 """
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 global _debugClient
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 if not multiprocessEnabled:
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 # return without patching
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
390
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 # patch 'os.exec...()' functions
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
392 # - patchModule(os, "execl", createExecl)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
393 # - patchModule(os, "execle", createExecl)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
394 # - patchModule(os, "execlp", createExecl)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
395 # - patchModule(os, "execlpe", createExecl)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
396 # - patchModule(os, "execv", createExecv)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397 # - patchModule(os, "execve", createExecve)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
398 # - patchModule(os, "execvp", createExecv)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
399 # - patchModule(os, "execvpe", createExecve)
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
400 # patch 'os.spawn...()' functions
7877
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
401 patchModule(os, "spawnl", createSpawnl)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
402 patchModule(os, "spawnle", createSpawnl)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
403 patchModule(os, "spawnlp", createSpawnl)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
404 patchModule(os, "spawnlpe", createSpawnl)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
405 patchModule(os, "spawnv", createSpawnv)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
406 patchModule(os, "spawnve", createSpawnve)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
407 patchModule(os, "spawnvp", createSpawnv)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
408 patchModule(os, "spawnvpe", createSpawnve)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
409
7872
433dacbfa456 Python debug client: added the multi process extension for the process creation functions in the 'os', '_posixsubprocess' and Windows '_subprocess' or '_winapi' modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7871
diff changeset
410 # patch 'os.posix_spawn...()' functions
7877
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
411 if sys.version_info >= (3, 8) and not isWindowsPlatform():
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
412 patchModule(os, "posix_spawn", createPosixSpawn)
72386134c80a Debugger: completed support for the multiprocessing module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7873
diff changeset
413 patchModule(os, "posix_spawnp", createPosixSpawn)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
414
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
415 if isWindowsPlatform():
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
416 try:
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
417 import _subprocess # __IGNORE_WARNING_I10__
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
418 except ImportError:
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
419 import _winapi as _subprocess # __IGNORE_WARNING_I10__
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
420 patchModule(_subprocess, "CreateProcess", createCreateProcess)
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
421 else:
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
422 patchModule(os, "fork", createFork)
8243
cc717c2ae956 Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8222
diff changeset
423 with contextlib.suppress(ImportError):
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
424 import _posixsubprocess # __IGNORE_WARNING_I10__
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
425
7871
eb65864ca038 Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7802
diff changeset
426 patchModule(_posixsubprocess, "fork_exec", createForkExec)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
427
7422
9a008ab4811b Started implementing the patching of the os module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 _debugClient = debugClient

eric ide

mercurial