eric6/DebugClients/Python/DebugVariables.py

Sat, 19 Jun 2021 16:22:11 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 19 Jun 2021 16:22:11 +0200
changeset 8434
a105f31ba10f
parent 8243
cc717c2ae956
child 8273
698ae46f40a4
child 8483
11469e50910f
permissions
-rw-r--r--

Fixed an issue causing list, set, dict and tuple derived classes not being handled correctly in the Variables Viewer (issue393).
(grafted from 91d5ffe5583962135de9296ad1e04dae863b5cb6)

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

eric ide

mercurial