eric6/DebugClients/Python/DebugVariables.py

Sat, 21 Sep 2019 13:03:17 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 21 Sep 2019 13:03:17 +0200
changeset 7250
d8bdc55aee1a
parent 6988
87ad87ef1910
child 7332
49076c600903
permissions
-rw-r--r--

Started to resolve code style issue M841.

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

eric ide

mercurial