I got tired of print(x.shape) so I built runtime type hints for Python
As a beginner learning to build ML models, I found it annoying to have to keep printing tensor shapes every other line, having to step through the debugger to check where did I mess up the shapes again. So I built Trickle, it takes the data that flows through your code, caches the types and display them inline (as if you have type annotations). The idea is: "Let types trickle from runtime into your IDE". You get types in Python without having the write them manually. It works by rewriting your Python AST at import time — after every variable assignment, it inserts a lightweight call that…
What it does
In the maker’s words, at launch
As a beginner learning to build ML models, I found it annoying to have to keep printing tensor shapes every other line, having to step through the debugger to check where did I mess up the shapes again. So I built Trickle, it takes the data that flows through your code, caches the types and display them inline (as if you have type annotations). The idea is: "Let types trickle from runtime into your IDE". You get types in Python without having the write them manually. It works by rewriting your Python AST at import time — after every variable assignment, it inserts a lightweight call that records the type and value. No decorators, no code changes. Just run your script through trickle run python train.py and every variable gets its type visible. One cool feature is Error snapshots, by toggling it in VSCode status bar, you can see the exact data that is in each variable when the error happened. For AI agents, trickle-cli outputs the inline runtime types together with the source code so agent can better diagnose the issue. For Jupyter notebooks: %load_ext trickle as your first cell, and every cell after is traced. Quick try: pip install trickle-observe npm install -g trickle-cli code --install-extension yiheinchai.trickle-vscode trickle run python demo/demo.py trickle hints demo/demo.py Limitations: - Expect 2-5x slowdown — designed for development, not production. Also supports JavaScript/TypeScript (Express, Fastify, Koa, Hono) though the Python/ML side is where I've focused most effort. In the future, I imagine there to be potential for using this as runtime observability in production via probabilistic sampling of types. Now, we know the code, we know the data, which is all the information we need to debug. Happy to answer questions
Does the same job
all alternatives →- APA Python with Hindley-Milner-like type annotations, compiling to C2015 · github.com · ▲134
- PTPython-to-Python compiler for some 3.6 features in older versions2017 · github.com · ▲87
- IEI embedded 685M public texts in 32 minutes (on 8x A100, Rust, TensorRT)Jun 2026 · github.com · ▲7
Quick note on how it works and how I've done my batch embedding engine IgniteMS. The whole thing runs as one process using Rust, reading input, tokenizing, packing batches, keeping the queue full. TensorRT handles inference. Python is only as a wrapper. I built it this way because when you use more than couple of GPUs, the GPUs stop being the problem. CPU cannot feed them fast enough. One A100 can go through batches faster than Python can tokenize and feed, so the GPU just sits there idle waiting for work. Most of my time went into optimizing this. At 8 GPUs that was basically the entire…
- ICI created a RAW to HDRI stacker in (mostly) Common LispJun 2026 · github.com · ▲35
This is an upgrade of a tool I created 15 years ago in Python to learn OOP and solve some inadequacies in the HDR stacking tools I could find at the time. The problem was, none of them were really "batch friendly". None of them properly preserved the metadata I wanted them to stuff into the output file. There were probably some other reasons also, I just can't remember them now. It got the job done, but was very slow. Python was what I knew at the time and even with NumPy, I was limited in the speed I could squeeze out of it. (I also made some very specific, conscious, architectural choices…
- AEAn experimental Python to C#/Go/Ruby/JS transpiler2016 · github.com · ▲14
- P8PEP 827 – TS-like type manipulation in PythonMar 2026 · peps.python.org · ▲7
More dev tools this month
the category →



Open-source GTM skills for technical founders
Dev tools · 29d ago · gtmcofounder.com

OpenTrailPaper is open-source bike computer firmware for the LilyGO T5S3 4.7" E-Paper PRO. It supports offline maps, GPX routes, FIT recording and Bluetooth sensors.
Dev tools · 2d ago · opentrailpaper.com

Launched alongside, March 2026
the whole month →

Switch from ChatGPT to Claude with import memory feature
AI · Mar 2026 · claude.com


