Python project analyzer and visualization tool
Project description
PyFlowMapper
PyFlowMapper is a lightweight Python static-analysis tool that helps you understand how functions connect and how data flows across your codebase — without running your code.
It is designed for developers who want fast architectural insight into new or existing Python projects.
What It Does
- Reads Python source files using AST (no execution)
- Detects which functions call which others
- Tracks return-value–based data flow between functions
- Generates clear Mermaid diagrams
- Works with Python 3.12+
- Automatically ignores virtual environments
Quick Install
# Clone and install
git clone https://github.com/ArunKoundinya/py-flow-mapper.git
cd py-flow-mapper
pip install -e .
# Or install directly
pip install py-flow-mapper
How to Use
Analyze Your Project
pyflow analyze /path/to/your/project
This creates a project_meta.json file with all the analysis results.
Create Diagrams
pyflow diagram /path/to/your/project/project_meta.json
See Project Structure
pyflow structure /path/to/your/project
Shows a clean tree view of your project folders and files.
What You Get
Metadata File — project_meta.json
Contains:
- List of all functions and where they are
- Which functions call which others
- How data moves between functions
- All imports and dependencies
One Type of Diagram
- Detailed Flow Graph - Shows modules and data flow
Requirements
- Python 3.12 or higher
Common Commands
| Command | What it does |
|---|---|
pyflow analyze /path/to/project |
Analyze a project |
pyflow diagram /path/to/project/project_meta.json |
Make diagrams |
pyflow structure /path/to/project |
Show folder structure |
pyflow --help |
Get help |
pyflow version |
Check version |
Diagram Options
Layout Direction
By default, diagrams are generated in both top-down (TD) and left-right (LR) layouts. You can control this with --layout:
pyflow diagram project_meta.json --layout LR
| Layout | Best for |
|---|---|
TD (default) |
Following execution order top to bottom |
LR |
Seeing project vs external library boundary |
Including External Libraries
By default, external library calls (e.g. pandas, numpy, sklearn) are hidden from diagrams to reduce noise. You can opt in to showing specific libraries using --include-external:
# Show pandas and numpy calls in the diagram
pyflow diagram project_meta.json --include-external pandas,numpy
# Show sklearn pipeline components
pyflow diagram project_meta.json --include-external sklearn
# Combine with layout option
pyflow diagram project_meta.json --include-external pandas,sklearn --layout LR
This is especially useful for data-heavy projects where you want to see where data enters (e.g. pd.read_csv) or leaves the system (e.g. model exports).
Note: The library names you pass should match the top-level import name used in your code (e.g.
pandasnotpd,sklearnnotscikit-learn).
Showing Data Flow Edges
Data-flow edges (dashed arrows showing return values being passed between functions) are hidden by default. Enable them with --show-dataflow:
pyflow diagram project_meta.json --show-dataflow
# Combine all options
pyflow diagram project_meta.json --include-external pandas,sklearn --show-dataflow --layout LR
Features
✅ Works with any Python 3.12+ project
✅ No need to run your code
✅ Creates visual diagrams
✅ Shows data flow between functions
✅ Handles imports correctly
✅ Excludes virtual environments automatically
✅ Opt-in visibility for external library calls
Tips
- Start with a small project to see how it works
- Use
--entry-pointif your main file isn'tmain.py - View diagrams in VS Code or GitHub for best results
- The tool ignores
venv/,.venv/, and other common exclude folders - Use
--include-externalto reveal how your project interacts with third-party libraries - Use
--show-dataflowto trace how return values move between functions
Full Documentation
Full documentation (including examples and architecture diagrams) is available in the docs/ folder and built using Quarto.
⚠ Limitations
PyFlowMapper uses static analysis. It may not fully resolve:
- Runtime imports
- Heavy metaprogramming
- Highly dynamic call patterns
Despite this, it provides a strong and reliable architectural baseline for most Python projects.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_flow_mapper-0.1.0b10.dev0.tar.gz.
File metadata
- Download URL: py_flow_mapper-0.1.0b10.dev0.tar.gz
- Upload date:
- Size: 22.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ab10ea2295484682a1967089ce11c1c08017127f2456876e408b5fa0b3f86ba
|
|
| MD5 |
3dea4d2a726a2fab2f0aeeb6b14d1a05
|
|
| BLAKE2b-256 |
87d2d8c1eebf7e5ec78501e578b049d3ca649ad8c8a9506102038d6250bddb8f
|
File details
Details for the file py_flow_mapper-0.1.0b10.dev0-py3-none-any.whl.
File metadata
- Download URL: py_flow_mapper-0.1.0b10.dev0-py3-none-any.whl
- Upload date:
- Size: 22.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bac1b42764fbf02392427193778a7e8d51d40eb1a509dddcb129c51a0e2bc2d0
|
|
| MD5 |
a3182307a234ceda04ecbb44dbd933a4
|
|
| BLAKE2b-256 |
1e9b3de73b18c132fcf865042bcc198df32187bac4a9f80af1784b3c9a97c109
|