Skip to main content
Documentation Status Travis-CI Build Status AppVeyor Build Status Coverage Status Code Quality Status Scrtinizer Status
PyPI Package latest release PyPI Package monthly downloads PyPI Wheel Supported versions Supported imlementations

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

https://python-hunter.readthedocs.org/

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:

python2.7/posixpath.py:60    call      def join(a, *p):
python2.7/posixpath.py:64    line          path = a
python2.7/posixpath.py:65    line          for b in p:
python2.7/posixpath.py:66    line              if b.startswith('/'):
python2.7/posixpath.py:68    line              elif path == '' or path.endswith('/'):
python2.7/posixpath.py:71    line                  path += '/' + b
python2.7/posixpath.py:65    line          for b in p:
python2.7/posixpath.py:72    line          return path
python2.7/posixpath.py:72    return        return path
                             ...       return value: 'a/b'
  • or in a terminal:

https://raw.githubusercontent.com/ionelmc/python-hunter/master/docs/simple-trace.png

You can have custom actions, like a variable printer - example:

import hunter
hunter.trace(hunter.Q(module='posixpath', action=hunter.VarsPrinter('path')))

import os
os.path.join('a', 'b')

Would result in:

python2.7/posixpath.py:60    call      def join(a, *p):
python2.7/posixpath.py:64    line          path = a
                             vars      path => 'a'
python2.7/posixpath.py:65    line          for b in p:
                             vars      path => 'a'
python2.7/posixpath.py:66    line              if b.startswith('/'):
                             vars      path => 'a'
python2.7/posixpath.py:68    line              elif path == '' or path.endswith('/'):
                             vars      path => 'a'
python2.7/posixpath.py:71    line                  path += '/' + b
                             vars      path => 'a/b'
python2.7/posixpath.py:65    line          for b in p:
                             vars      path => 'a/b'
python2.7/posixpath.py:72    line          return path
                             vars      path => 'a/b'
python2.7/posixpath.py:72    return        return path
                             ...       return value: 'a/b'
  • or in a terminal:

https://raw.githubusercontent.com/ionelmc/python-hunter/master/docs/vars-trace.png

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:

PYTHONHUNTER="module='os.path'" python yourapp.py

On Windows you’d do something like:

set PYTHONHUNTER="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-PYTHONHUNTER-env-var>)

That also means that it will do activation even if the env var is empty, eg: PYTHONHUNTER="".

Development

To run the all tests run:

tox

Changelog

0.3.0 (2015-03-29)

  • Added handling for internal repr failures.

  • Fixed issues with displaying code that has non-ascii characters.

  • Implemented better display for call frames so that when a function has decorators the function definition is shown (instead of just the first decorator). See: #8.

0.2.1 (2015-03-28)

  • Added missing color entry for exception events.

  • Added Event.line property. It returns the source code for the line being run.

0.2.0 (2015-03-27)

  • Added color support (and colorama as dependency).

  • Added support for expressions in VarsPrinter.

  • Breaking changes:

    • Renamed F to Q. And Q is now just a convenience wrapper for Query.

    • Renamed the PYTHON_HUNTER env variable to PYTHONHUNTER.

    • Changed When to take positional arguments.

    • Changed output to show 2 path components (still not configurable).

    • Changed VarsPrinter to take positional arguments for the names.

  • Improved error reporting for env variable activation (PYTHONHUNTER).

  • Fixed env var activator (the .pth file) installation with setup.py install (the “egg installs”) and setup.py develop/pip install -e (the “egg links”).

0.1.0 (2015-03-22)

  • First release on PyPI.

Download files

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

Source Distribution

hunter-0.3.0.tar.gz (26.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hunter-0.3.0-py2.py3-none-any.whl (11.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file hunter-0.3.0.tar.gz.

File metadata

  • Download URL: hunter-0.3.0.tar.gz
  • Upload date:
  • Size: 26.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for hunter-0.3.0.tar.gz
Algorithm Hash digest
SHA256 bbc1b7c4dce8cdeeadbc4d5ae84f44ae450d45fd67cdc69ed1593c43f905aadd
MD5 d6c39d146f089860fa6fe419840f6f46
BLAKE2b-256 425ac2d7340688f17775de28dbad6648caedfd35dad589c73ebeaaaf456e44dd

See more details on using hashes here.

File details

Details for the file hunter-0.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for hunter-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ff58322a02d6ae2a07422d85d588fd2025bbd249effda5561721ef4b782ed650
MD5 b436d73844fe5432da312e65bd6946e4
BLAKE2b-256 f9022e8f3fe7b062f0c4eb2da3833595aaca9b5b77dd8fdb5caf3570c899175f

See more details on using hashes here.

Release history Release notifications | RSS feed

3.9.0

51 files

3.8.0

30 files

3.7.0

37 files

3.6.1

16 files

3.6.0

16 files

3.5.1

32 files

3.5.0

32 files

3.4.3

37 files

3.4.1

32 files

3.4.0

31 files

3.3.8

22 files

3.3.5

22 files

3.3.3

22 files

3.3.2

22 files

3.3.1

22 files

3.3.0

20 files

3.2.2

22 files

3.2.1

22 files

3.2.0

22 files

3.1.3

18 files

3.1.2

18 files

3.1.1

13 files

3.1.0

13 files

3.0.5

18 files

3.0.4

18 files

3.0.3

15 files

3.0.2

14 files

3.0.1

15 files

3.0.0

15 files

2.2.1

18 files

2.2.0.post1

1 file

2.2.0

18 files

2.1.0

22 files

2.0.2

23 files

2.0.1

23 files

2.0.0

23 files

1.4.1

14 files

1.4.0

8 files

1.3.0

14 files

1.2.2

7 files

1.2.1

7 files

1.2.0

7 files

1.1.0

7 files

1.0.2

7 files

1.0.1

7 files

1.0.0

1 file

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.3.1

2 files

This release

0.3.0 This release

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

0.0.1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page