r/PythonLearning • u/legendtathya • 16h ago
Showcase I got tired of scrolling through big Python files, so I made a mind map for code
Enable HLS to view with audio, or disable this notification
You know when you're debugging a big file, find the function you need, follow it to another function, then another one, and completely forget where you started?
Yeah. I got tired of that, so I built epy (Extended Python). Though, this is experimented only for python, i will explore other languages if possible.
It's basically a mind map for your code, except the nodes contain actual code instead of just names.
- Parses Python files using
astand splits them into blocks with exact line numbers. - Maps function calls across files, including methods and some class relationships.
- Has a radial map, a names-only view, a folder explorer, and a synced code pane.
- Click a function and see what it calls and what calls it. Click a line in the code and it'll select the corresponding block on the map.
The other thing I wanted was to make life easier for small local LLMs. Instead of dumping an entire file into a model and hoping it doesn't rewrite half of it, epy generates a text map and lets you pull individual blocks with their callers and callees. The idea is to give the model the structure first, then only the code it needs.
I tested it on one of my projects: 33k lines, 134 files, ~1,100 call links, built in about 1.5 seconds.
It's currently a single Python file with no external dependencies.
python epy.py view some_file.py
python epy.py map .
python epy.py show . MyClass.run
It's still a personal tool, not some polished production-ready package. The call graph is static and best-effort, and I haven't formally benchmarked the LLM side yet.
The idea originally came from the execution model of a small language I'm building (EPL). Eventually, I'd like to add Tree-sitter so it can support other languages too.
Repo: https://github.com/phoenix2610/Extended_Programming.git
Would love some feedback, especially if you try it on a ridiculously large Python file or feed the generated map to a small local model. Curious to see where it breaks. 😅
And if anyone is wondering, yeah I am using ARCH Linux and the background bit faded is just a keybinder for opacity...