snoop
Powerful debugging tools for Python
Decision gist · record as of 2026-08-14
Yes. snoop is actively maintained, has no known vulnerabilities, installs with minimal friction, and solves a real friction point in Python debugging. If you regularly reach for print-based debugging or want a faster alternative to setting up a breakpoint debugger, it's a low-risk, high-utility addition. The MIT license and broad Python version support (3.8–3.14) make it suitable for most projects.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Low friction: pure Python wheel with four lightweight runtime dependencies (cheap_repr, executing, asttokens, pygments).
- Active maintenance—last commit 2026-07-18, 1459 repository stars—and supports Python 3.8 through 3.14.
License · maintenance · safety
MIT (permissive) — MIT license (permissive): you can use, modify, and distribute snoop freely in both open-source and proprietary projects with minimal restrictions.
last release 2026-07-18 (27 days) · last repo commit 2026-07-18 · 1,459 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 266,004 downloads/mo, #8,312 on PyPI
Alternatives
Verify before relying
pip install snoop
import snoop
@snoop
def example(x):
y = x + 1
return y * 2
example(5)- Whether pp.deep's lambda-based subexpression tracing works reliably in all IDE/notebook environments
- Performance overhead when tracing deeply nested call stacks (depth parameter behavior under load)
What it is and what it does
snoop is a Python debugging library that replaces manual print-statement debugging with a single decorator or context manager. Instead of scattering print calls throughout your code to track execution flow and variable changes, you annotate the function or wrap a code block with @snoop or with snoop:, and snoop logs every line that runs, the order in which they execute, and the exact moment each local variable changes value. It also includes pp, a pretty-print utility that shows both the source expression and its formatted value, useful for quick inline inspection.
The package is designed for developers who want visibility into function behavior without the setup overhead of a graphical debugger. It supports watching arbitrary expressions, exploding nested data structures to see all attributes and items, and tracing into nested function calls via the depth parameter. snoop integrates with IPython and Jupyter, and can be globally installed via install() to avoid explicit imports in your code.
Use it for
- Trace execution flow and variable mutations in a function without adding print statements or opening a debugger.
- Inspect the values and timing of changes to complex nested data structures during a function call.
- Debug a memoizing or caching decorator by watching when cache lookups succeed or fail across multiple calls.
- Print intermediate values of subexpressions inline without restructuring your code, using pp() or pp.deep().
- Understand call sequences and state changes across multiple nested function calls using the depth parameter.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
snoop is actively maintained, has no known vulnerabilities, installs with minimal friction, and solves a real friction point in Python debugging. If you regularly reach for print-based debugging or want a faster alternative to setting up a breakpoint debugger, it's a low-risk, high-utility addition. The MIT license and broad Python version support (3.8–3.14) make it suitable for most projects.
Install
snoop on PyPI
Before you install
Low friction: pure Python wheel with four lightweight runtime dependencies (cheap_repr, executing, asttokens, pygments). Active maintenance—last commit 2026-07-18, 1459 repository stars—and supports Python 3.8 through 3.14.
License in practice
MIT license (permissive): you can use, modify, and distribute snoop freely in both open-source and proprietary projects with minimal restrictions.
Quickstart
pip install snoop
import snoop
@snoop
def example(x):
y = x + 1
return y * 2
example(5)
Verify before relying
- Whether pp.deep's lambda-based subexpression tracing works reliably in all IDE/notebook environments
- Performance overhead when tracing deeply nested call stacks (depth parameter behavior under load)
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.8 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 4 packagescheap_reprexecutingasttokenspygments |
| Maintenance | Actively maintained 27 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 266,004 / month, #8,312 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Environment :: ConsoleLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonTopic :: Software Development :: Debuggers |
Evidence: snoop-0.6.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “debug logging decorator”
- snoopsnoop adds decorator-based and context-manager tracing to Python…
- AutologgingAutologging provides decorators to automatically inject logging and…
- logfuryLogfury adds automatic method-call tracing to Python classes and…
Give your agent the search over MCP, or paste the wish link into any chat.
More Debuggers packages
Extracts and displays stack frame and traceback data with context-aware source code rendering, used to power enhanced tracebacks in IPython and similar tools.
Install it if you need to display or inspect stack frames with source context; skip it if your use case doesn't involve frame introspection.
debugpy is a Debug Adapter Protocol implementation for Python that enables remote debugging of Python scripts and modules through standard DAP clients, with support for breakpoints, exception handling, and subprocess debugging.
Install it if you need remote debugging, DAP client integration, or programmatic control over breakpoints and exception handling.
Pylint is a static code analyzer that checks Python code for errors, enforces coding standards, detects code smells, and suggests refactoring improvements without executing the code.
Install it if you need thorough code analysis with inference-based bug detection; if speed is critical, consider pairing it with faster linters like ruff for…
yamllint checks YAML files for syntax errors, style violations, and structural problems like key repetition, line length, trailing spaces, and indentation issues.
ipdb is an IPython-enabled debugger that replaces Python's standard pdb with tab completion, syntax highlighting, and better introspection while maintaining the same pdb interface.
Memray is a memory profiler for Python that traces every function call to track memory allocations across Python code, native extensions, and the interpreter itself, generating reports like flame graphs and tables to analyze memory usage.
See also icecream · PySnooper · seeq-spy · kgb · traceback-with-variables · Autologging · pytest-mock · varname · undecorated · memory-profiler