DebugClients/Python/DebugVariables.py

Mon, 19 Sep 2016 22:47:52 +0200

author
T.Rzepka <Tobias.Rzepka@gmail.com>
date
Mon, 19 Sep 2016 22:47:52 +0200
branch
debugger speed
changeset 5178
878ce843ca9f
parent 5171
DebugClients/Python3/DebugVariables.py@f1e9eebd5469
child 5239
27f56dc07b5b
permissions
-rw-r--r--

Preparation for combining the Python 2 and 3 debug clients. Base is Python 3.

5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2016 Detlev Offenbach <detlev@die-offenbachs.de>
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing classes and functions to dump variable contents.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 #
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 # This code was inspired by pydevd.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 #
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 MaxItemsToHandle = 300
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
15 TooLargeMessage = ("Too large to show contents. Max items to show: " +
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 str(MaxItemsToHandle))
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 TooLargeAttribute = "Too large to be handled."
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 ## Classes implementing resolvers for various compund types
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
23
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 class BaseResolver(object):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Base class of the resolver class tree.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 def resolve(self, var, attribute):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Public method to get an attribute from a variable.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @param var variable to extract an attribute or value from
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @type any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param attribute name of the attribute to extract
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type str
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @return value of the attribute
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @rtype any
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
38 @exception NotImplementedError raised to indicate a missing
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
39 implementation
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
40 """ # __IGNORE_WARNING_D235__
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 raise NotImplementedError
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 def getDictionary(self, var):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 Public method to get the attributes of a variable as a dictionary.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @param var variable to be converted
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @type any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @return dictionary containing the variable attributes
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @rtype dict
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
51 @exception NotImplementedError raised to indicate a missing
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
52 implementation
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
53 """ # __IGNORE_WARNING_D235__
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 raise NotImplementedError
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 class DefaultResolver(BaseResolver):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 Class used to resolve the default way.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 def resolve(self, var, attribute):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 Public method to get an attribute from a variable.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @param var variable to extract an attribute or value from
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @type any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @param attribute name of the attribute to extract
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @type str
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @return value of the attribute
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @rtype any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 return getattr(var, attribute)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 def getDictionary(self, var):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 Public method to get the attributes of a variable as a dictionary.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 @param var variable to be converted
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 @type any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 @return dictionary containing the variable attributes
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 @rtype dict
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 names = dir(var)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 if not names and hasattr(var, "__members__"):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 names = var.__members__
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 d = {}
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 for name in names:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 attribute = getattr(var, name)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 d[name] = attribute
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 except Exception:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 pass # if we can't get it, simply ignore it
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 return d
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 class DictResolver(BaseResolver):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 Class used to resolve from a dictionary.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 def resolve(self, var, attribute):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 Public method to get an attribute from a variable.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @param var variable to extract an attribute or value from
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 @type dict
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 @param attribute name of the attribute to extract
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 @type str
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 @return value of the attribute
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 @rtype any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 """
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
113 if attribute in ('___len___', TooLargeAttribute):
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 return None
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
116 if "(ID:" not in attribute:
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 return var[attribute]
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 except Exception:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 return getattr(var, attribute)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
122 expectedID = int(attribute.split("(ID:")[-1][:-1])
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 for key, value in var.items():
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 if id(key) == expectedID:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 return value
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 return None
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 def __keyToStr(self, key):
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
130 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
131 Private method to get a string representation for a key.
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
132
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
133 @param key key to be converted
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
134 @type any
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
135 @return string representation of the given key
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
136 @rtype str
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
137 """
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 if isinstance(key, str):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 return repr(key)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 else:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 return key
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 def getDictionary(self, var):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 Public method to get the attributes of a variable as a dictionary.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 @param var variable to be converted
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 @type any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 @return dictionary containing the variable attributes
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 @rtype dict
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 d = {}
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 count = 0
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 for key, value in var.items():
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 count += 1
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
156 key = "{0} (ID:{1})".format(self.__keyToStr(key), id(key))
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 d[key] = value
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 if count > MaxItemsToHandle:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 d[TooLargeAttribute] = TooLargeMessage
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 break
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
162 d["___len___"] = len(var)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 # in case it has additional fields
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 additionals = defaultResolver.getDictionary(var)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 d.update(additionals)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 return d
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 class ListResolver(BaseResolver):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 Class used to resolve from a tuple or list.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 def resolve(self, var, attribute):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 Public method to get an attribute from a variable.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 @param var variable to extract an attribute or value from
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @type tuple or list
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 @param attribute name of the attribute to extract
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 @type str
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 @return value of the attribute
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 @rtype any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 """
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
186 if attribute in ('___len___', TooLargeAttribute):
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 return None
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 return var[int(attribute)]
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 except Exception:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 return getattr(var, attribute)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 def getDictionary(self, var):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 Public method to get the attributes of a variable as a dictionary.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 @param var variable to be converted
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 @type any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 @return dictionary containing the variable attributes
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 @rtype dict
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 d = {}
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 count = 0
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 for value in var:
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
206 d[str(count)] = value
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 count += 1
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 if count > MaxItemsToHandle:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 d[TooLargeAttribute] = TooLargeMessage
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 break
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
212 d["___len___"] = len(var)
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
213
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
214 # in case it has additional fields
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
215 additionals = defaultResolver.getDictionary(var)
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
216 d.update(additionals)
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
217
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
218 return d
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
219
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
220
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
221 class SetResolver(BaseResolver):
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
222 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
223 Class used to resolve from a set or frozenset.
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
224 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
225 def resolve(self, var, attribute):
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
226 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
227 Public method to get an attribute from a variable.
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
228
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
229 @param var variable to extract an attribute or value from
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
230 @type tuple or list
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
231 @param attribute id of the value to extract
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
232 @type str
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
233 @return value of the attribute
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
234 @rtype any
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
235 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
236 if attribute in ('___len___', TooLargeAttribute):
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
237 return None
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
238
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
239 if attribute.startswith("ID:"):
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
240 attribute = attribute.split(None, 1)[1]
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
241 try:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
242 attribute = int(attribute)
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
243 except Exception:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
244 return getattr(var, attribute)
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
245
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
246 for v in var:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
247 if id(v) == attribute:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
248 return v
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
249
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
250 return None
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
251
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
252 def getDictionary(self, var):
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
253 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
254 Public method to get the attributes of a variable as a dictionary.
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
255
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
256 @param var variable to be converted
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
257 @type any
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
258 @return dictionary containing the variable attributes
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
259 @rtype dict
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
260 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
261 d = {}
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
262 count = 0
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
263 for value in var:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
264 count += 1
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
265 d["ID: " + str(id(value))] = value
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
266 if count > MaxItemsToHandle:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
267 d[TooLargeAttribute] = TooLargeMessage
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
268 break
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
269
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
270 d["___len___"] = len(var)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 # in case it has additional fields
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 additionals = defaultResolver.getDictionary(var)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 d.update(additionals)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 return d
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 defaultResolver = DefaultResolver()
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 dictResolver = DictResolver()
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 listResolver = ListResolver()
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
282 setResolver = SetResolver()
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 # TODO: add resolver for numpy arrays
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 # TODO: add resolver for Django MultiValueDict
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 # TODO: add resolver for collections.deque
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 ## Methods to determine the type of a variable and the
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 ## resolver class to use
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 _TypeMap = None
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
295
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 def _initTypeMap():
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 """
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
298 Protected function to initialize the type map.
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 global _TypeMap
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 _TypeMap = [
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 (type(None), None,),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 (int, None),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 (float, None),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 (complex, None),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 (str, None),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 (tuple, listResolver),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 (list, listResolver),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 (dict, dictResolver),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 ]
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 _TypeMap.append((long, None)) # __IGNORE_WARNING__
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 except Exception:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 pass # not available on all python versions
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 _TypeMap.append((unicode, None)) # __IGNORE_WARNING__
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 except Exception:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 pass # not available on all python versions
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
323 try:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
324 _TypeMap.append((set, setResolver)) # __IGNORE_WARNING__
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
325 except Exception:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
326 pass # not available on all python versions
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
327
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
328 try:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
329 _TypeMap.append((frozenset, setResolver)) # __IGNORE_WARNING__
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
330 except Exception:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
331 pass # not available on all python versions
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
332
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 def getType(obj):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 Public method to get the type information for an object.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 @param obj object to get type information for
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 @type any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 @return tuple containing the type, type name, type string and resolver
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 @rtype tuple of type, str, str, BaseResolver
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 typeObject = type(obj)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 typeName = typeObject.__name__
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 typeStr = str(typeObject)[8:-2]
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 if typeStr.startswith(("PyQt5.", "PyQt4.")):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 resolver = None
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 else:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 if _TypeMap is None:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 _initTypeMap()
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 for typeData in _TypeMap:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 if isinstance(obj, typeData[0]):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 resolver = typeData[1]
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 break
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 else:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 resolver = defaultResolver
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 return typeObject, typeName, typeStr, resolver
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
361
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
362 #
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
363 # eflag: noqa = M702

eric ide

mercurial