eric6/DebugClients/Python/DebugVariables.py

Tue, 02 Mar 2021 17:17:09 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 02 Mar 2021 17:17:09 +0100
changeset 8143
2c730d5fd177
parent 7988
c4c17121eff8
child 8043
0acf98cd089a
child 8205
4a0f1f896341
permissions
-rw-r--r--

Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.

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
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7914
diff changeset
3 # Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
5169
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
6978
720247f98e1f Improved determination of expandable items including removing 'other' as selectable type.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6969
diff changeset
10 from DebugConfig import ConfigQtNames, ConfigKnownQtTypes, BatchSize
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
11
5169
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 # 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
14 #
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 ## 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
18 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
20
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 class BaseResolver(object):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 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
24 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 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
26 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 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
28
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @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
30 @type any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @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
32 @type str
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @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
34 @rtype any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
36 return getattr(var, attribute, None)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 def getDictionary(self, var):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 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
41
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @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
43 @type any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @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
45 @rtype dict
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 names = dir(var)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 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
49 names = var.__members__
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 d = {}
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 for name in names:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 attribute = getattr(var, name)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 d[name] = attribute
7628
f904d0eef264 Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7594
diff changeset
56 except Exception: # secok
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 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
58
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 return d
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
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
62 ############################################################
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
63 ## Default Resolver
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
64 ############################################################
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
65
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
66
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
67 class DefaultResolver(BaseResolver):
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
68 """
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
69 Class used to resolve the default way.
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
70 """
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
71 def getDictionary(self, var):
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
72 """
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
73 Public method to get the attributes of a variable as a dictionary.
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
74
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
75 @param var variable to be converted
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
76 @type any
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
77 @yield tuple containing the batch start index and a dictionary
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
78 containing the variable attributes
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
79 @ytype tuple of (int, dict)
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
80 """
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
81 names = dir(var)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
82 if not names and hasattr(var, "__members__"):
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
83 names = var.__members__
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
84
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
85 d = {}
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
86 for name in names:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
87 try:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
88 attribute = getattr(var, name)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
89 d[name] = attribute
7628
f904d0eef264 Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7594
diff changeset
90 except Exception: # secok
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
91 pass # if we can't get it, simply ignore it
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
92
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
93 yield -1, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
94 while True:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
95 yield -2, {}
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
96
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
97
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
98 ############################################################
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
99 ## Resolver for Dictionaries
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
100 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
101
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
102
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 class DictResolver(BaseResolver):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 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
106 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 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
108 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 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
110
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 @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
112 @type dict
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 @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
114 @type str
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 @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
116 @rtype any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
118 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
119 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 return var[attribute]
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 except Exception:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
122 return getattr(var, attribute, None)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
124 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
125 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
126 if id(key) == expectedID:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 return value
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 return None
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
131 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
132 """
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
133 Public method to get a string representation for a key.
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
134
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
135 @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
136 @type any
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
137 @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
138 @rtype str
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
139 """
7637
c878e8255972 Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7628
diff changeset
140 if isinstance(key, str):
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
141 key = repr(key)
7862
817ef8e0fa66 Debugger: changed the handling of variable type filters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7639
diff changeset
142 # Special handling for bytes object
817ef8e0fa66 Debugger: changed the handling of variable type filters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7639
diff changeset
143 # Raw and f-Strings are always converted to str
817ef8e0fa66 Debugger: changed the handling of variable type filters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7639
diff changeset
144 if key[0] == 'b':
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
145 key = key[1:]
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
146
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
147 return key # __IGNORE_WARNING_M834__
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 def getDictionary(self, var):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 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
152
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 @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
154 @type any
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
155 @yield tuple containing the batch start index and a dictionary
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
156 containing the variable attributes
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
157 @ytype tuple of (int, dict)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 d = {}
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
160 start = count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
161 allItems = list(var.items())
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
162 try:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
163 # Fast path: all items from same type
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
164 allItems.sort(key=lambda x: x[0])
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
165 except TypeError:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
166 # Slow path: only sort items with same type (Py3 only)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
167 allItems.sort(key=lambda x: (str(x[0]), x[0]))
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
168
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
169 for key, value in allItems:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
170 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
171 d[key] = value
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
172 count += 1
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
173 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
174 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
175 start += count
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
176 count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
177 d = {}
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
179 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
180 yield start, d
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 # in case it has additional fields
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
183 d = super(DictResolver, self).getDictionary(var)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
184 yield -1, d
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
186 while True:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
187 yield -2, {}
5169
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
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
190 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
191 ## Resolver for Lists and Tuples
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
192 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
193
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
194
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 class ListResolver(BaseResolver):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 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
198 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 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
200 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 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
202
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 @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
204 @type tuple or list
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 @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
206 @type str
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 @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
208 @rtype any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 return var[int(attribute)]
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 except Exception:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
213 return getattr(var, attribute, None)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 def getDictionary(self, var):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 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
218
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 @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
220 @type any
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
221 @yield tuple containing the batch start index and a dictionary
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
222 containing the variable attributes
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
223 @ytype tuple of (int, dict)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 d = {}
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
226 start = count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
227 for idx, value in enumerate(var):
7914
999f07b00a49 Fixed double elements in first expanded list / tuple after the next step command and some update issues on lists.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7862
diff changeset
228 d[idx] = value
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 count += 1
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
230 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
231 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
232 start = idx + 1
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
233 count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
234 d = {}
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
236 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
237 yield start, d
5171
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 # in case it has additional fields
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
240 d = super(ListResolver, self).getDictionary(var)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
241 yield -1, d
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
242
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
243 while True:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
244 yield -2, {}
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
245
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
246
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
247 ############################################################
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
248 ## Resolver for dict_items, dict_keys and dict_values
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
249 ############################################################
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
250
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
251
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
252 class DictViewResolver(ListResolver):
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
253 """
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
254 Class used to resolve from dict views.
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
255 """
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
256 def resolve(self, var, attribute):
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
257 """
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
258 Public method to get an attribute from a variable.
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
259
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
260 @param var variable to extract an attribute or value from
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
261 @type tuple or list
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
262 @param attribute id of the value to extract
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
263 @type str
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
264 @return value of the attribute
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
265 @rtype any
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
266 """
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
267 return super(DictViewResolver, self).resolve(list(var), attribute)
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
268
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
269 def getDictionary(self, var):
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
270 """
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
271 Public method to get the attributes of a variable as a dictionary.
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
272
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
273 @param var variable to be converted
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
274 @type any
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
275 @return dictionary containing the variable attributes
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
276 @rtype dict
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
277 """
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
278 return super(DictViewResolver, self).getDictionary(list(var))
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
279
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
280
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
281 ############################################################
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
282 ## Resolver for Sets and Frozensets
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
283 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
284
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
285
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
286 class SetResolver(BaseResolver):
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
287 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
288 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
289 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
290 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
291 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
292 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
293
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
294 @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
295 @type tuple or list
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
296 @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
297 @type str
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
298 @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
299 @rtype any
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
300 """
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
301 if attribute.startswith("'ID: "):
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
302 attribute = attribute.split(None, 1)[1][:-1]
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
303 try:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
304 attribute = int(attribute)
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
305 except Exception:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
306 return getattr(var, attribute, None)
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
307
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
308 for v in var:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
309 if id(v) == attribute:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
310 return v
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
311
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
312 return None
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
313
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
314 def getDictionary(self, var):
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
315 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
316 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
317
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
318 @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
319 @type any
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
320 @yield tuple containing the batch start index and a dictionary
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
321 containing the variable attributes
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
322 @ytype tuple of (int, dict)
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
323 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
324 d = {}
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
325 start = count = 0
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
326 for value in var:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
327 count += 1
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
328 d["'ID: {0}'".format(id(value))] = value
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
329 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
330 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
331 start += count
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
332 count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
333 d = {}
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
334
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
335 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
336 yield start, d
5169
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 # in case it has additional fields
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
339 additionals = super(SetResolver, self).getDictionary(var)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
340 yield -1, additionals
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
342 while True:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
343 yield -2, {}
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
344
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
346 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
347 ## Resolver for Numpy Arrays
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
348 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
349
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
350
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
351 class NdArrayResolver(BaseResolver):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
352 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
353 Class used to resolve from numpy ndarray including some meta data.
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
354 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
355 def __isNumeric(self, arr):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
356 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
357 Private method to check, if an array is of a numeric type.
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
358
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
359 @param arr array to check
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
360 @type ndarray
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
361 @return flag indicating a numeric array
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
362 @rtype bool
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
363 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
364 try:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
365 return arr.dtype.kind in 'biufc'
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
366 except AttributeError:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
367 return False
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
368
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
369 def resolve(self, var, attribute):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
370 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
371 Public method to get an attribute from a variable.
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
372
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
373 @param var variable to extract an attribute or value from
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
374 @type tuple or list
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
375 @param attribute id of the value to extract
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
376 @type str
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
377 @return value of the attribute
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
378 @rtype any
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
379 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
380 if attribute == 'min':
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
381 if self.__isNumeric(var):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
382 return var.min()
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
383 else:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
384 return None
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
385
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
386 if attribute == 'max':
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
387 if self.__isNumeric(var):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
388 return var.max()
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
389 else:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
390 return None
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
391
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
392 if attribute == 'mean':
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
393 if self.__isNumeric(var):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
394 return var.mean()
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
395 else:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
396 return None
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
397
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
398 try:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
399 return var[int(attribute)]
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
400 except Exception:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
401 return getattr(var, attribute, None)
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
402
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
403 return None
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
404
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
405 def getDictionary(self, var):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
406 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
407 Public method to get the attributes of a variable as a dictionary.
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
408
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
409 @param var variable to be converted
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
410 @type any
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
411 @yield tuple containing the batch start index and a dictionary
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
412 containing the variable attributes
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
413 @ytype tuple of (int, dict)
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
414 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
415 d = {}
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
416 start = count = 0
7332
49076c600903 Bugfixes for displaying numpy arrays.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7250
diff changeset
417 try:
49076c600903 Bugfixes for displaying numpy arrays.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7250
diff changeset
418 len(var) # Check if it's an unsized object, e.g. np.ndarray(())
49076c600903 Bugfixes for displaying numpy arrays.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7250
diff changeset
419 allItems = var.tolist()
49076c600903 Bugfixes for displaying numpy arrays.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7250
diff changeset
420 except TypeError: # TypeError: len() of unsized object
49076c600903 Bugfixes for displaying numpy arrays.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7250
diff changeset
421 allItems = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
422
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
423 for idx, value in enumerate(allItems):
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
424 d[str(idx)] = value
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
425 count += 1
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
426 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
427 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
428 start += count
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
429 count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
430 d = {}
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
431
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
432 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
433 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
434
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
435 # in case it has additional fields
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
436 d = super(NdArrayResolver, self).getDictionary(var)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
437
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
438 if var.size > 1024 * 1024:
7250
d8bdc55aee1a Started to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6988
diff changeset
439 d['min'] = (
d8bdc55aee1a Started to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6988
diff changeset
440 'ndarray too big, calculating min would slow down debugging')
d8bdc55aee1a Started to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6988
diff changeset
441 d['max'] = (
d8bdc55aee1a Started to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6988
diff changeset
442 'ndarray too big, calculating max would slow down debugging')
d8bdc55aee1a Started to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6988
diff changeset
443 d['mean'] = (
d8bdc55aee1a Started to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6988
diff changeset
444 'ndarray too big, calculating mean would slow down debugging')
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
445 elif self.__isNumeric(var):
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
446 if var.size == 0:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
447 d['min'] = 'empty array'
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
448 d['max'] = 'empty array'
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
449 d['mean'] = 'empty array'
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
450 else:
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
451 d['min'] = var.min()
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
452 d['max'] = var.max()
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
453 d['mean'] = var.mean()
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
454 else:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
455 d['min'] = 'not a numeric object'
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
456 d['max'] = 'not a numeric object'
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
457 d['mean'] = 'not a numeric object'
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
458
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
459 yield -1, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
460
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
461 while True:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
462 yield -2, {}
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
463
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
464
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
465 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
466 ## Resolver for Django Multi Value Dictionaries
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
467 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
468
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
469
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
470 class MultiValueDictResolver(DictResolver):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
471 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
472 Class used to resolve from Django multi value dictionaries.
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
473 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
474 def resolve(self, var, attribute):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
475 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
476 Public method to get an attribute from a variable.
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
477
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
478 @param var variable to extract an attribute or value from
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
479 @type dict
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
480 @param attribute name of the attribute to extract
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
481 @type str
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
482 @return value of the attribute
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
483 @rtype any
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
484 """
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
485 if " (ID:" not in attribute:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
486 try:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
487 return var[attribute]
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
488 except Exception:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
489 return getattr(var, attribute, None)
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
490
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
491 expectedID = int(attribute.split(" (ID:")[-1][:-1])
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
492 for key in var.keys():
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
493 if id(key) == expectedID:
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
494 return var.getlist(key)
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
495
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
496 return None
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
497
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
498 def getDictionary(self, var):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
499 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
500 Public method to get the attributes of a variable as a dictionary.
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
501
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
502 @param var variable to be converted
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
503 @type any
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
504 @yield tuple containing the batch start index and a dictionary
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
505 containing the variable attributes
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
506 @ytype tuple of (int, dict)
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
507 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
508 d = {}
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
509 start = count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
510 allKeys = list(var.keys())
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
511 try:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
512 # Fast path: all items from same type
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
513 allKeys.sort()
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
514 except TypeError:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
515 # Slow path: only sort items with same type (Py3 only)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
516 allKeys.sort(key=lambda x: (str(x), x))
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
517
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
518 for key in allKeys:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
519 dkey = "{0} (ID:{1})".format(self.keyToStr(key), id(key))
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
520 d[dkey] = var.getlist(key)
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
521 count += 1
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
522 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
523 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
524 start += count
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
525 count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
526 d = {}
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
527
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
528 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
529 yield start, d
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
530
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
531 # in case it has additional fields
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
532 d = super(DictResolver, self).getDictionary(var)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
533 yield -1, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
534
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
535 while True:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
536 yield -2, {}
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
537
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
538
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
539 ############################################################
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
540 ## Resolver for array.array
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
541 ############################################################
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
542
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
543
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
544 class ArrayResolver(BaseResolver):
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
545 """
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
546 Class used to resolve from array.array including some meta data.
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
547 """
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
548 TypeCodeMap = {
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
549 "b": "int (signed char)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
550 "B": "int (unsigned char)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
551 "u": "Unicode character (Py_UNICODE)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
552 "h": "int (signed short)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
553 "H": "int (unsigned short)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
554 "i": "int (signed int)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
555 "I": "int (unsigned int)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
556 "l": "int (signed long)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
557 "L": "int (unsigned long)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
558 "q": "int (signed long long)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
559 "Q": "int (unsigned long long)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
560 "f": "float (float)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
561 "d": "float (double)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
562 }
5253
57276f763bf6 Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5239
diff changeset
563
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
564 def resolve(self, var, attribute):
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
565 """
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
566 Public method to get an attribute from a variable.
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
567
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
568 @param var variable to extract an attribute or value from
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
569 @type tuple or list
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
570 @param attribute id of the value to extract
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
571 @type str
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
572 @return value of the attribute
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
573 @rtype any
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
574 """
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
575 try:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
576 return var[int(attribute)]
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
577 except Exception:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
578 return getattr(var, attribute, None)
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
579
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
580 return None
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
581
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
582 def getDictionary(self, var):
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
583 """
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
584 Public method to get the attributes of a variable as a dictionary.
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
585
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
586 @param var variable to be converted
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
587 @type any
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
588 @yield tuple containing the batch start index and a dictionary
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
589 containing the variable attributes
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
590 @ytype tuple of (int, dict)
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
591 """
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
592 d = {}
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
593 start = count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
594 allItems = var.tolist()
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
595
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
596 for idx, value in enumerate(allItems):
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
597 d[str(idx)] = value
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
598 count += 1
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
599 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
600 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
601 start += count
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
602 count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
603 d = {}
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
604
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
605 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
606 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
607
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
608 # in case it has additional fields
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
609 d = super(ArrayResolver, self).getDictionary(var)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
610
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
611 # Special data for array type: convert typecode to readable text
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
612 d['type'] = self.TypeCodeMap.get(var.typecode, 'illegal type')
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
613
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
614 yield -1, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
615
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
616 while True:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
617 yield -2, {}
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
618
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
619
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 defaultResolver = DefaultResolver()
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 dictResolver = DictResolver()
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 listResolver = ListResolver()
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
623 dictViewResolver = DictViewResolver()
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
624 setResolver = SetResolver()
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
625 ndarrayResolver = NdArrayResolver()
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
626 multiValueDictResolver = MultiValueDictResolver()
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
627 arrayResolver = ArrayResolver()
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 ## 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
631 ## resolver class to use
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 _TypeMap = None
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
636
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 def _initTypeMap():
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 """
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
639 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
640 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
641 global _TypeMap
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
642
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
643 _TypeMap = [
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644 (type(None), None,),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645 (int, None),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646 (float, None),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
647 (complex, None),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 (str, None),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 (tuple, listResolver),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 (list, listResolver),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
651 (dict, dictResolver),
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
652 (set, setResolver),
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
653 (frozenset, setResolver),
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 ]
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 _TypeMap.append((long, None)) # __IGNORE_WARNING__
7628
f904d0eef264 Checked the reported security related issue reports generated by the new security checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7594
diff changeset
658 except Exception: # secok
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
659 pass # not available on all Python versions
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 try:
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
662 import array
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
663 _TypeMap.append((array.array, arrayResolver))
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
664 except ImportError:
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
665 pass # array.array may not be available
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
666
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
667 try:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
668 import numpy
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
669 _TypeMap.append((numpy.ndarray, ndarrayResolver))
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
670 except ImportError:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
671 pass # numpy may not be installed
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
672
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
673 try:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
674 from django.utils.datastructures import MultiValueDict
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
675 # it should go before dict
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
676 _TypeMap.insert(0, (MultiValueDict, multiValueDictResolver))
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
677 except ImportError:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
678 pass # django may not be installed
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
679
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
680 try:
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
681 from collections.abc import ItemsView, KeysView, ValuesView
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
682 _TypeMap.append((ItemsView, dictViewResolver))
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
683 _TypeMap.append((KeysView, dictViewResolver))
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
684 _TypeMap.append((ValuesView, dictViewResolver))
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
685 except ImportError:
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
686 pass # not available on all Python versions
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
687
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689 def getType(obj):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 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
692
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 @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
694 @type any
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
695 @return tuple containing the type name, type string and resolver
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
696 @rtype tuple of str, str, BaseResolver
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
698 typeObject = type(obj)
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
699 typeName = typeObject.__name__
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
700 # Between PyQt and PySide the returned type is different (class vs. type)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
701 typeStr = str(typeObject).split(' ', 1)[-1]
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
702 typeStr = typeStr[1:-2]
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703
7594
ee35df230130 Debug Client: added code to treat type 'sip.wrappertype' like type 'class'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
704 if (
ee35df230130 Debug Client: added code to treat type 'sip.wrappertype' like type 'class'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
705 typeStr.startswith(ConfigQtNames) and
ee35df230130 Debug Client: added code to treat type 'sip.wrappertype' like type 'class'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
706 typeStr.endswith(ConfigKnownQtTypes)
ee35df230130 Debug Client: added code to treat type 'sip.wrappertype' like type 'class'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
707 ):
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708 resolver = None
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
709 else:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
710 if _TypeMap is None:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
711 _initTypeMap()
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
712
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
713 for typeData, resolver in _TypeMap: # __IGNORE_WARNING_M507__
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
714 if isinstance(obj, typeData):
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
715 break
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
716 else:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
717 resolver = defaultResolver
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
718
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
719 return typeName, typeStr, resolver

eric ide

mercurial