A Python package to convert codebase to text
Project description
Codebase to Text Converter
A powerful Python tool that converts codebases (folder structures with files) into a single text file or Microsoft Word document (.docx), while preserving folder structure and file contents. Perfect for AI/LLM processing, documentation generation, and code analysis.
✨ Features
- Multi-source input: Local directories and GitHub repositories
- Flexible output: Text files (.txt) and Microsoft Word documents (.docx)
- Smart exclusions: Advanced pattern matching for files and directories
- Performance optimized: Efficient traversal of large codebases
- Comprehensive logging: Detailed verbose mode for transparency
- Encoding support: Handles various file encodings gracefully
🚀 Installation
pip install codebase-to-text
📖 Usage
Command Line Interface (CLI)
Basic Usage
codebase-to-text --input "path_or_github_url" --output "output_path" --output_type "txt"
Advanced Usage with Exclusions
# Exclude specific patterns
codebase-to-text --input "./my_project" --output "output.txt" --output_type "txt" --exclude "*.log,temp/,**/__pycache__/**"
# Multiple exclude arguments
codebase-to-text --input "./my_project" --output "output.txt" --output_type "txt" --exclude "*.pyc" --exclude "build/" --exclude "venv/"
# Exclude hidden files
codebase-to-text --input "./my_project" --output "output.txt" --output_type "txt" --exclude_hidden
# Verbose mode for detailed logging
codebase-to-text --input "./my_project" --output "output.txt" --output_type "txt" --verbose
Python API
from codebase_to_text import CodebaseToText
# Basic usage
converter = CodebaseToText(
input_path="path_or_github_url",
output_path="output_path",
output_type="txt"
)
converter.get_file()
# Advanced usage with exclusions
converter = CodebaseToText(
input_path="./my_project",
output_path="./output.txt",
output_type="txt",
exclude=["*.log", "temp/", "**/__pycache__/**"],
exclude_hidden=True,
verbose=True
)
converter.get_file()
# Get text content without saving to file
text_content = converter.get_text()
print(text_content)
🎯 Exclusion Patterns
The tool supports powerful exclusion patterns to filter out unwanted files and directories:
Pattern Types
- Exact filename:
README.md,config.yaml - Wildcard patterns:
*.log,*.tmp,test_* - Directory patterns:
__pycache__/,.git/,node_modules/ - Recursive patterns:
**/__pycache__/**,**/node_modules/** - Path-based patterns:
src/temp/,docs/build/
Exclusion Sources
- CLI Arguments: Use
--excludeflag (can be used multiple times) .excludefile: Place in your project root (see example below)- Default patterns: Common files/folders are excluded automatically
Default Exclusions
The tool automatically excludes common development files:
.git/,__pycache__/,*.pyc,*.pyonode_modules/,.venv/,venv/,env/*.log,*.tmp,.DS_Store.pytest_cache/,build/,dist/
📝 .exclude File Example
Create a .exclude file in your project root:
# .exclude file - Patterns for files/folders to exclude
# Version control
.git/
.gitignore
# Python
__pycache__/
*.pyc
venv/
.pytest_cache/
# Node.js
node_modules/
*.log
# IDE files
.vscode/
.idea/
# Project specific
config/secrets.yaml
data/large_files/
🔧 CLI Parameters
| Parameter | Description | Example |
|---|---|---|
--input |
Input path (local folder or GitHub URL) | ./my_project or https://github.com/user/repo |
--output |
Output file path | ./output.txt |
--output_type |
Output format (txt or docx) |
txt |
--exclude |
Exclusion patterns (repeatable) | --exclude "*.log" --exclude "temp/" |
--exclude_hidden |
Exclude hidden files/folders | Flag (no value) |
--verbose |
Enable detailed logging | Flag (no value) |
💡 Examples
Convert Local Project
# Basic conversion
codebase-to-text --input "~/projects/my_app" --output "my_app_code.txt" --output_type "txt"
# With custom exclusions
codebase-to-text --input "~/projects/my_app" --output "my_app_code.txt" --output_type "txt" --exclude "*.log,build/,dist/" --verbose
Convert GitHub Repository
# Public repository
codebase-to-text --input "https://github.com/username/repo" --output "repo_analysis.docx" --output_type "docx"
# With exclusions for cleaner output
codebase-to-text --input "https://github.com/username/repo" --output "repo_clean.txt" --output_type "txt" --exclude "*.md,docs/,examples/"
Python Integration
# Analyze a codebase programmatically
from codebase_to_text import CodebaseToText
def analyze_codebase(project_path):
converter = CodebaseToText(
input_path=project_path,
output_path="analysis.txt",
output_type="txt",
exclude=["*.log", "test/", "**/__pycache__/**"],
verbose=True
)
# Get the content
content = converter.get_text()
# Process with your preferred LLM/AI tool
# analysis_result = your_ai_tool.analyze(content)
return content
# Usage
code_content = analyze_codebase("./my_project")
🎯 Use Cases
- AI/LLM Training: Prepare codebases for language model training
- Code Review: Generate comprehensive code overviews for review
- Documentation: Create single-file documentation from projects
- Analysis: Feed entire codebases to AI tools for analysis
- Migration: Document legacy codebases before migration
- Learning: Study open-source projects more effectively
🔄 Output Format
The generated output includes:
- Folder Structure: Tree-like representation of the directory structure
- File Contents: Full content of each file with metadata
- Clear Separators: Distinct sections for easy navigation
✒️ License
License This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
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 codebase_to_text-1.2.tar.gz.
File metadata
- Download URL: codebase_to_text-1.2.tar.gz
- Upload date:
- Size: 18.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e88bfdcab4378e35b1fbe2f0a9a8070abe16701fd8b1e9baff9f9a6446b286a
|
|
| MD5 |
0f6837dae44f79db632707c015971a4b
|
|
| BLAKE2b-256 |
f2cdb7ef3e1100d7f44c89c6a86d9ada97890edd6cf25bc11a1c6e8780b6da08
|
File details
Details for the file codebase_to_text-1.2-py3-none-any.whl.
File metadata
- Download URL: codebase_to_text-1.2-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa02b8dcdc08842d301f5e34547c0859c5448e0e5ae61c64a86f9b979c37b481
|
|
| MD5 |
5eb942c999c5bb08579018b3926c7667
|
|
| BLAKE2b-256 |
9b156436d3b1a5c5f180eb6cc30de96e24319b35219412b93c5386704b489263
|