diff options
Diffstat (limited to 'src/carquinyol/__init__.py')
-rw-r--r-- | src/carquinyol/__init__.py | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/src/carquinyol/__init__.py b/src/carquinyol/__init__.py index cc8d7eb..8b13789 100644 --- a/src/carquinyol/__init__.py +++ b/src/carquinyol/__init__.py @@ -1,60 +1 @@ -import logging -import decorator - - -def filter_maxsize(val, maxsize_list, maxsize_dict, maxsize_string) : - if isinstance(val, (list, tuple)) : - if len(val) > maxsize_list : - return "[...]" - - return [filter_maxsize(child, maxsize_list, maxsize_dict, maxsize_string) - for child in val] - - elif isinstance(val, dict) : - if len(val) > maxsize_dict : - return "{...}" - - return dict([ - (key, filter_maxsize(child, maxsize_list, maxsize_dict, maxsize_string)) - for (key, child) in val.items()]) - - elif isinstance(val, (basestring, buffer)) : - if len(val) > maxsize_string : - return "'...'" - - return val - - else : - val = repr(val) - if len(val) > maxsize_string : - return "<...>" - - return val - - -TRACE=9 -logging.addLevelName(TRACE, 'TRACE') - -# TODO: lazy evaluation of parameters -def trace(skip_args=[], skip_kwargs=[], maxsize_list=30, maxsize_dict=30, maxsize_string=300) : - def _trace(f, *args, **kwargs) : - params_formatted = ", ".join( - [repr(filter_maxsize(a, maxsize_list, maxsize_dict, maxsize_string)) - for (idx, a) in enumerate(args) if idx not in skip_args]+\ - ['%s=%r' % (k,filter_maxsize(v, maxsize_list, maxsize_dict, maxsize_string)) - for (k,v) in kwargs.items() if k not in skip_kwargs]) - - logging.log(TRACE, "%s(%s) invoked", f.__name__, params_formatted) - - try : - res=f(*args, **kwargs) - except : - logging.exception("Exception occured in %s", f.__name__) - raise - - logging.log(TRACE, "%s(%s) returned %r", f.__name__, params_formatted, - filter_maxsize(res, maxsize_list, maxsize_dict, maxsize_string)) - return res - - return decorator.decorator(_trace) |