Hunter is a flexible code tracing toolkit.
Project description
Hunter is a flexible code tracing toolkit, not for measuring coverage, but for debugging, logging, inspection and other nefarious purposes.
API is considered unstable until 1.0 is released.
Free software: BSD license
Installation
pip install hunter
Documentation
Overview
The default action is to just print the code being executed. Example:
import hunter
hunter.trace(module='posixpath')
import os
os.path.join('a', 'b')
Would result in:
posixpath.py:60 call def join(a, *p): posixpath.py:64 line path = a posixpath.py:65 line for b in p: posixpath.py:66 line if b.startswith('/'): posixpath.py:68 line elif path == '' or path.endswith('/'): posixpath.py:71 line path += '/' + b posixpath.py:65 line for b in p: posixpath.py:72 line return path posixpath.py:72 return return path ... return value: 'a/b'
You can have custom actions, like a variable printer - example:
import hunter
hunter.trace(hunter.F(module='posixpath', action=hunter.VarsPrinter(name='path')))
import os
os.path.join('a', 'b')
Would result in:
posixpath.py:60 call def join(a, *p): posixpath.py:64 line path = a vars path -> 'a' posixpath.py:65 line for b in p: vars path -> 'a' posixpath.py:66 line if b.startswith('/'): vars path -> 'a' posixpath.py:68 line elif path == '' or path.endswith('/'): vars path -> 'a' posixpath.py:71 line path += '/' + b vars path -> 'a/b' posixpath.py:65 line for b in p: vars path -> 'a/b' posixpath.py:72 line return path vars path -> 'a/b' posixpath.py:72 return return path ... return value: 'a/b'
You can give it a tree-like configuration where you can optionally configure specific actions for parts of the tree (like dumping variables or a pdb set_trace):
TODO: More examples.
Environment variable activation
For your convenience environment variable activation is available. Just run your app like this:
PYTHON_HUNTER="module='os.path'" python yourapp.py
On Windows you’d do something like:
set PYTHON_HUNTER="module='os.path'" python yourapp.py
The activation works with a clever .pth file that checks for that env var presence and before your app runs does something like this:
from hunter import * trace(<whatever-you-had-in-the-PYTHON_HUNTER-env-var>)
That also means that it will do activation even if the env var is empty, eg: PYTHON_HUNTER="".
Development
To run the all tests run:
tox
Changelog
0.1.0 (2015-03-22)
First release 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.
Source Distribution
Built Distribution
Hashes for hunter-0.1.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bcd380782325e0e2bbcfbb8b76be87cab763b6be4b67eeb96867e2e080582648 |
|
MD5 | cb26517d15a3063e4c9007ff217aa669 |
|
BLAKE2b-256 | 8c44c6a1a3feb00bd9bfc2c199319cb1f54cb2365c1ee6dd39fb09a352058e12 |