Skip to main content

Project Logo

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 and individual files, extracts structured information like docstrings and comments, and generates comprehensive documentation in text or markdown format.

Features

  • Multiple input sources: Process directories and specific files in a single command
  • 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
  • Clipboard support: Copy output directly to clipboard for easy pasting

Installation

# Install with Poetry
poetry install

# Or using pip
pip install viterbo

For clipboard functionality, make sure to install the required dependency:

# Using Poetry
poetry add pyperclip

# Or with pip
pip install pyperclip

Usage

Command Line

# Basic usage - copy Python files to clipboard
viterbo source_directory

# Process specific files and copy to clipboard
viterbo file1.py file2.py file3.py

# Process mixed directories and files
viterbo src/ utils.py config/ main.py

# Save to output file with -o/--output-file flag
viterbo source_directory -o output.txt

# Multiple sources with output file
viterbo src/ lib/ main.py --output-file doc.txt

# Enhanced usage with multi-language support
viterbo /path/to/source -o output.txt --extensions .py .cpp .h .R

# Include README.md files
viterbo /path/to/source --include-readme -o output.txt

# Extract and include docstrings/comments
viterbo /path/to/source --include-docstrings -o output.txt

# Add line numbers to code
viterbo /path/to/source --add-line-numbers -o output.txt

# Generate markdown output
viterbo /path/to/source main.py -o output.md --format md

Python API

from viterbo import document_files

# Document Python and C++ files in markdown format
document_files(
    source_paths=["/path/to/source", "main.py", "/another/dir"],
    output_file="output.md",
    file_extensions=[".py", ".cpp", ".h"],
    include_readme=True,
    include_docstrings=True,
    add_line_numbers=True,
    output_format="md"
)

# Copy to clipboard instead of writing to a file
document_files(
    source_paths=["src/", "main.py", "config.py"],
    output_file=None,  # None means copy to clipboard
    file_extensions=[".py", ".js"],
    include_docstrings=True
)

# For backward compatibility, the original function is still available
from viterbo import document_python_files

document_python_files(
    source_paths="/path/to/source",  # Either a string or list of paths
    output_file="output.txt",  # or None for clipboard
    include_docstrings=True,
    add_line_numbers=True
)

Output Examples

Text Output

# Code Documentation
# Generated on: 2025-05-01 10:21:33
# Sources: 3 directories/files
#   1. /path/to/source
#   2. main.py
#   3. /another/dir

# Directory Structure:
/path/to/source/
├── README.md
├── src/
│   ├── main.py
│   └── utils.py
└── tests/
    └── test_main.py

main.py

/another/dir/
├── config.py
└── helpers.py
...

Markdown Output

The markdown output includes syntax highlighting and better formatting for documentation.

Clipboard Support

When no output file is specified, Viterbo will copy the documentation to your system clipboard:

# Copy documentation to clipboard
viterbo ./my_project --include-docstrings

This is especially useful when:

  • Quickly retrieving code for pasting into an LLM interface
  • Sharing code snippets in messaging apps
  • Documenting code without creating temporary files

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

Metadata

Release files for viterbo 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for viterbo 0.3.1
File Size Uploaded
viterbo-0.3.1.tar.gz 18.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for viterbo 0.3.1
File Interpreter ABI Platform
viterbo-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 40.4 kB

Release files / viterbo-0.3.1.tar.gz

Download URL viterbo-0.3.1.tar.gz
Size 18.3 kB
Tags Source
SHA-256 checksum
How to use checksums
f22bd7f2fbfe8fa49ee27d54a04ed4f0e31506781a29f272459ad75b4ea5e366
BLAKE2b-256 checksum
How to use checksums
bd111e82ebbe17ddd0ee7acbc9ec84265d626d877f5c8cc6c76c3470f9cb769d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.3 Linux/6.11.0-24-generic

Release files / viterbo-0.3.1-py3-none-any.whl

Download URL viterbo-0.3.1-py3-none-any.whl
Size 22.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b6b602b974425ddbf3efb801ec0f1395b90ca16499dd4f664e69b089f595f754
BLAKE2b-256 checksum
How to use checksums
42d331f45eecab183ced3d62ade81b2bff8565307fa57bde1efe0539d1a7bad0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.3 Linux/6.11.0-24-generic

Release history Release notifications | RSS feed

0.3.5

2 release files

0.3.3

2 release files

0.3.2

2 release files

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page