Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

Handit Core (Python)

Lightweight function and HTTP tracing for Python applications with zero configuration. Captures function calls/returns with arguments and return values, and outgoing HTTP requests/responses (including bodies) for requests and httpx. Events are buffered in-memory and written once at process exit to handit_events.jsonl.

Install

Build from source (requires Rust and Python toolchain):

python -m pip install maturin
python -m maturin develop --release -m python/pyproject.toml

Quick start

from handit import session, tracing
import requests

@tracing(agent="demo")
def fetch_user(user_id: int) -> dict:
    resp = requests.get(f"https://httpbin.org/anything/{user_id}")
    return resp.json()

if __name__ == "__main__":
    with session(tag="demo-session"):
        fetch_user(42)
# Events will be written to ./handit_events.jsonl at exit

What is captured

  • Function events: call/return/exception
    • Arguments preview on call
    • Return value preview on return
  • HTTP events (client-side)
    • requests/httpx: method, URL, headers, request body; response status, headers, body, size, duration, error
    • aiohttp: method, URL, headers; response status, headers (bodies are not captured by default)

Behavior

  • Zero-config: HTTP instrumentation is enabled on import; no environment variables are required.
  • Noise reduction: internal library frames and stdlib/site-packages are excluded by default.
  • Output: events are buffered and flushed once at exit to handit_events.jsonl.
    • Override path via env HANDIT_OUTPUT_FILE=./path/file.jsonl.

Advanced

  • Manual flush during runtime:
from handit_core import handit_core_native as native
native.flush_events_to_file("./handit_events.jsonl")
  • Optional envs (all have safe defaults):
    • HANDIT_INCLUDE / HANDIT_EXCLUDE: module/function regex filters
    • HANDIT_MAX_STR (default 256), HANDIT_MAX_LOCALS (default 64)
    • HANDIT_REDACT: regex for keys to redact in previews
    • HANDIT_CAPTURE_ONLY_CWD (default true)

Notes

  • Capturing full HTTP bodies may include sensitive data. Ensure you comply with your data policy.
  • For aiohttp streamed bodies, body capture can be added with explicit buffering middleware if needed.

Metadata

Release files for handit 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for handit 0.0.1
File Interpreter ABI Platform
handit-0.0.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Release files / handit-0.0.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL handit-0.0.1-cp310-cp310-macosx_11_0_arm64.whl
Size 2.5 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
48d20ef49b1e24a71fb693dd925f318d176807affd85f085cac3e5839dfa017c
BLAKE2b-256 checksum
How to use checksums
87599a52e5640fc5ef57eb5a2ab76f9af0a73cf182495508b6d62389f415903c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.0.1 This release

1 release file

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