Mon, 24 Feb 2025 15:43:49 +0100
Adjusted the code to the modified issue codes.
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
11090
f5f5f5803935
Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11088
diff
changeset
|
3 | # Copyright (c) 2015 - 2025 Detlev Offenbach <detlev@die-offenbachs.de> |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing utilities functions for the debug client. |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
5258
cfca063afa07
Optimizations in sending data in AsyncFile. Also thread save.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
5178
diff
changeset
|
10 | import json |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
11 | import os |
11088
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
12 | import shutil |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
13 | import sys |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
14 | import traceback |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
15 | |
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
16 | from collections import namedtuple |
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
17 | from inspect import iscode, isframe |
5258
cfca063afa07
Optimizations in sending data in AsyncFile. Also thread save.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
5178
diff
changeset
|
18 | |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | # |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | # Taken from inspect.py of Python 3.4 |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | # |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | # Create constants for the compiler flags in Include/code.h |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | # We try to get them from dis to avoid duplication, but fall |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | # back to hardcoding so the dependency is optional |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | try: |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | from dis import COMPILER_FLAG_NAMES |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | except ImportError: |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | CO_OPTIMIZED, CO_NEWLOCALS = 0x1, 0x2 |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | CO_VARARGS, CO_VARKEYWORDS = 0x4, 0x8 |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | CO_NESTED, CO_GENERATOR, CO_NOFREE = 0x10, 0x20, 0x40 |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | else: |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | mod_dict = globals() |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | for k, v in COMPILER_FLAG_NAMES.items(): |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | mod_dict["CO_" + v] = k |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
38 | ArgInfo = namedtuple("ArgInfo", "args varargs keywords locals") |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | def getargvalues(frame): |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | """ |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | Function to get information about arguments passed into a |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | particular frame. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
45 | |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | @param frame reference to a frame object to be processed |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | @type frame |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | @return tuple of four things, where 'args' is a list of the argument names, |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | 'varargs' and 'varkw' are the names of the * and ** arguments or None |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | and 'locals' is the locals dictionary of the given frame. |
10417
c6011e501282
Modernized some code and converted Debug Client and Debugger source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10321
diff
changeset
|
51 | @rtype ArgInfo |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | @exception TypeError raised if the input parameter is not a frame object |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | """ |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | if not isframe(frame): |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
55 | raise TypeError("{0!r} is not a frame object".format(frame)) |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | args, varargs, kwonlyargs, varkw = _getfullargs(frame.f_code) |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | return ArgInfo(args + kwonlyargs, varargs, varkw, frame.f_locals) |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | def _getfullargs(co): |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | """ |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | Protected function to get information about the arguments accepted |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | by a code object. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
65 | |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | @param co reference to a code object to be processed |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | @type code |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | @return tuple of four things, where 'args' and 'kwonlyargs' are lists of |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | argument names, and 'varargs' and 'varkw' are the names of the |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | * and ** arguments or None. |
10417
c6011e501282
Modernized some code and converted Debug Client and Debugger source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10321
diff
changeset
|
71 | @rtype tuple of (list of str, list of str, list of str, list of str) |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | @exception TypeError raised if the input parameter is not a code object |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | """ |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | if not iscode(co): |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
75 | raise TypeError("{0!r} is not a code object".format(co)) |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | nargs = co.co_argcount |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | names = co.co_varnames |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | nkwargs = co.co_kwonlyargcount |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | args = list(names[:nargs]) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
81 | kwonlyargs = list(names[nargs : nargs + nkwargs]) |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | nargs += nkwargs |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | varargs = None |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | if co.co_flags & CO_VARARGS: |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | varargs = co.co_varnames[nargs] |
8217
385f60c94548
Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8205
diff
changeset
|
87 | nargs += 1 |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | varkw = None |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | if co.co_flags & CO_VARKEYWORDS: |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | varkw = co.co_varnames[nargs] |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | return args, varargs, kwonlyargs, varkw |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
94 | def formatargvalues( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
95 | args, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
96 | varargs, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
97 | varkw, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
98 | localsDict, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
99 | formatarg=str, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
100 | formatvarargs=lambda name: "*" + name, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
101 | formatvarkw=lambda name: "**" + name, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
102 | formatvalue=lambda value: "=" + repr(value), |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
103 | ): |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | """ |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | Function to format an argument spec from the 4 values returned |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | by getargvalues. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
107 | |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | @param args list of argument names |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | @type list of str |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | @param varargs name of the variable arguments |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | @type str |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | @param varkw name of the keyword arguments |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | @type str |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
114 | @param localsDict reference to the local variables dictionary |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | @type dict |
7900
72b88fb20261
Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7895
diff
changeset
|
116 | @param formatarg argument formatting function |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | @type func |
7900
72b88fb20261
Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7895
diff
changeset
|
118 | @param formatvarargs variable arguments formatting function |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | @type func |
7900
72b88fb20261
Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7895
diff
changeset
|
120 | @param formatvarkw keyword arguments formatting function |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | @type func |
7900
72b88fb20261
Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7895
diff
changeset
|
122 | @param formatvalue value formating functtion |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | @type func |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | @return formatted call signature |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | @rtype str |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | """ |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | specs = [] |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | for i in range(len(args)): |
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | name = args[i] |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
130 | specs.append(formatarg(name) + formatvalue(localsDict[name])) |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | if varargs: |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
132 | specs.append(formatvarargs(varargs) + formatvalue(localsDict[varargs])) |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | if varkw: |
5587
ea526b78ee6c
Started to fix code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
134 | specs.append(formatvarkw(varkw) + formatvalue(localsDict[varkw])) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
135 | argvalues = "(" + ", ".join(specs) + ")" |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
136 | if "__return__" in localsDict: |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
137 | argvalues += " -> " + formatvalue(localsDict["__return__"]) |
4455
ca13a6f6c452
Prepared the Python3 debug client for some obsolescences of the inspect.py module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | return argvalues |
4543
2e6a880670e9
Fixed a few code style issues (forgotten future imports, copyrights,...).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4455
diff
changeset
|
139 | |
5129
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
140 | |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
141 | def prepareJsonCommand(method, params): |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
142 | """ |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
143 | Function to prepare a single command or response for transmission to |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
144 | the IDE. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
145 | |
5129
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
146 | @param method command or response name to be sent |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
147 | @type str |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
148 | @param params dictionary of named parameters for the command or response |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
149 | @type dict |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
150 | @return prepared JSON command or response string |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
151 | @rtype str |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
152 | """ |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
153 | commandDict = { |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
154 | "jsonrpc": "2.0", |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
155 | "method": method, |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
156 | "params": params, |
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
157 | } |
10551
d80184d38152
Changed the interface to the debug client to make it a bit more robust and harmonize it with other such interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
158 | return json.dumps(commandDict) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
159 | |
5129
e4ab234cf071
Cleaned up the modified code for the modernized debugger interface (Python3 variant).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
160 | |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
161 | ########################################################################### |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
162 | ## Things related to monkey patching below |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
163 | ########################################################################### |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
164 | |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
165 | |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
166 | PYTHON_NAMES = ["python", "pypy"] |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
167 | |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
168 | |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
169 | def isWindowsPlatform(): |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
170 | """ |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
171 | Function to check, if this is a Windows platform. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
172 | |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
173 | @return flag indicating Windows platform |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
174 | @rtype bool |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
175 | """ |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
176 | return sys.platform.startswith(("win", "cygwin")) |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
177 | |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
178 | |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
179 | def isExecutable(program): |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
180 | """ |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
181 | Function to check, if the given program is executable. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
182 | |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
183 | @param program program path to be checked |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
184 | @type str |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
185 | @return flag indicating an executable program |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
186 | @rtype bool |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
187 | """ |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
188 | return os.access(os.path.abspath(program), os.X_OK) |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
189 | |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
190 | |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
191 | def startsWithShebang(program): |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
192 | """ |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
193 | Function to check, if the given program start with a Shebang line. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
194 | |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
195 | @param program program path to be checked |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
196 | @type str |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
197 | @return flag indicating an existing and valid shebang line |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
198 | @rtype bool |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
199 | """ |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
200 | try: |
7892
bd6b9e401166
DebugUtilities: fixed a little issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7873
diff
changeset
|
201 | if os.path.exists(program): |
bd6b9e401166
DebugUtilities: fixed a little issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7873
diff
changeset
|
202 | with open(program) as f: |
bd6b9e401166
DebugUtilities: fixed a little issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7873
diff
changeset
|
203 | for line in f: |
bd6b9e401166
DebugUtilities: fixed a little issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7873
diff
changeset
|
204 | line = line.strip() |
bd6b9e401166
DebugUtilities: fixed a little issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7873
diff
changeset
|
205 | if line: |
9500
5771348ded12
Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
206 | return any( |
5771348ded12
Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
207 | line.startswith("#!/usr/bin/env {0}".format(name)) |
5771348ded12
Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
208 | or (line.startswith("#!") and name in line) |
5771348ded12
Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
209 | for name in PYTHON_NAMES |
5771348ded12
Corrected some code style issues and changed some suppressed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
210 | ) |
7892
bd6b9e401166
DebugUtilities: fixed a little issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7873
diff
changeset
|
211 | else: |
bd6b9e401166
DebugUtilities: fixed a little issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7873
diff
changeset
|
212 | return False |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
213 | except UnicodeDecodeError: |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
214 | return False |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
215 | except Exception: |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
216 | traceback.print_exc() |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
217 | return False |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
218 | |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
219 | |
11088
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
220 | def isPythonProgram(program, withPath=False): |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
221 | """ |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
222 | Function to check, if the given program is a Python interpreter or |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
223 | program. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
224 | |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
225 | @param program program to be checked |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
226 | @type str |
11088
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
227 | @param withPath flag indicating to search the program in the executable |
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
228 | search path (defaults to False) |
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
229 | @type bool (optional) |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
230 | @return flag indicating a Python interpreter or program |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
231 | @rtype bool |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
232 | """ |
7421
4a9900aef04e
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7420
diff
changeset
|
233 | if not program: |
4a9900aef04e
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7420
diff
changeset
|
234 | return False |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
235 | |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
236 | prog = os.path.basename(program).lower() |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
237 | if any(pyname in prog for pyname in PYTHON_NAMES): |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8217
diff
changeset
|
238 | return True |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
239 | |
11088
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
240 | if withPath: |
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
241 | prog = shutil.which(program) |
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
242 | if prog: |
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
243 | program = prog |
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
244 | |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
245 | return ( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
246 | not isWindowsPlatform() and isExecutable(program) and startsWithShebang(program) |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
247 | ) |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
248 | |
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
249 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
250 | def removeQuotesFromArgs(args): |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
251 | """ |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
252 | Function to remove quotes from the arguments list. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
253 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
254 | @param args list of arguments |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
255 | @type list of str |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
256 | @return list of unquoted strings |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
257 | @rtype list of str |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
258 | """ |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
259 | if isWindowsPlatform(): |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
260 | newArgs = [] |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
261 | for x in args: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
262 | if len(x) > 1 and x.startswith('"') and x.endswith('"'): |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
263 | x = x[1:-1] |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
264 | newArgs.append(x) |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
265 | return newArgs |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
266 | else: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
267 | return args |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
268 | |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
269 | |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
270 | def quoteArgs(args): |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
271 | """ |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
272 | Function to quote the given list of arguments. |
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:
7646
diff
changeset
|
274 | @param args list of arguments to be quoted |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
275 | @type list of str |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
276 | @return list of quoted arguments |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
277 | @rtype list of str |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
278 | """ |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
279 | if isWindowsPlatform(): |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
280 | quotedArgs = [] |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
281 | for x in args: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
282 | if x.startswith('"') and x.endswith('"'): |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
283 | quotedArgs.append(x) |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
284 | else: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
285 | if " " in x: |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
286 | x = x.replace('"', '\\"') |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
287 | quotedArgs.append('"{0}"'.format(x)) |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
288 | else: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
289 | quotedArgs.append(x) |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
290 | return quotedArgs |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
291 | else: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
292 | return args |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
293 | |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
294 | |
11088
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
295 | def patchArguments(debugClient, arguments, noRedirect=False, isPythonProg=False): |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
296 | """ |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
297 | Function to patch the arguments given to start a program in order to |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
298 | execute it in our debugger. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
299 | |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
300 | @param debugClient reference to the debug client object |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
301 | @type DebugClient |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
302 | @param arguments list of program arguments |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
303 | @type list of str |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
304 | @param noRedirect flag indicating to not redirect stdin and stdout |
11088
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
305 | (defaults to False) |
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
306 | @type bool (optional) |
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
307 | @param isPythonProg flag indicating a Python script (defaults to False) |
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
308 | @type bool (optional) |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
309 | @return modified argument list |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
310 | @rtype list of str |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
311 | """ |
11088
0299c9ba1c6f
Improved subprocess debugging by support for the 'shell=True' parameter (see issue 575).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10551
diff
changeset
|
312 | if not (isPythonProg or isPythonProgram(arguments[0])): |
9571
0e2ab682dfa3
Fixed an issue in the multi process debugger causing a corrupted command line for an external non-Python program (e.g. if call via subprocess.Popen) (see issue466).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9500
diff
changeset
|
313 | # it is not a Python program |
0e2ab682dfa3
Fixed an issue in the multi process debugger causing a corrupted command line for an external non-Python program (e.g. if call via subprocess.Popen) (see issue466).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9500
diff
changeset
|
314 | return arguments |
0e2ab682dfa3
Fixed an issue in the multi process debugger causing a corrupted command line for an external non-Python program (e.g. if call via subprocess.Popen) (see issue466).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9500
diff
changeset
|
315 | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
316 | debugClientScript = os.path.join(os.path.dirname(__file__), "DebugClient.py") |
7873
cb2badbdf26c
MultiProcessDebugExtension: commented out the support for os.exec, os.spawn and os.posix_spawn.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7871
diff
changeset
|
317 | if debugClientScript in arguments: |
cb2badbdf26c
MultiProcessDebugExtension: commented out the support for os.exec, os.spawn and os.posix_spawn.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7871
diff
changeset
|
318 | # it is already patched |
cb2badbdf26c
MultiProcessDebugExtension: commented out the support for os.exec, os.spawn and os.posix_spawn.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7871
diff
changeset
|
319 | return arguments |
9221
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 | args = list(arguments[:]) # create a copy of the arguments list |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
322 | args = removeQuotesFromArgs(args) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
323 | |
7420
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
324 | # support for shebang line |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
325 | program = os.path.basename(args[0]).lower() |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
326 | for pyname in PYTHON_NAMES: |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
327 | if pyname in program: |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
328 | break |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
329 | else: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
330 | if (not isWindowsPlatform() and startsWithShebang(args[0])) or ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
331 | isWindowsPlatform() and args[0].lower().endswith(".py") |
8228
772103b14c18
Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
332 | ): |
772103b14c18
Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
333 | # 1. insert our interpreter as first argument if not Windows |
772103b14c18
Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
334 | # 2. insert our interpreter as first argument if on Windows and |
772103b14c18
Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
335 | # it is a Python script |
7873
cb2badbdf26c
MultiProcessDebugExtension: commented out the support for os.exec, os.spawn and os.posix_spawn.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7871
diff
changeset
|
336 | args.insert(0, sys.executable) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
337 | |
7420
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
338 | # extract list of interpreter arguments, i.e. all arguments before the |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
339 | # first one not starting with '-'. |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
340 | interpreter = args.pop(0) |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
341 | interpreterArgs = [] |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
342 | hasCode = False |
7895
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
343 | hasScriptModule = False |
7420
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
344 | while args: |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
345 | if args[0].startswith("-"): |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
346 | if args[0] in ("-W", "-X"): |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
347 | # take two elements off the list |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
348 | interpreterArgs.append(args.pop(0)) |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
349 | interpreterArgs.append(args.pop(0)) |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
350 | elif args[0] == "-c": |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
351 | # -c indicates code to be executed and ends the |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
352 | # arguments list |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
353 | args.pop(0) |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
354 | hasCode = True |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
355 | break |
7895
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
356 | elif args[0] == "-m": |
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
357 | # -m indicates a module to be executed as a script |
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
358 | # and ends the arguments list |
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
359 | args.pop(0) |
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
360 | hasScriptModule = True |
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
361 | break |
7420
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
362 | else: |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
363 | interpreterArgs.append(args.pop(0)) |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
364 | else: |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
365 | break |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
366 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
367 | ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
368 | wd, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
369 | host, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
370 | port, |
10321 | 371 | reportAllExceptions, |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
372 | tracePython, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
373 | redirect, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
374 | noencoding, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
375 | ) = debugClient.startOptions[:7] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
376 | |
7420
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
377 | modifiedArguments = [interpreter] |
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
378 | modifiedArguments.extend(interpreterArgs) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
379 | modifiedArguments.extend( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
380 | [ |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
381 | debugClientScript, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
382 | "-h", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
383 | host, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
384 | "-p", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
385 | str(port), |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
386 | "--no-passive", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
387 | ] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
388 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
389 | |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
390 | if wd: |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
391 | modifiedArguments.extend(["-w", wd]) |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
392 | if tracePython: |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
393 | modifiedArguments.append("-t") |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
394 | if noRedirect or not redirect: |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
395 | modifiedArguments.append("-n") |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
396 | if noencoding: |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
397 | modifiedArguments.append("--no-encoding") |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
398 | if debugClient.multiprocessSupport: |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
399 | modifiedArguments.append("--multiprocess") |
10321 | 400 | if reportAllExceptions: |
401 | modifiedArguments.append("--report-exceptions") | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
402 | if hasCode: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
403 | modifiedArguments.append("--code") |
7895
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
404 | modifiedArguments.append(args.pop(0)) |
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
405 | if hasScriptModule: |
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
406 | modifiedArguments.append("--module") |
554fdb07c856
Debugger: added support for the -m option to debug a module as a script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7892
diff
changeset
|
407 | modifiedArguments.append(args.pop(0)) |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
408 | modifiedArguments.append("--") |
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
409 | # end the arguments for DebugClient |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
410 | |
7419
9c1163735448
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7412
diff
changeset
|
411 | # append the arguments for the program to be debugged |
7420
0d596bb4a60d
Added multi process support for programs with a shebang line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7419
diff
changeset
|
412 | modifiedArguments.extend(args) |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
413 | modifiedArguments = quoteArgs(modifiedArguments) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
414 | |
7412
0a995393d2ba
Continued with the multiprocess debugger.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
415 | return modifiedArguments |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
416 | |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
417 | |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
418 | def stringToArgumentsWindows(args): |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
419 | """ |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
420 | Function to prepare a string of arguments for Windows platform. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
421 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
422 | @param args list of command arguments |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
423 | @type str |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
424 | @return list of command arguments |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
425 | @rtype list of str |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
426 | @exception RuntimeError raised to indicate an illegal arguments parsing |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
427 | condition |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
428 | """ |
8921 | 429 | # see http://msdn.microsoft.com/en-us/library/a1y7w461.aspx |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
430 | result = [] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
431 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
432 | DEFAULT = 0 |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
433 | ARG = 1 |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
434 | IN_DOUBLE_QUOTE = 2 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
435 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
436 | state = DEFAULT |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
437 | backslashes = 0 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
438 | buf = "" |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
439 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
440 | argsLen = len(args) |
8925
8375eb895f70
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8921
diff
changeset
|
441 | i = 0 |
8921 | 442 | while i < argsLen: |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
443 | ch = args[i] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
444 | if ch == "\\": |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
445 | backslashes += 1 |
8921 | 446 | i += 1 |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
447 | continue |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
448 | elif backslashes != 0: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
449 | if ch == '"': |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
450 | while backslashes >= 2: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
451 | backslashes -= 2 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
452 | buf += "\\" |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
453 | if backslashes == 1: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
454 | if state == DEFAULT: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
455 | state = ARG |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
456 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
457 | buf += '"' |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
458 | backslashes = 0 |
8921 | 459 | i += 1 |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
460 | continue |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
461 | else: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
462 | # false alarm, treat passed backslashes literally... |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
463 | if state == DEFAULT: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
464 | state = ARG |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
465 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
466 | while backslashes > 0: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
467 | backslashes -= 1 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
468 | buf += "\\" |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
469 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
470 | if ch in (" ", "\t"): |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
471 | if state == DEFAULT: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
472 | # skip |
8921 | 473 | i += 1 |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
474 | continue |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
475 | elif state == ARG: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
476 | state = DEFAULT |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
477 | result.append(buf) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
478 | buf = "" |
8921 | 479 | i += 1 |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
480 | continue |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
481 | |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
482 | if state not in (DEFAULT, ARG, IN_DOUBLE_QUOTE): |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
483 | raise RuntimeError("Illegal condition") |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
484 | |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
485 | if state == IN_DOUBLE_QUOTE: |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
486 | if ch == '"': |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
487 | if i + 1 < argsLen and args[i + 1] == '"': |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
488 | # Undocumented feature in Windows: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
489 | # Two consecutive double quotes inside a double-quoted |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
490 | # argument are interpreted as a single double quote. |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
491 | buf += '"' |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
492 | i += 1 |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
493 | elif len(buf) == 0: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
494 | result.append('""') |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
495 | state = DEFAULT |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
496 | else: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
497 | state = ARG |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
498 | else: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
499 | buf += ch |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
500 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
501 | else: |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
502 | if ch == '"': |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
503 | state = IN_DOUBLE_QUOTE |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
504 | else: |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
505 | state = ARG |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
506 | buf += ch |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
507 | |
8921 | 508 | i += 1 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
509 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
510 | if len(buf) > 0 or state != DEFAULT: |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
511 | result.append(buf) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
512 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
513 | return result |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
514 | |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
515 | |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
516 | def patchArgumentStringWindows(debugClient, argStr): |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
517 | """ |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
518 | Function to patch an argument string for Windows. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
519 | |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
520 | @param debugClient reference to the debug client object |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
521 | @type DebugClient |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
522 | @param argStr argument string |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
523 | @type str |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
524 | @return patched argument string |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
525 | @rtype str |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
526 | """ |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
527 | args = stringToArgumentsWindows(argStr) |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
528 | if not args or not isPythonProgram(args[0]): |
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
529 | return argStr |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
530 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
531 | argStr = " ".join(patchArguments(debugClient, args)) |
7871
eb65864ca038
Added some more process creation function overrides.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7646
diff
changeset
|
532 | return argStr |