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