DHV
Posted on 2025-07-19 15:00 +0100 in Coding • 2 min read
Back in the very early days of my involvement with
Textualize, while looking for fun things to
build to test out the framework and find problems with it, I created
textual-astview
. The idea was
pretty simple: exercise Textual's
Tree
widget by using it to
display the output of Python's abstract syntax tree
module.
While the code still works, Textual has moved on a lot, as has my approach to building applications with Textual, and so I've been wanting to do a ground-up rewrite of it. At the same time I was also thinking that it might be interesting to build a tool that provides other ways of understanding how your Python source gets turned into runnable code; with this in mind I've ended up building a terminal-based application called DHV.
The idea is pretty straightforward: you type in, paste in, or load up, Python code, and you get a real-time display of what the resulting bytecode and abstract syntax tree would be.
If you've ever wondered what a particular bit of code looks like under the
hood, or wondered if one particular approach to a problem is "more
efficient"1 than another, or just wondered to yourself if 1+1
ends up
being a complex operation or simply gets turned into 2
, this tool might be
useful to experiment and see.
As of now DHV only works with Python 3.13. The main reason for this is that
the Python dis
module is a bit of a moving target and has had some
noticeable interface changes over the past few versions. When I find some
time I might work on making DHV a little more backward-compatible. But for
now keep this in mind: when you're looking at the results for some code
you're looking at what Python 3.13 (or later) would do, earlier Pythons may
differ.
DHV is licensed GPL-3.0 and available via
GitHub and also via
PyPI. If you have an environment that has
pipx
installed you should be able to get up and going with:
pipx install dhv
If you're a fan of
uv
and friends
you can install it like this:
uv tool install --python 3.13 dhv
-
I'm sure many of us have worked with that person who claims "this is more efficient" without providing any evidence; this might just be the tool to let you check that assertion. ↩