2
2
import time
3
3
from tkinter import Event
4
4
5
- from .console import PRINT , getPPrintStr
5
+ from .console import getPPrintStr , pp
6
6
7
7
8
8
9
9
10
10
__all__ = ['debug' , 'class_method_debug' , 'check_time' , 'debugTkinterEvent' , 'pprint_debug' ]
11
11
12
- DEFAULT_TAG = '\n _______________________________ "{0}" _______________________________'
12
+ DEFAULT_TAG = '\n ______________________________________________________________\n "{0}"'
13
+
14
+ def GetFuncModule (func : callable ) -> str :
15
+ return func .__module__
16
+ def GetFunctionName (func : callable ) -> str :
17
+ if hasattr (func , '__qualname__' ):
18
+ return func .__qualname__
19
+ elif hasattr (func , '__module__' ):
20
+ return f"{ func .__module__ } .{ func .__qualname__ } "
21
+ else :
22
+ return func .__name__
23
+
24
+
25
+
26
+ def _print_signature (func , tag , * args , ** kwargs ):
27
+ name = GetFunctionName (func )
28
+ print (tag .format (f'{ name } ' ))
29
+
30
+ if args or kwargs :
31
+ try : args_repr = [repr (a ) for a in args ] # 1
32
+ except : args_repr = [str (a ) for a in args ] # 1
33
+
34
+ kwargs_repr = [f"{ k } ={ v !r} " for k , v in kwargs .items ()] # 2
35
+
36
+ signature = ", " .join (args_repr + kwargs_repr ) # 3
37
+
38
+ print (f"{ name } (\n { signature } \n )" )
39
+
13
40
14
41
def class_method_debug (cls : str or type , tag : str = DEFAULT_TAG ):
15
42
"""
@@ -29,18 +56,21 @@ def debug_inner(func: callable = None):
29
56
:param func: callable function to be debugged.
30
57
:return:
31
58
"""
59
+ name = f"{ cls } .{ func .__name__ } "
32
60
@functools .wraps (func )
33
61
def wrapper_debug (* args , ** kwargs ):
34
- try : args_repr = [repr (a ) for a in args ] # 1
35
- except : args_repr = [str (a ) for a in args ] # 1
62
+ print (tag .format (name ))
63
+ if args or kwargs :
64
+ try : args_repr = [repr (a ) for a in args ] # 1
65
+ except : args_repr = [str (a ) for a in args ] # 1
36
66
37
- kwargs_repr = [f"{ k } ={ v !r} " for k , v in kwargs .items ()] # 2
67
+ kwargs_repr = [f"{ k } ={ v !r} " for k , v in kwargs .items ()] # 2
38
68
39
- signature = ", " .join (args_repr + kwargs_repr ) # 3
69
+ signature = ", " .join (args_repr + kwargs_repr ) # 3
40
70
41
- print (f"{ tag . format ( f' { func . __module__ } . { func . __qualname__ } ' ) } \n { cls } . { func . __name__ } (\n { signature } \n )" )
71
+ print (f"{ name } (\n { signature } \n )" )
42
72
result = func (* args , ** kwargs )
43
- print (f"{ func . __name__ } returned { result !r} \n " ) # 4
73
+ print (f"{ name } returned { result !r} \n " ) # 4
44
74
45
75
return result
46
76
return wrapper_debug
@@ -56,18 +86,12 @@ def debug(func: callable, tag: str = DEFAULT_TAG):
56
86
:param tag: a unique string to identify the output in the console window.
57
87
:return:
58
88
"""
89
+ name = GetFunctionName (func )
59
90
@functools .wraps (func )
60
91
def wrapper_debug (* args , ** kwargs ):
61
- try : args_repr = [repr (a ) for a in args ] # 1
62
- except : args_repr = [str (a ) for a in args ] # 1
63
-
64
- kwargs_repr = [f"{ k } ={ v !r} " for k , v in kwargs .items ()] # 2
65
-
66
- signature = ", " .join (args_repr + kwargs_repr ) # 3
67
-
68
- print (f"{ tag .format (f'{ func .__module__ } .{ func .__qualname__ } ' )} \n { func .__qualname__ } (\n { signature } \n )" )
92
+ _print_signature (func , tag , * args , ** kwargs )
69
93
result = func (* args , ** kwargs )
70
- print (f"{ func . __name__ } returned { result !r} \n " ) # 4
94
+ print (f"{ name } returned { result !r} \n " ) # 4
71
95
72
96
return result
73
97
return wrapper_debug
@@ -82,19 +106,21 @@ def pprint_debug(func: callable, tag: str = DEFAULT_TAG):
82
106
:param tag: a unique string to identify the output in the console window.
83
107
:return:
84
108
"""
109
+ name = GetFunctionName (func )
85
110
@functools .wraps (func )
86
111
def wrapper_debug (* args , ** kwargs ):
112
+ print (tag .format (name ))
87
113
signature = getPPrintStr ({'kwargs' : kwargs , 'args' : args , })
88
- print (f"{ tag . format ( f' { func . __module__ } . { func . __qualname__ } ' ) } \n { func . __qualname__ } (\n { signature } \n )" )
114
+ print (f"{ name } (\n { signature } \n )" )
89
115
result = func (* args , ** kwargs )
90
- print (f"{ func . __name__ } returned { result !r } \n " )
116
+ print (f"{ name } returned: \n { getPPrintStr ( result ) } \n " )
91
117
92
118
return result
93
119
return wrapper_debug
94
120
95
121
96
122
97
- def check_time (* , cls : str or type = None , print_signature : bool = True , tag : str = DEFAULT_TAG ):
123
+ def check_cls_time (* , cls : str or type = None , print_signature : bool = True , tag : str = DEFAULT_TAG ):
98
124
"""
99
125
Print the function signature and return value
100
126
@@ -107,9 +133,10 @@ def check_time(*, cls: str or type = None, print_signature: bool = True, tag: st
107
133
cls = cls .__name__
108
134
109
135
def timeit (func : callable ):
136
+ name = GetFunctionName (func )
110
137
@functools .wraps (func )
111
138
def timed (* args , ** kwargs ):
112
- print (tag )
139
+ print (tag . format ( name ) )
113
140
if print_signature :
114
141
try : args_repr = [repr (a ) for a in args ] # 1
115
142
except : args_repr = [str (a ) for a in args ] # 1
@@ -125,21 +152,41 @@ def timed(*args, **kwargs):
125
152
126
153
start_time = time .time ()
127
154
result = func (* args , ** kwargs )
128
- print (f'{ func . __name__ } took { time .time () - start_time } ' )
129
- print (f"{ func . __name__ } returned { result !r} \n " ) # 4
155
+ print (f'{ name } took { time .time () - start_time } ' )
156
+ print (f"{ name } returned { result !r} \n " ) # 4
130
157
return result
131
158
132
159
return timed
133
160
return timeit
134
161
135
162
136
163
164
+ def check_time (func : callable , tag : str = DEFAULT_TAG ):
165
+ name = GetFunctionName (func )
166
+ @functools .wraps (func )
167
+ def timed (* args , ** kwargs ):
168
+ _print_signature (func , tag , * args , ** kwargs )
169
+
170
+ start_time = time .time ()
171
+ result = func (* args , ** kwargs )
172
+ print (f'{ name } took { time .time () - start_time } ' )
173
+ print (f"{ name } returned { result !r} \n " )
174
+ return result
175
+
176
+ return timed
177
+
178
+
179
+
137
180
def debugTkinterEvent (func : callable , tag : str = DEFAULT_TAG ):
181
+ name = GetFunctionName (func )
138
182
@functools .wraps (func )
139
183
def wrapper_debug (self , event : Event , * args , ** kwargs ):
140
- PRINT (f'{ tag .format ("TkinterEvent" )} \n { func .__class__ } .{ func .__name__ } .{ Event .__class__ } ' , event .__dict__ )
184
+ print (tag .format (f'{ name } ' ))
185
+ print (f'{ name } .{ event .__class__ } ' )
186
+ pp .pprint (event .__dict__ )
141
187
142
188
result = func (self , event , * args , ** kwargs )
189
+ print (f"{ name } returned { result !r} \n " )
143
190
144
191
return result
145
192
0 commit comments