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. ↩

