Skip to main content

Debugging and profiling decorator that logs caller name(s), args+values, execution time, and more. Eliminates reams of boilerplate code.

Project description

log_calls is a Python 3 decorator that can print much useful information about calls to a decorated function. It can write to stdout, to another stream, or to a logger. It can save you from writing, rewriting, copying, pasting and tweaking a lot of ad hoc, boilerplate code - and it can keep your codebase free of that clutter.

For each call of a decorated function, log_calls can show you:

  • the caller,

  • the arguments passed to the function, and any default values used,

  • the time the function took to execute,

  • the complete call chain back to another log_calls-decorated caller,

  • the number of the call,

  • indentation by call level,

  • the function’s return value,

  • and more!

These and other features are optional and configurable settings, which can be specified for each decorated function via keyword parameters. You can also dynamically get and set these settings using attributes with the same names as the keywords, or using a dict-like interface whose keys are the keywords.

log_calls can also collect profiling data and statistics, accessible dynamically:

  • number of calls to a function,

  • total time taken by the function,

  • the function’s entire call history (arguments, time elapsed, return values, callers, and more), optionally as text in CSV format or, if Pandas is installed, as a DataFrame.

These features and others are optional and configurable settings, which can be specified for each decorated function via keyword parameters of the decorator. You can also dynamically get and set these settings using attributes with the same names as the keywords, or using a dict-like interface whose keys are the keywords. In fact, through a mechanism of “indirect parameter values”, with just a modest amount of cooperation between decorated functions a calling function can ensure uniform settings for all log_calls-decorated functions in call chains beneath it.

The package contains another decorator, record_history, a stripped-down version of log_calls which only collects call history and statistics, and outputs no messages.

NOTE: This package requires the CPython implementation, as it makes assumptions about stack frame internals which may not be valid in other interpreters.

See docs/log_calls.md for details, usage info and examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

log_calls-0.2.3.post2.tar.gz (282.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page