Decorator for logging function arguments by human-readable way
Project description
logwrap
logwrap is a helper for logging in human-readable format function arguments and call result on function call.
Pros:
Free software: Apache license
Open Source: https://github.com/penguinolog/logwrap
PyPI packaged: https://pypi.python.org/pypi/logwrap
Self-documented code: docstrings with types in comments
Tested: see bages on top
Support miltiple Python versions:
Python 2.7 Python 3.4 Python 3.5 Python 3.6 PyPy
This package also includes helpers:
pretty_repr
get_arg_names
get_call_args
Usage
logwrap
The main decorator. Could be used as not argumented (@logwrap.logwrap) and argumented (@logwrap.logwrap()). Not argumented usage simple calls with default values for all positions. Argumented usage with arguments from signature:
@logwrap.logwrap(
log=logging.getLogger(__name__), # __name__ = 'logwrap'
log_level=logging.DEBUG,
exc_level=logging.ERROR,
max_indent=20, # forwarded to the pretty_repr
spec=None, # use target callable function for spec
)
Usage examples:
@logwrap.logwrap()
def foo():
pass
is equal to:
@logwrap.logwrap
def foo():
pass
Get decorator for use without parameters:
get_logs = logwap.logwrap() # set required parameters via arguments
@get_logs
def foo():
pass
pretty_repr
This is specified helper for making human-readable repr on complex objects. Signature is self-documenting:
def pretty_repr(
src, # object for repr
indent=0, # start indent
no_indent_start=False, # do not indent the first level
max_indent=20, # maximum allowed indent level
)
Limitation: Dict like objects is always marked inside {} for readability, even if it is collections.OrderedDict (standard repr as list of tuples).
get_arg_names
Get argument names for function. This is multiple python versions supporting helper, due to differences between Python 2.7 and Python 3.3+ Usage:
get_arg_names(func)
where func is target function.
get_call_args
Get call arguments bound to argument names for function. This is multiple python versions supporting helper, due to differences between Python 2.7 and Python 3.5+ Usage:
get_call_args(func, *positional, **named)
where func is target function, *positional and **named is arguments for the func. Note: get_call_args reqires strictly consistent set of arguments for function.
Testing
The main test mechanism for the package logwrap is using tox. Test environments available:
pep8 py27 py34 py35 pypy pylint docs
Also possible to run python setup.py test for unit tests and python setup.py flake8 for code style tests, but it requires all package dependencies to be installed.
CI systems
For code checking several CI systems is used in parallel:
Travis CI: is used for checking: PEP8, installation possibility and unit tests
Circle CI: is used for checking: pylint, docs. In addition this CI publishes coverage results.
Codacy: is used for statical analysis and coverage display.
CD system
Travis CI: is used for package delivery on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.