debug decorator
This commit is contained in:
parent
84a04841aa
commit
c8ac23f443
42
debug/tools.py
Normal file
42
debug/tools.py
Normal file
@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env python
|
||||
# encoding: utf-8
|
||||
|
||||
__report_indent = [0]
|
||||
def report(fn):
|
||||
"""Decorator to print information about a function
|
||||
call for use while debugging.
|
||||
Prints function name, arguments, and call number
|
||||
when the function is called. Prints this information
|
||||
again along with the return value when the function
|
||||
returns.
|
||||
"""
|
||||
|
||||
def wrap(*params,**kwargs):
|
||||
call = wrap.callcount = wrap.callcount + 1
|
||||
|
||||
indent = ' ' * __report_indent[0]
|
||||
fc = "%s(%s)" % (fn.__name__, ', '.join(
|
||||
[a.__repr__() for a in params] +
|
||||
["%s = %s" % (a, repr(b)) for a,b in kwargs.items()]
|
||||
))
|
||||
|
||||
print( "Call %s%s called [#%s]"
|
||||
% (indent, fc, call))
|
||||
__report_indent[0] += 1
|
||||
ret = fn(*params,**kwargs)
|
||||
__report_indent[0] -= 1
|
||||
try:
|
||||
print(' '*(__report_indent[0]+4), "ret.steps -> ", len(ret.steps))
|
||||
except AttributeError:
|
||||
print(' '*(__report_indent[0]+4), ret, " has no steps")
|
||||
print( "End %s%s returned %s [#%s]"
|
||||
% (indent, fc, repr(ret), call))
|
||||
|
||||
return ret
|
||||
wrap.callcount = 0
|
||||
return wrap
|
||||
|
||||
# -----------------------------
|
||||
# Reglages pour 'vim'
|
||||
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
|
||||
# cursor: 16 del
|
Loading…
Reference in New Issue
Block a user