eric7/DebugClients/Python/DebugVariables.py

Tue, 24 May 2022 11:00:52 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 24 May 2022 11:00:52 +0200
branch
eric7
changeset 9099
0e511e0e94a3
parent 8881
54e42bc2437a
permissions
-rw-r--r--

Third Party packages
- upgraded coverage to 6.4.0

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
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8573
diff changeset
3 # Copyright (c) 2016 - 2022 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
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
11 import sys
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
12
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
13 from collections.abc import ItemsView, KeysView, ValuesView
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
14
6978
720247f98e1f Improved determination of expandable items including removing 'other' as selectable type.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6969
diff changeset
15 from DebugConfig import ConfigQtNames, ConfigKnownQtTypes, BatchSize
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
16
5169
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 # 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
19 #
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 ############################################################
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
22 ## Classes implementing resolvers for various compound types
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
25
8207
d359172d11be Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8205
diff changeset
26 class BaseResolver:
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 Base class of the resolver class tree.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 def resolve(self, var, attribute):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Public method to get an attribute from a variable.
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param var variable to extract an attribute or value from
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param attribute name of the attribute to extract
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @type str
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @return value of the attribute
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @rtype any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
41 return getattr(var, attribute, None)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
43 def getVariableList(self, var):
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
45 Public method to get the attributes of a variable as a list.
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @param var variable to be converted
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @type any
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
49 @return list containing the variable attributes
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
50 @rtype list
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
52 d = []
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
53 for name in dir(var):
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
54 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
55 attribute = getattr(var, name)
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
56 d.append((name, attribute))
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 return d
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
61 ############################################################
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
62 ## Default Resolver
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
63 ############################################################
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 class DefaultResolver(BaseResolver):
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
67 """
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
68 Class used to resolve the default way.
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
69 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
70 def getVariableList(self, var):
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
71 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
72 Public method to get the attributes of a variable as a list.
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
73
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
74 @param var variable to be converted
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
75 @type any
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
76 @yield tuple containing the batch start index and a list
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
77 containing the variable attributes
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
78 @ytype tuple of (int, list)
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
79 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
80 d = []
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
81 for name in dir(var):
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
82 with contextlib.suppress(Exception):
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
83 attribute = getattr(var, name)
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
84 d.append((name, attribute))
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
85
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
86 yield -1, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
87 while True:
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
88 yield -2, []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
89
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 ############################################################
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
92 ## Resolver for Dictionaries
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
93 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
94
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
95
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 class DictResolver(BaseResolver):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 Class 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
99 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 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
101 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 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
103
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 @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
105 @type dict
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @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
107 @type str
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 @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
109 @rtype any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 """
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
111 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
112 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 return var[attribute]
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 except Exception:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
115 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
116
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
117 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
118 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
119 if id(key) == expectedID:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 return value
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 return None
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
124 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
125 """
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
126 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
127
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
128 @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
129 @type any
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
130 @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
131 @rtype str
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
132 """
7637
c878e8255972 Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7628
diff changeset
133 if isinstance(key, str):
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
134 key = repr(key)
7862
817ef8e0fa66 Debugger: changed the handling of variable type filters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7639
diff changeset
135 # Special handling for bytes object
817ef8e0fa66 Debugger: changed the handling of variable type filters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7639
diff changeset
136 # 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
137 if key[0] == 'b':
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
138 key = key[1:]
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
139
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
140 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
141
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
142 def getVariableList(self, var):
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
144 Public method to get the attributes of a variable as a list.
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 @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
147 @type any
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
148 @yield tuple containing the batch start index and a list
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
149 containing the variable attributes
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
150 @ytype tuple of (int, list)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
152 d = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
153 start = count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
154 allItems = list(var.items())
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
155 try:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
156 # Fast path: all items from same type
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
157 allItems.sort(key=lambda x: x[0])
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
158 except TypeError:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
159 # 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
160 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
161
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
162 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
163 key = "{0} (ID:{1})".format(self.keyToStr(key), id(key))
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
164 d.append((key, value))
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
165 count += 1
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
166 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
167 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
168 start += count
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
169 count = 0
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
170 d = []
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
172 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
173 yield start, d
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 # in case it has additional fields
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
176 d = super().getVariableList(var)
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
177 yield -1, d
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
179 while True:
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
180 yield -2, []
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
183 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
184 ## 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
185 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
186
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
187
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 class ListResolver(BaseResolver):
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 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
191 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 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
193 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 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
195
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 @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
197 @type tuple or list
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 @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
199 @type str
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 @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
201 @rtype any
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 try:
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 return var[int(attribute)]
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 except Exception:
8479
903b7d3b58af Fixed some little issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
206 return getattr(var, str(attribute), None)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
208 def getVariableList(self, var):
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
210 Public method to get the attributes of a variable as a list.
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 @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
213 @type any
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
214 @yield tuple containing the batch start index and a list
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
215 containing the variable attributes
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
216 @ytype tuple of (int, list)
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
218 d = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
219 start = count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
220 for idx, value in enumerate(var):
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
221 d.append((idx, value))
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 count += 1
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
223 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
224 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
225 start = idx + 1
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
226 count = 0
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
227 d = []
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
229 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
230 yield start, d
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
231
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
232 # in case it has additional fields
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
233 d = super().getVariableList(var)
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
234 yield -1, d
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
235
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
236 while True:
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
237 yield -2, []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
238
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
239
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
240 ############################################################
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
241 ## Resolver for dict_items, dict_keys and dict_values
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
242 ############################################################
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
243
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
244
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
245 class DictViewResolver(ListResolver):
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
246 """
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
247 Class used to resolve from dict views.
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 def resolve(self, var, attribute):
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
250 """
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
251 Public method to get an attribute from a variable.
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
252
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
253 @param var variable to extract an attribute or value from
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
254 @type dict_items, dict_keys or dict_values
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
255 @param attribute id of the value to extract
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
256 @type str
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
257 @return value of the attribute
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
258 @rtype any
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
259 """
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
260 return super().resolve(list(var), attribute)
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
261
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
262 def getVariableList(self, var):
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
263 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
264 Public method to get the attributes of a variable as a list.
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
265
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
266 @param var variable to be converted
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
267 @type any
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
268 @yield tuple containing the batch start index and a list
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
269 containing the variable attributes
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
270 @ytype tuple of (int, list)
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
271 """
8573
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
272 yield from super().getVariableList(list(var))
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
273
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
274
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
275 ############################################################
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
276 ## 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
277 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
278
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
279
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
280 class SetResolver(BaseResolver):
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
281 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
282 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
283 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
284 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
285 """
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
286 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
287
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
288 @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
289 @type tuple or list
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
290 @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
291 @type str
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
292 @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
293 @rtype any
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
294 """
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
295 if attribute.startswith("'ID: "):
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
296 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
297 try:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
298 attribute = int(attribute)
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
299 except Exception:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
300 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
301
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
302 for v in var:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
303 if id(v) == attribute:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
304 return v
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 return None
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
307
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
308 def getVariableList(self, var):
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
309 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
310 Public method to get the attributes of a variable as a list.
5171
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 @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
313 @type any
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
314 @yield tuple containing the batch start index and a list
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
315 containing the variable attributes
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
316 @ytype tuple of (int, list)
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
317 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
318 d = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
319 start = count = 0
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
320 for value in var:
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
321 count += 1
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
322 d.append(("'ID: {0}'".format(id(value)), value))
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
323 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
324 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
325 start += count
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
326 count = 0
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
327 d = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
328
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
329 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
330 yield start, d
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 # in case it has additional fields
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
333 d = super().getVariableList(var)
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
334 yield -1, d
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
336 while True:
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
337 yield -2, []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
338
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
340 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
341 ## Resolver for Numpy Arrays
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
342 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
343
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 class NdArrayResolver(BaseResolver):
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 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
348 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
349 def __isNumeric(self, arr):
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 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
352
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
353 @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
354 @type ndarray
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
355 @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
356 @rtype bool
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
357 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
358 try:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
359 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
360 except AttributeError:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
361 return False
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
362
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
363 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
364 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
365 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
366
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
367 @param var variable to extract an attribute or value from
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
368 @type ndarray
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
369 @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
370 @type str
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
371 @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
372 @rtype any
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
373 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
374 if attribute == 'min':
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
375 if self.__isNumeric(var):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
376 return var.min()
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
377 else:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
378 return None
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
379
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
380 if attribute == 'max':
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
381 if self.__isNumeric(var):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
382 return var.max()
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
383 else:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
384 return None
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
385
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
386 if attribute == 'mean':
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
387 if self.__isNumeric(var):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
388 return var.mean()
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
389 else:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
390 return None
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
391
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
392 try:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
393 return var[int(attribute)]
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
394 except Exception:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
395 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
396
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
397 return None
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
398
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
399 def getVariableList(self, var):
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
400 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
401 Public method to get the attributes of a variable as a list.
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
402
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
403 @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
404 @type any
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
405 @yield tuple containing the batch start index and a list
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
406 containing the variable attributes
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
407 @ytype tuple of (int, list)
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
408 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
409 d = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
410 start = count = 0
7332
49076c600903 Bugfixes for displaying numpy arrays.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7250
diff changeset
411 try:
49076c600903 Bugfixes for displaying numpy arrays.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7250
diff changeset
412 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
413 allItems = var.tolist()
49076c600903 Bugfixes for displaying numpy arrays.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7250
diff changeset
414 except TypeError: # TypeError: len() of unsized object
49076c600903 Bugfixes for displaying numpy arrays.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 7250
diff changeset
415 allItems = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
416
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
417 for idx, value in enumerate(allItems):
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
418 d.append((str(idx), value))
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
419 count += 1
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
420 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
421 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
422 start += count
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
423 count = 0
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
424 d = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
425
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
426 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
427 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
428
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
429 # in case it has additional fields
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
430 d = super().getVariableList(var)
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
431
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
432 if var.size > 1024 * 1024:
8573
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
433 d.append(
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
434 ('min',
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
435 'ndarray too big, calculating min would slow down debugging')
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
436 )
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
437 d.append(
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
438 ('max',
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
439 'ndarray too big, calculating max would slow down debugging')
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
440 )
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
441 d.append(
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
442 ('mean',
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
443 'ndarray too big, calculating mean would slow down debugging')
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
444 )
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
445 elif self.__isNumeric(var):
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
446 if var.size == 0:
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
447 d.append(('min', 'empty array'))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
448 d.append(('max', 'empty array'))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
449 d.append(('mean', 'empty array'))
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
450 else:
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
451 d.append(('min', var.min()))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
452 d.append(('max', var.max()))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
453 d.append(('mean', var.mean()))
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
454 else:
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
455 d.append(('min', 'not a numeric object'))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
456 d.append(('max', 'not a numeric object'))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
457 d.append(('mean', 'not a numeric object'))
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
458
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
459 yield -1, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
460
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
461 while True:
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
462 yield -2, []
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
463
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
464
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
465 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
466 ## Resolver for Django Multi Value Dictionaries
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
467 ############################################################
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
468
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
469
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
470 class MultiValueDictResolver(DictResolver):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
471 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
472 Class used to resolve from Django multi value dictionaries.
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
473 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
474 def resolve(self, var, attribute):
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
475 """
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
476 Public method to get an attribute from a variable.
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
477
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
478 @param var variable to extract an attribute or value from
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
479 @type MultiValueDict
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
480 @param attribute name of the attribute to extract
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
481 @type str
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
482 @return value of the attribute
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
483 @rtype any
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
484 """
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
485 if " (ID:" not in attribute:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
486 try:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
487 return var[attribute]
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
488 except Exception:
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
489 return getattr(var, attribute, None)
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
490
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
491 expectedID = int(attribute.split(" (ID:")[-1][:-1])
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7988
diff changeset
492 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
493 if id(key) == expectedID:
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
494 return var.getlist(key)
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
495
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
496 return None
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
497
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
498 def getVariableList(self, var):
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
499 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
500 Public method to get the attributes of a variable as a list.
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
501
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
502 @param var variable to be converted
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
503 @type any
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
504 @yield tuple containing the batch start index and a list
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
505 containing the variable attributes
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
506 @ytype tuple of (int, list)
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
507 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
508 d = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
509 start = count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
510 allKeys = list(var.keys())
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
511 try:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
512 # Fast path: all items from same type
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
513 allKeys.sort()
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
514 except TypeError:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
515 # Slow path: only sort items with same type (Py3 only)
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
516 allKeys.sort(key=lambda x: (str(x), x))
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
517
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
518 for key in allKeys:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
519 dkey = "{0} (ID:{1})".format(self.keyToStr(key), id(key))
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
520 d.append((dkey, var.getlist(key)))
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
521 count += 1
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
522 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
523 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
524 start += count
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
525 count = 0
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
526 d = []
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
527
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
528 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
529 yield start, d
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
530
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
531 # in case it has additional fields
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
532 d = super(DictResolver, self).getVariableList(var)
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
533 yield -1, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
534
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
535 while True:
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
536 yield -2, []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
537
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
538
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
539 ############################################################
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
540 ## Resolver for array.array
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
541 ############################################################
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
542
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
543
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
544 class ArrayResolver(BaseResolver):
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
545 """
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
546 Class used to resolve from array.array including some meta data.
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
547 """
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
548 TypeCodeMap = {
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
549 "b": "int (signed char)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
550 "B": "int (unsigned char)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
551 "u": "Unicode character (Py_UNICODE)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
552 "h": "int (signed short)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
553 "H": "int (unsigned short)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
554 "i": "int (signed int)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
555 "I": "int (unsigned int)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
556 "l": "int (signed long)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
557 "L": "int (unsigned long)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
558 "q": "int (signed long long)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
559 "Q": "int (unsigned long long)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
560 "f": "float (float)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
561 "d": "float (double)",
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
562 }
5253
57276f763bf6 Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5239
diff changeset
563
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
564 def resolve(self, var, attribute):
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
565 """
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
566 Public method to get an attribute from a variable.
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
567
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
568 @param var variable to extract an attribute or value from
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
569 @type array.array
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
570 @param attribute id of the value to extract
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
571 @type str
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
572 @return value of the attribute
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
573 @rtype any
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
574 """
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
575 try:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
576 return var[int(attribute)]
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
577 except Exception:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
578 return getattr(var, attribute, None)
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
579
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
580 return None
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
581
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
582 def getVariableList(self, var):
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
583 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
584 Public method to get the attributes of a variable as a list.
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
585
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
586 @param var variable to be converted
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
587 @type any
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
588 @yield tuple containing the batch start index and a list
7988
c4c17121eff8 Updated source code documentation with the new tags.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
589 containing the variable attributes
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
590 @ytype tuple of (int, list)
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
591 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
592 d = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
593 start = count = 0
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
594 allItems = var.tolist()
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
595
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
596 for idx, value in enumerate(allItems):
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
597 d.append((str(idx), value))
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
598 count += 1
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
599 if count >= BatchSize:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
600 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
601 start += count
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
602 count = 0
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
603 d = []
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
604
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
605 if d:
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
606 yield start, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
607
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
608 # in case it has additional fields
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
609 d = super().getVariableList(var)
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
610
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
611 # Special data for array type: convert typecode to readable text
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
612 d.append(('type', self.TypeCodeMap.get(var.typecode, 'illegal type')))
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
613
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
614 yield -1, d
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
615
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
616 while True:
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
617 yield -2, []
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
618
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
619
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
620 ############################################################
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
621 ## PySide / PyQt Resolver
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
622 ############################################################
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
623
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
624
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
625 class QtResolver(BaseResolver):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
626 """
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
627 Class used to resolve the Qt implementations.
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
628 """
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
629 def resolve(self, var, attribute):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
630 """
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
631 Public method to get an attribute from a variable.
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
632
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
633 @param var variable to extract an attribute or value from
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
634 @type Qt objects
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
635 @param attribute name of the attribute to extract
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
636 @type str
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
637 @return value of the attribute
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
638 @rtype any
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
639 """
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
640 if attribute == 'internalPointer':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
641 return var.internalPointer()
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
642
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
643 return getattr(var, attribute, None)
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
644
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
645 def getVariableList(self, var):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
646 """
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
647 Public method to get the attributes of a variable as a list.
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
648
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
649 @param var variable to be converted
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
650 @type any
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
651 @yield tuple containing the batch start index and a list
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
652 containing the variable attributes
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
653 @ytype tuple of (int, list)
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
654 """
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
655 d = []
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
656 attributes = ()
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
657 # Gently handle exception which could occure as special
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
658 # cases, e.g. already deleted C++ objects, str conversion..
8573
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
659 with contextlib.suppress(Exception):
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
660 qttype = type(var).__name__
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
661
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
662 if qttype in ('QLabel', 'QPushButton'):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
663 attributes = ('text', )
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
664 elif qttype == 'QByteArray':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
665 d.append(('bytes', bytes(var)))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
666 d.append(('hex', "QByteArray", "{0}".format(var.toHex())))
8573
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
667 d.append(
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
668 ('base64', "QByteArray",
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
669 "{0}".format(var.toBase64()))
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
670 )
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
671 d.append(
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
672 ('percent encoding', "QByteArray",
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
673 "{0}".format(var.toPercentEncoding()))
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
674 )
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
675 elif qttype in ('QPoint', 'QPointF'):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
676 attributes = ('x', 'y')
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
677 elif qttype in ('QRect', 'QRectF'):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
678 attributes = ('x', 'y', 'width', 'height')
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
679 elif qttype in ('QSize', 'QSizeF'):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
680 attributes = ('width', 'height')
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
681 elif qttype == 'QColor':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
682 attributes = ('name', )
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
683 r, g, b, a = var.getRgb()
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
684 d.append(
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
685 ('rgba', "{0:d}, {1:d}, {2:d}, {3:d}".format(r, g, b, a))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
686 )
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
687 h, s, v, a = var.getHsv()
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
688 d.append(
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
689 ('hsva', "{0:d}, {1:d}, {2:d}, {3:d}".format(h, s, v, a))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
690 )
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
691 c, m, y, k, a = var.getCmyk()
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
692 d.append(
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
693 ('cmyka',
8573
77845f40ebfe Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8568
diff changeset
694 "{0:d}, {1:d}, {2:d}, {3:d}, {4:d}".format(c, m, y, k, a))
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
695 )
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
696 elif qttype in ('QDate', 'QTime', 'QDateTime'):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
697 d.append((qttype[1:].lower(), var.toString()))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
698 elif qttype == 'QDir':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
699 attributes = ('path', 'absolutePath', 'canonicalPath')
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
700 elif qttype == 'QFile':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
701 attributes = ('fileName', )
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
702 elif qttype == 'QFont':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
703 attributes = (
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
704 'family', 'pointSize', 'weight', 'bold', 'italic'
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
705 )
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
706 elif qttype == 'QUrl':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
707 d.append(('url', var.toString()))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
708 attributes = ('scheme', 'userName', 'password', 'host', 'port',
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
709 'path')
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
710 elif qttype == 'QModelIndex':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
711 valid = var.isValid()
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
712 d.append(('valid', valid))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
713 if valid:
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
714 d.append(("internalPointer", var.internalPointer()))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
715 attributes = ('row', 'column', 'internalId')
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
716 elif qttype in ('QRegExp', "QRegularExpression"):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
717 attributes = ('pattern', )
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
718
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
719 # GUI stuff
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
720 elif qttype == 'QAction':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
721 d.append(('shortcut', var.shortcut().toString()))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
722 attributes = ('objectName', 'text', 'iconText', 'toolTip',
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
723 'whatsThis')
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
724
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
725 elif qttype == 'QKeySequence':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
726 d.append(('keySequence', var.toString()))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
727
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
728 # XML stuff
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
729 elif qttype == 'QDomAttr':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
730 attributes = ('name', 'var')
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
731 elif qttype in ('QDomCharacterData', 'QDomComment', 'QDomText'):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
732 attributes = ('data', )
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
733 elif qttype == 'QDomDocument':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
734 d.append(('text', var.toString()))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
735 elif qttype == 'QDomElement':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
736 attributes = ('tagName', 'text')
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
737
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
738 # Networking stuff
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
739 elif qttype == 'QHostAddress':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
740 d.append(('address', var.toString()))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
741
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
742 # PySide specific
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
743 elif qttype == 'EnumType': # Not in PyQt possible
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
744 for key, value in var.values.items():
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
745 d.append((key, int(value)))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
746
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
747 for attribute in attributes:
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
748 d.append((attribute, getattr(var, attribute)()))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
749
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
750 # add additional fields
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
751 if qttype != 'EnumType':
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
752 d.extend(super().getVariableList(var))
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
753
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
754 yield -1, d
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
755 while True:
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
756 yield -2, []
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
757
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
758
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759 defaultResolver = DefaultResolver()
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 dictResolver = DictResolver()
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
761 listResolver = ListResolver()
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
762 dictViewResolver = DictViewResolver()
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
763 setResolver = SetResolver()
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
764 ndarrayResolver = NdArrayResolver()
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
765 multiValueDictResolver = MultiValueDictResolver()
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
766 arrayResolver = ArrayResolver()
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
767 qtResolver = QtResolver()
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
768
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
769
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
770 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
771 ## 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
772 ## resolver class to use
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
773 ############################################################
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
774
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
775 _TypeMap = _ArrayTypes = None
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
776 _TryArray = _TryNumpy = _TryDjango = True
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
777 _MapCount = 0
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
778
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
779
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
780 def _initTypeMap():
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
781 """
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
782 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
783 """
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
784 global _TypeMap
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
786 # Type map for special handling of array types.
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
787 # All other types not listed here use the default resolver.
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
788 _TypeMap = [
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
789 (tuple, listResolver),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
790 (list, listResolver),
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
791 (dict, dictResolver),
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
792 (set, setResolver),
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
793 (frozenset, setResolver),
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
794 (ItemsView, dictViewResolver), # Since Python 3.0
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
795 (KeysView, dictViewResolver),
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
796 (ValuesView, dictViewResolver),
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
797 ]
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
798
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
799
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
800 # Initialize the static type map
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
801 _initTypeMap()
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
802
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
803
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
804 def updateTypeMap():
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
805 """
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
806 Public function to update the type map based on module imports.
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
807 """
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
808 global _TypeMap, _ArrayTypes, _TryArray, _TryNumpy, _TryDjango, _MapCount
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
809
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
810 # array.array may not be imported (yet)
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
811 if _TryArray and 'array' in sys.modules:
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
812 import array
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
813 _TypeMap.append((array.array, arrayResolver))
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
814 _TryArray = False
5190
65a2234c6789 Added a resolver for array.array types to the debuggers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5175
diff changeset
815
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
816 # numpy may not be imported (yet)
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
817 if _TryNumpy and 'numpy' in sys.modules:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
818 import numpy
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
819 _TypeMap.append((numpy.ndarray, ndarrayResolver))
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
820 _TryNumpy = False
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
821
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
822 # django may not be imported (yet)
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
823 if _TryDjango and 'django' in sys.modules:
5175
9db0b0f15d12 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5171
diff changeset
824 from django.utils.datastructures import MultiValueDict
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
825 # 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
826 _TypeMap.insert(0, (MultiValueDict, multiValueDictResolver))
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
827 _TryDjango = False
6988
87ad87ef1910 Make dictionary views expandable.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6978
diff changeset
828
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
829 # If _TypeMap changed, rebuild the _ArrayTypes tuple
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
830 if _MapCount != len(_TypeMap):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
831 _ArrayTypes = tuple(typ for typ, _resolver in _TypeMap)
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
832 _MapCount = len(_TypeMap)
5171
f1e9eebd5469 Continued improving the variable dumping of the debugger backends.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5169
diff changeset
833
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
834
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
835 def getResolver(obj):
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
836 """
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
837 Public method to get the resolver based on the type info of an object.
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
838
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
839 @param obj object to get resolver for
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
840 @type any
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
841 @return resolver
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
842 @rtype BaseResolver
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
843 """
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
844 # Between PyQt and PySide the returned type is different (class vs. type)
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
845 typeStr = str(type(obj)).split(' ', 1)[-1]
6969
fd7af2312383 Reimplemented Variables Viewer using QTreeView.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6952
diff changeset
846 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
847
7594
ee35df230130 Debug Client: added code to treat type 'sip.wrappertype' like type 'class'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
848 if (
ee35df230130 Debug Client: added code to treat type 'sip.wrappertype' like type 'class'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
849 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
850 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
851 ):
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
852 return qtResolver
5169
74e000797a93 Started to improve the variable dumping of the debugger backend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
853
8568
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
854 for typeData, resolver in _TypeMap: # __IGNORE_WARNING_M507__
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
855 if isinstance(obj, typeData):
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
856 return resolver
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
857
890dfe038613 Redesign of the internal evaluation of the variable types.
T.Rzepka@gmail.com
parents: 8479
diff changeset
858 return defaultResolver
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
859
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
860 #
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
861 # eflag: noqa = Y113

eric ide

mercurial