Skip to main content

Python project analyzer and visualization tool

Project description

PyFlowMapper

Publish Python Package

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. pandas not pd, sklearn not scikit-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-point if your main file isn't main.py
  • View diagrams in VS Code or GitHub for best results
  • The tool ignores venv/, .venv/, and other common exclude folders
  • Use --include-external to reveal how your project interacts with third-party libraries
  • Use --show-dataflow to 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_flow_mapper-0.1.0b10.dev0.tar.gz (22.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_flow_mapper-0.1.0b10.dev0-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

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

Hashes for py_flow_mapper-0.1.0b10.dev0.tar.gz
Algorithm Hash digest
SHA256 0ab10ea2295484682a1967089ce11c1c08017127f2456876e408b5fa0b3f86ba
MD5 3dea4d2a726a2fab2f0aeeb6b14d1a05
BLAKE2b-256 87d2d8c1eebf7e5ec78501e578b049d3ca649ad8c8a9506102038d6250bddb8f

See more details on using hashes here.

File details

Details for the file py_flow_mapper-0.1.0b10.dev0-py3-none-any.whl.

File metadata

File hashes

Hashes for py_flow_mapper-0.1.0b10.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 bac1b42764fbf02392427193778a7e8d51d40eb1a509dddcb129c51a0e2bc2d0
MD5 a3182307a234ceda04ecbb44dbd933a4
BLAKE2b-256 1e9b3de73b18c132fcf865042bcc198df32187bac4a9f80af1784b3c9a97c109

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page