Multi-level code structure explorer — interactive drill-down HTML visualizations
Project description
Codezoom
Multi-level code structure explorer — interactive drill-down HTML visualizations.
Codezoom generates a standalone HTML file that lets you explore a project's structure at multiple levels of detail. Click any node to drill down; use breadcrumb navigation to go back up.
What it visualizes
| Level | Python | Java |
|---|---|---|
| 1. External dependencies | Direct and transitive packages from pyproject.toml + uv.lock |
Direct and transitive Maven dependencies from pom.xml (requires jgo) |
| 2. Package/module hierarchy | Sub-packages and modules via pydeps (with file-tree fallback) — includes inter-module imports | Package tree via jdeps — includes inter-package dependencies and class-level call graphs |
| 3. Module/class internals | Functions and classes extracted from AST — shows visibility (public/private based on naming) | Classes, interfaces, enums, and nested classes extracted from compiled bytecode via javap — shows visibility (public/protected/private/package) |
| 4. Class/method internals | Methods and their call relationships extracted from AST | Methods with parameter signatures and call relationships extracted from bytecode |
Examples
External dependencies (Python) |
External dependencies (Java) |
|
Project submodules |
A submodule's children |
|
Single-file view (Python) |
Single-file view (Java) |
Installation
Installing codezoom with uv
uv tool install codezoom
Installing codezoom with pip
pip install codezoom
Installing codezoom from source
git clone https://github.com/apposed/codezoom
uv tool install --with-editable codezoom codezoom
When installed in this fashion, changes to the codezoom source code will be immediately reflected when running codezoom from the command line.
Using codezoom as a dependency
uv add codezoom
or
pixi add --pypi codezoom
Not sure which to use? Read this.
Usage
Basic usage (auto-detects Python or Java):
codezoom /path/to/project # auto-detect, output to codezoom.html
codezoom /path/to/project -o output.html # custom output path
codezoom /path/to/project --name "My Project" # custom display name
codezoom /path/to/project --open # open in browser after generating
Python projects
# Basic usage - requires pyproject.toml
codezoom /path/to/python/project
# For best results, install pydeps first
pip install pydeps
codezoom /path/to/python/project --open
Java projects
# Compile the project first
cd /path/to/java/project
mvn compile
# Generate visualization (basic - no Maven dependencies)
codezoom . --open
# For full dependency analysis, install jgo
pip install codezoom[java]
codezoom . --open
Also works as a module:
python -m codezoom /path/to/project
Requirements
Core
- Python 3.11+
- No mandatory runtime dependencies beyond the standard library
For Python projects
- Optional: pydeps for richer module-level
import analysis (falls back to file-tree scanning without it)
pip install pydeps
For Java projects
- JDK (not just JRE) — provides
jdepsandjavapfor package/class analysis - Compiled code — run
mvn compilebefore analyzing - Optional:
jgofor Maven dependency extractionpip install codezoom[java]
Per-project configuration
Projects can include a .codezoom.toml or a [tool.codezoom] section in
pyproject.toml:
[tool.codezoom]
exclude = ["tests", "docs", "__pycache__"]
The exclude list is passed to pydeps via -xx to omit modules from the
hierarchy.
Language support
Python
- Detection: Presence of
pyproject.toml - Project layouts: Both
src/layout and flat layout - Dependencies: Extracted from
pyproject.tomlanduv.lock - Hierarchy: Module tree via
pydeps(falls back to file tree) - Symbols: Functions, classes, and methods via AST parsing
- Call graphs: Method calls extracted from AST
- Visibility: Public/private based on Python naming conventions (
_private,__dunder__) - Configuration: Via
.codezoom.tomlor[tool.codezoom]inpyproject.toml
Java
- Detection: Presence of
pom.xmlorbuild.gradle.ktsorbuild.gradle - Prerequisites:
- JDK installed (for
jdepsandjavap) - Project compiled (
mvn compileor./gradlew build) pip install codezoom[java]for dependency extraction
- JDK installed (for
- Dependencies: Maven dependencies via
jgo(direct + transitive with scope filtering) - Hierarchy: Package tree via
jdepswith inter-package dependencies - Class dependencies: Class-to-class and class-to-package relationships via
javap - Symbols: Classes, interfaces, enums, nested classes via bytecode analysis
- Call graphs: Method invocations extracted from bytecode
- Visibility: Full Java visibility (public, protected, private, package-private)
- Limitations: Bridge methods are filtered out; requires compiled
.classfiles
License
UNLICENSE - All copyright disclaimed.
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
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 codezoom-2.2.0.tar.gz.
File metadata
- Download URL: codezoom-2.2.0.tar.gz
- Upload date:
- Size: 61.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae4c9e037e9c2f8c617aa1e1cb91c2986214266f78e99eb824b77a4f1cd4c5ab
|
|
| MD5 |
a0743228ab8f424d85e148da3d40ab06
|
|
| BLAKE2b-256 |
6f359708793ba64467e8b8da2fc76c7c4b39fe834f7c09b8e6d09fd20f60d3cb
|
File details
Details for the file codezoom-2.2.0-py3-none-any.whl.
File metadata
- Download URL: codezoom-2.2.0-py3-none-any.whl
- Upload date:
- Size: 73.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c17665b404704ccca3db386f633af5d837970d1f4857e8f0367e3233eb6de15d
|
|
| MD5 |
ffe785259c805defc90d840c3a19e6e9
|
|
| BLAKE2b-256 |
f016975db1e30a1e5f785d46745f4d8cdb9d7ca599e4bac3a73b147bea8a8e91
|