I love Python, metaprogramming, and making programming easier.
My main project is futurecoder, a platform for self-learning Python for beginners. It depends on a lot of my other work on GitHub, most of which is mentioned below.
I'm an expert at extracting obscure but useful information from Python:
🐛 Debuggers:
-
birdseye
is a unique and powerful debugger that lets you see the value of every individual expression:(Click thumbnails to expand them)
-
snoop
is a simple convenient debugger that logs everything a function is doing:It's based on
cool-RR/PySnooper
for which I made many major contributions and am a collaborator. -
heartrate
visualises execution in real time:
⚠️ Tracebacks:
-
stack_data
extracts data from stack frames and tracebacks, particularly to display more useful tracebacks than the default. -
I used
stack_data
to overhaul tracebacks in IPython, adding several fixes and enhancements. In particularstack_data
usesexecuting
(see Magic section) to highlight the precise operation which failed: -
stack_data
is also used to show excellent beginner-friendly tracebacks in futurecoder: -
I added an integration for the Sentry Python client to provide more information in tracebacks in error reports. It uses my library
pure_eval
, which evaluates simple expressions such as attributes while guaranteeing that no potentially problematic code is executed.pure_eval
is also used bystack_data
.
✨ Magic:
-
executing
can find the exact operation being executed by a frame. This is the only library that allows doing this reliably as it is a very hard problem. Many others have tried and failed. - I used
executing
to overhaulgruns/icecream
andpwwang/python-varname
, fixing several issues in the process. Both authors made me collaborators, and I've provided plenty of help since. -
sorcery
usesexecuting
to provide several surprising magical functions.
Other:
-
I use
gristlabs/asttokens
in all the projects mentioned above! I've made many significant contributions to it. -
instant_api
is more metaprogramming, but based on type hints. It lets you instantly create a Flask API with automatic type conversions, JSON RPC, and a Swagger UI. No other library makes this so convenient. Inspired by FastAPI. -
s3-stream-upload
lets you efficiently stream large amounts of data to AWS S3 in Java. -
SunHours is a SketchUp plugin written in Ruby used by architects around the world to analyse and visualise how much sunlight hits a surface. (repo)
-
Quiggles is an Android app written in Kotlin that lets anyone draw beautiful animated patterns with ease. Watch a quick demo (1:31). (repo)
(Click title text [not icons] to expand)