A powerful tool for analyzing Python file import dependencies using AST parsing and BFS traversal. Perfect for understanding complex codebases and detecting import cycles.
# Analyze dependencies starting from a Python file
python import_dependency_analyzer.py my_module.py
# Simple file listing
python import_dependency_analyzer.py my_module.py -s
# Claude Code optimized output
python import_dependency_analyzer.py my_module.py -c
# Machine-readable JSON output
python import_dependency_analyzer.py my_module.py -mgit clone https://github.com/your-username/import-dependency-analyzer.git
cd import-dependency-analyzer
python import_dependency_analyzer.py your_file.py# Install from local directory
pip install .
# Now you can use either command:
import-dependency-analyzer your_file.py
# or the short alias:
ida your_file.pypip install import-dependency-analyzer
import-dependency-analyzer your_file.py
# or use the short alias:
ida your_file.py- Supports import moduleandfrom module import namestatements
- Breadth-first traversal (BFS) of dependencies
- Automatic cycle detection to prevent infinite traversal
- List format output
- Ignores standard library and third-party packages, only analyzes local modules
- Handles relative imports and subdirectory modules
# Using full command name
import-dependency-analyzer <start_file>
# Using short alias
ida <start_file>import-dependency-analyzer <start_file> -s
# or
ida <start_file> -simport-dependency-analyzer <start_file> -c
# or
ida <start_file> -cimport-dependency-analyzer <start_file> -m
# or
ida <start_file> -m- start_file: Starting Python file path (required)
- -s, --simple: Simple mode: list all files without showing dependencies
- -c, --claude-code: Claude Code mode: optimized output for Claude Code
- -m, --machine-readable: Machine readable mode: output in JSON format
- -h, --help: Show help message
The tool comes with a complete space exploration example in the space_exploration directory:
space_exploration/
├── mission_control.py          # Main entry point
├── spacecraft.py               # Main spacecraft class
├── navigation.py               # Navigation system
├── communication.py            # Communication system
├── science.py                  # Science module
├── systems/                    # Subsystems
│   ├── propulsion.py
│   ├── power.py
│   └── life_support.py
├── utils/                      # Utility modules
│   ├── coordinates.py
│   └── calculations.py
├── protocols/                  # Communication protocols
│   ├── radio.py
│   └── laser.py
├── instruments/                # Scientific instruments
│   ├── telescope.py
│   └── spectrometer.py
└── data/                       # Data analysis
    └── analysis.py
Run command (after pip installation):
ida space_exploration/mission_control.py
# or
import-dependency-analyzer space_exploration/mission_control.pyOutput (partial):
Python Import Dependencies:
==================================================
D:\tools\import_tool\space_exploration\mission_control.py:
  └── D:\tools\import_tool\space_exploration\spacecraft.py
  └── D:\tools\import_tool\space_exploration\navigation.py
  └── D:\tools\import_tool\space_exploration\communication.py
  └── D:\tools\import_tool\space_exploration\science.py
D:\tools\import_tool\space_exploration\spacecraft.py:
  └── D:\tools\import_tool\space_exploration\systems\propulsion.py
  └── D:\tools\import_tool\space_exploration\systems\power.py
  └── D:\tools\import_tool\space_exploration\systems\life_support.py
D:\tools\import_tool\space_exploration\navigation.py:
  └── D:\tools\import_tool\space_exploration\utils\coordinates.py
  └── D:\tools\import_tool\space_exploration\utils\calculations.py
... (continues through all dependencies)
Run in simple mode:
ida space_exploration/mission_control.py -sOutput:
Python Files List:
==================================================
D:\tools\import_tool\space_exploration\mission_control.py
D:\tools\import_tool\space_exploration\spacecraft.py
D:\tools\import_tool\space_exploration\navigation.py
D:\tools\import_tool\space_exploration\communication.py
D:\tools\import_tool\space_exploration\science.py
D:\tools\import_tool\space_exploration\systems\propulsion.py
D:\tools\import_tool\space_exploration\systems\power.py
D:\tools\import_tool\space_exploration\systems\life_support.py
D:\tools\import_tool\space_exploration\utils\coordinates.py
D:\tools\import_tool\space_exploration\utils\calculations.py
D:\tools\import_tool\space_exploration\protocols\radio.py
D:\tools\import_tool\space_exploration\protocols\laser.py
D:\tools\import_tool\space_exploration\instruments\telescope.py
D:\tools\import_tool\space_exploration\instruments\spectrometer.py
D:\tools\import_tool\space_exploration\data\analysis.py
Run in Claude Code mode:
ida space_exploration/mission_control.py -cOutput (partial):
# Python Import Dependency Analysis
## Summary
- Total files analyzed: 15
- Files with dependencies: 5
- Files without dependencies: 10
## Dependency Graph
### mission_control.py
File: `D:\tools\import_tool\space_exploration\mission_control.py`
**Imports:**
- `spacecraft.py` (`D:\tools\import_tool\space_exploration\spacecraft.py`)
- `navigation.py` (`D:\tools\import_tool\space_exploration\navigation.py`)
- `communication.py` (`D:\tools\import_tool\space_exploration\communication.py`)
- `science.py` (`D:\tools\import_tool\space_exploration\science.py`)
... (continues with all files)Run in machine readable mode:
ida space_exploration/mission_control.py -mOutput (partial):
{
  "summary": {
    "total_files": 15,
    "files_with_dependencies": 5,
    "files_without_dependencies": 10
  },
  "dependency_graph": {
    "D:\\tools\\import_tool\\space_exploration\\mission_control.py": {
      "basename": "mission_control.py",
      "dependencies": [
        "D:\\tools\\import_tool\\space_exploration\\spacecraft.py",
        "D:\\tools\\import_tool\\space_exploration\\navigation.py",
        "D:\\tools\\import_tool\\space_exploration\\communication.py",
        "D:\\tools\\import_tool\\space_exploration\\science.py"
      ],
      "dependency_count": 4
    },
    ... (continues with all files)
  }
}- Uses Python's astmodule to parse Python file syntax trees
- Breadth-first traversal (BFS) algorithm for dependency traversal
- Uses sets to track visited nodes and prevent cycles
- Simple list format output for clarity
- Currently supports relative imports (e.g., from .module import name)
- Analyzes Python files in current directory and subdirectories
- Ignores Python standard library and third-party packages
We welcome contributions! Please see CONTRIBUTING.md for details on how to get started.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.