Generate source code from Code2Logic output files
Project description
Logic2Code - Code Generation from Logic Files
Generate source code from Code2Logic output files.
Reads YAML, Hybrid YAML, or TOON format files and produces working code scaffolds.
✨ Features
- 🏗️ Code scaffolds - Complete class and function structures
- 📝 Type hints - Full type annotation support
- 📚 Docstrings - Auto-generated documentation
- 🤖 LLM integration - Optional AI-powered implementations
- 🔄 Refactoring support - Logic → Code → Logic workflow
🚀 Installation
pip install logic2code
Or with LLM support:
pip install logic2code[llm] # With lolm for LLM generation
📖 Quick Start
CLI
# Show what can be generated
logic2code out/code2logic/project.c2l.yaml --summary
# Generate Python code
logic2code out/code2logic/project.c2l.yaml -o out/logic2code/generated_code/
# Generate stubs only
logic2code out/code2logic/project.c2l.yaml -o out/logic2code/generated_code/ --stubs-only
# Generate specific modules
logic2code out/code2logic/project.c2l.yaml -o out/logic2code/generated_code/ --modules "analyzer.py,parsers.py"
Python API
from logic2code import CodeGenerator
# Create generator
generator = CodeGenerator('out/code2logic/project.c2l.yaml')
# Get summary
summary = generator.summary()
print(f"Modules: {summary['total_modules']}")
print(f"Classes: {summary['total_classes']}")
# Generate code
result = generator.generate('out/logic2code/generated_code/')
print(f"Generated {result.files_generated} files")
# Generate single module
code = generator.generate_module('analyzer.py')
print(code)
📋 Generated Code Example
@dataclass
class ProjectInfo:
"""Information about analyzed project."""
name: str
total_files: int = 0
total_lines: int = 0
modules: List[ModuleInfo] = field(default_factory=list)
async def analyze_project(
path: str,
use_treesitter: bool = True,
verbose: bool = False
) -> ProjectInfo:
"""Analyzes project and returns ProjectInfo."""
raise NotImplementedError("TODO: Implement analyze_project")
🤖 LLM-Enhanced Generation
from logic2code import CodeGenerator, GeneratorConfig
config = GeneratorConfig(
use_llm=True,
llm_provider='openrouter'
)
generator = CodeGenerator('out/code2logic/project.c2l.yaml', config)
result = generator.generate('out/logic2code/generated_code/')
🖥️ CLI Reference
| Option | Description |
|---|---|
-o, --output DIR |
Output directory |
-l, --language LANG |
Target language (default: python) |
--stubs-only |
Generate stubs only |
--no-docstrings |
Skip docstring generation |
--no-type-hints |
Skip type hints |
--no-init |
Skip __init__.py generation |
--flat |
Flat output structure |
--modules LIST |
Comma-separated modules to generate |
--summary |
Show summary without generating |
-v, --verbose |
Verbose output |
⚙️ Configuration
from logic2code import CodeGenerator, GeneratorConfig
config = GeneratorConfig(
language='python',
stubs_only=False,
include_docstrings=True,
include_type_hints=True,
generate_init=True,
preserve_structure=True,
use_llm=False,
llm_provider=None,
)
generator = CodeGenerator('project.c2l.yaml', config)
🔄 Refactoring Workflow
# 1. Analyze original code
code2logic src/ -f yaml -o out/code2logic/project.c2l.yaml
# 2. Modify logic file (add/change functions)
# Edit out/code2logic/project.c2l.yaml
# 3. Generate new code
logic2code out/code2logic/project.c2l.yaml -o out/logic2code/new_src/
# 4. Compare and merge
diff -r src/ out/logic2code/new_src/
🧰 Monorepo (code2logic) workflow
If you use logic2code inside the code2logic monorepo, you can manage all packages from the repository root:
make test-all
make build-subpackages
make publish-all
See: docs/19-monorepo-workflow.md.
🧪 Development
# Install dev dependencies
make install-dev
# Run tests
make test
# Format code
make format
# Lint
make lint
# Build package
make build
# Publish to PyPI
make publish
📄 License
Apache 2.0 License - see LICENSE for details.
🔗 Links
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 logic2code-0.1.4.tar.gz.
File metadata
- Download URL: logic2code-0.1.4.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d7c181f9b65d85451f817c1491a0e60768df2690640fd0b423256f5e4dfb8cc
|
|
| MD5 |
52ed420235a5605fa542dd6c21418575
|
|
| BLAKE2b-256 |
cc3ccc6866e5d003512301632e54c086e3b34fb2812f1d8bb89a5487730f309d
|
File details
Details for the file logic2code-0.1.4-py3-none-any.whl.
File metadata
- Download URL: logic2code-0.1.4-py3-none-any.whl
- Upload date:
- Size: 3.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0b16a65f0184910f1c956069bfdb5bbe15f106f1a85f4cd10d29f40cae0c413
|
|
| MD5 |
cc03d6b81b6f13ee3d53719ad65411b7
|
|
| BLAKE2b-256 |
ee1d4f1fa6bf3772aa28cc25db485c94406ce08b5da8a5905370a2813e5a7e13
|