pidprobe
Structured JSON snapshots of running CPython 3.14+ processes via PEP 768 - no agent, no restart, no gdb
Quickstart
pip install pidprobe
# or
uv add pidprobe
from pidprobe import add
result = add(1, 2) # 3
Design Philosophy
Every choice in this template has a reason. If you disagree with a decision, you know exactly what to change and why it was there in the first place.
Why src/ layout?
The src/ layout prevents accidental imports of the local package during
development and testing. It ensures that tests always run against the
installed version, catching packaging errors before they reach users.
Why strict mypy + comprehensive Ruff rules?
Type errors and lint issues are cheapest to fix at write time. Strict settings from day one mean every line of code is held to the same standard — there is never a "legacy" codebase to clean up. LLMs generating code also benefit from strict rules: they produce higher-quality output when constraints are clear.
Why zero runtime dependencies?
A library template should not impose opinions about logging, HTTP clients, or data validation. You add what you need. Starting from zero keeps the dependency tree small and avoids conflicts with downstream users.
Why Just over Make?
Just has cleaner syntax (no mandatory tabs), better cross-platform support, and more readable recipe definitions. It is a task runner, not a build system — which is exactly what a Python project needs.
Why AGENTS.md and .claude/?
AI-assisted development is the norm, not the exception. AGENTS.md gives any
coding agent (Claude Code, Codex, Cursor, Gemini CLI, ...) the context it
needs to match your project's standards; CLAUDE.md imports it and adds
Claude Code specifics. The committed .claude/ directory goes further than
prose: path-scoped rules load conventions only when relevant files are
touched, hooks deterministically auto-format edited files, block edits to
uv.lock/.env* and --no-verify/force-push commands, and run ruff + mypy
before the agent ends a turn, while a reviewed permission allowlist covers
local build/lint/test commands only — commit, push, and PR creation always
stay behind human approval.
Why 80% coverage minimum?
80% is high enough to catch most regressions but low enough to avoid test-for-the-sake-of-testing. Branch coverage is enabled, so conditional logic is meaningfully tested.
Development
See CONTRIBUTING.md for full setup instructions.
uv sync --all-groups
# Optional but recommended when working in a Git checkout
uv run pre-commit install --install-hooks
just check
just install installs pre-commit hooks automatically when the project lives in
a Git repository and skips that step for "Use this template" bootstrap copies
before Git is initialized.
For packaging verification, run just smoke (or uv build && uv run python scripts/smoke_test.py)
to install the freshly built wheel into a temporary virtual environment and
confirm the distribution imports from the wheel, not from src/.
Documentation
License
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pidprobe-0.0.1.tar.gz.
File metadata
- Download URL: pidprobe-0.0.1.tar.gz
- Upload date:
- Size: 86.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d162fa8b24a44b7a16309f6f7cf4956a6735e6a8cc14022bbfa14a599fbe2d97
|
|
| MD5 |
8a7a9975965601744b98ff1b55842b0f
|
|
| BLAKE2b-256 |
8547e0a39fdf2e1e8242863642d9aa711bd505a22147ae58689f4fffcba3f694
|
File details
Details for the file pidprobe-0.0.1-py3-none-any.whl.
File metadata
- Download URL: pidprobe-0.0.1-py3-none-any.whl
- Upload date:
- Size: 4.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa7daa950399fbd1ab602a16ba2dfd90c2afb175e7fd2cd27a8dd04966317a96
|
|
| MD5 |
2e49c29637349c7c1e41075bc4bd574d
|
|
| BLAKE2b-256 |
923f859c447e31cc8f97975e24d585c42ede25177a660456057bb4c6a0a3424a
|