A tool for collecting and documenting code for LLM context
Project description
Viterbo
A tool for collecting and documenting code files for LLM context.
Overview
Viterbo helps collect source code files from various languages and compile them into a readable format for inclusion in LLM prompts. It scans directories for code files, extracts structured information like docstrings and comments, and generates comprehensive documentation in text or markdown format.
Features
- Multi-language support: Python, C/C++, R, JavaScript, TypeScript, and many other languages
- Directory tree visualization: Shows the structure of your codebase
- Documentation extraction: Extracts docstrings, comments, and code structure
- Output formats: Generate documentation in plain text or markdown
- README inclusion: Optionally include README.md files in the documentation
- Line numbering: Add line numbers to code for easy reference
- Organized output: Collects code with clear section headers showing file paths
Installation
# Install with Poetry
poetry install
# Or using pip
pip install viterbo
Usage
Command Line
# Basic usage (Python files only)
viterbo source_directory output_file [--include-docstrings] [--add-line-numbers]
# Enhanced usage with multi-language support
viterbo /path/to/source output.txt --extensions .py .cpp .h .R
# Include README.md files
viterbo /path/to/source output.txt --include-readme
# Extract and include docstrings/comments
viterbo /path/to/source output.txt --include-docstrings
# Add line numbers to code
viterbo /path/to/source output.txt --add-line-numbers
# Generate markdown output
viterbo /path/to/source output.md --format md
Python API
from viterbo import document_files
# Document Python and C++ files in markdown format
document_files(
source_dir="/path/to/source",
output_file="output.md",
file_extensions=[".py", ".cpp", ".h"],
include_readme=True,
include_docstrings=True,
add_line_numbers=True,
output_format="md"
)
# For backward compatibility, the original function is still available
from viterbo import document_python_files
document_python_files(
source_dir="/path/to/source",
output_file="output.txt",
include_docstrings=True,
add_line_numbers=True
)
Output Examples
Text Output
# Code Documentation
# Generated on: 2025-05-01 10:21:33
# Source: /path/to/source
# Directory Structure:
/path/to/source/
├── README.md
├── src/
│ ├── main.py
│ └── utils.py
└── tests/
└── test_main.py
...
Markdown Output
The markdown output includes syntax highlighting and better formatting for documentation.
Development
# Clone the repository
git clone https://github.com/pboerr/viterbo.git
cd viterbo
# Install development dependencies
poetry install
# Running tests
poetry run pytest
# Building the package
poetry build
License
MIT
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 viterbo-0.2.0.tar.gz.
File metadata
- Download URL: viterbo-0.2.0.tar.gz
- Upload date:
- Size: 14.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.11.0-24-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b283117dc362d03fc16c1e2e316779a2647520d6a1b431d8f0f2597ac2dd312
|
|
| MD5 |
641c0cc9f651584f3d0ca4529f351a2d
|
|
| BLAKE2b-256 |
51d5f40acf294dcb57ad6570c950cea7bb5ca7883c951aace72179b54e148aa6
|
File details
Details for the file viterbo-0.2.0-py3-none-any.whl.
File metadata
- Download URL: viterbo-0.2.0-py3-none-any.whl
- Upload date:
- Size: 19.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.3 Linux/6.11.0-24-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa8461a6cb63c828ff8f7a0a2b562b5642e0c9a6e7acfa080b2b9fd6f5534cbb
|
|
| MD5 |
12ba2176bff60cb709fc0ea22e6599f6
|
|
| BLAKE2b-256 |
b57ddb07d9ea6b9e59f905394e488db3547c7c1e4011c65e673467cd6e1220be
|