Skip to main content

Rich-powered interactive touch REPL for introspection and debugging

Project description

touch

Rich-powered terminal “micro-debugger” for Python.

  • Inspect values with pretty, readable output.
  • Peek the source of functions/classes with highlighted snippets.
  • Wrap functions so every call prints a compact, useful trace.
  • Hot-edit functions in your editor and swap them in at runtime.
  • Open a scratch file, write code, inject it straight into your scope.

All from a tiny toolkit that plays nicely with your console.

Install

pip install hyv-touch

Python 3.9+ recommended.

TL;DR

from touch import touch, embrace


# Wrap functions for pretty call/return/exception panels:
orig = embrace(globals())         # wraps everything in this scope



# Start an interactive loop over your current environment:
# Usually you want this at the point you want to inspect. Ex. at a `except` block.
touch(globals(), locals())

# If you used embrace() once touch is done 
release(globals(), orig)          # restore originals


# ------------- [ Inside the touch REPL ] ------------- #

# Pretty value inspection:
feel({"a": 1, "b": [2, 3, 4]})
feel(some_object) # Specially useful in objects, functions and Exceptions

# Show source snippet 
source(some_function) 


# Live-edit a function in VS Code 
edit(some_function) # by default has `touch's` scope, or pass `scope=globals()` 

# Open a temp file in VS Code, write new helpers, inject into scope:
retouch()

# If changes we're made to main file or it's dependencies, you can reload with:
# This will add any new symbols to the current scope, but will not overwrite existing ones.
tickle()

var_name # will show var_name's value 
function() # will call function() 

$exec a = (1, 2, 3)  # run statements with $exec prefix or use retouch() for more complex actions

Why use this

You want quick, legible debugging without committing to a full debugger session. touch gives you:

  • Readable output (Rich panels, tables, syntax highlighting)
  • Low friction (one-liners, minimal API)
  • Reversibility (wrappers can be released, edits are temporary)
  • Hot-editing (Test and tweak without restarting or losing state)
  • Versatility (All language and state available at all times)

Editor integration

  • VS Code: requires the code CLI on PATH. In VS Code, run “Shell Command: Install ‘code’ command” from the Command Palette.
  • Other editors: set $EDITOR to your editor’s CLI. edit() and retouch() will use it when VS Code isn’t available.

Examples

run python -m touch.demo [--demo | --interactive] to see a demo script showcasing touch features.

Limits and notes

  • Builtins and C-extensions don’t have Python source to show or edit.
  • Editing nested closures can lose captured locals if you move them; keep edited functions top-level or use in-place file editing.
  • The temporary trace hook used for line breakpoints is restored after each call and won’t clobber other tracers.
  • Executing code you type or edit runs in your process. Don’t paste untrusted code.

License

MIT

Project details


Download files

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

Source Distribution

hyv_touch-0.1.1.tar.gz (42.2 kB view details)

Uploaded Source

Built Distribution

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

hyv_touch-0.1.1-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file hyv_touch-0.1.1.tar.gz.

File metadata

  • Download URL: hyv_touch-0.1.1.tar.gz
  • Upload date:
  • Size: 42.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for hyv_touch-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6fdaab226010f75de1e9cf6cfe5ea17e426448745840a558d3ee430a01dcf5ea
MD5 f8791b1233b2d31b9507b6f5c711c4fa
BLAKE2b-256 00eab2e1899753ec8978bbc8cf6cdb277b84d555accb13522e11642cfef04b0f

See more details on using hashes here.

File details

Details for the file hyv_touch-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: hyv_touch-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for hyv_touch-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3307c886886498a1334b7ac5f0bb1ab1ce88700b31bb3d7ae4bd1432c8275212
MD5 ca74b49e496c960d727034a7b4e8daa7
BLAKE2b-256 3a05f9ce1934be39695f9549400bcaf4503ad6d68255f785a23045527869551d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page