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 project.c2l.yaml --summary
# Generate Python code
logic2code project.c2l.yaml -o generated_src/
# Generate stubs only
logic2code project.c2l.yaml -o src/ --stubs-only
# Generate specific modules
logic2code project.c2l.yaml -o src/ --modules "analyzer.py,parsers.py"
Python API
from logic2code import CodeGenerator
# Create generator
generator = CodeGenerator('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('output/')
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('project.c2l.yaml', config)
result = generator.generate('output/')
🖥️ 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 project.c2l.yaml
# 2. Modify logic file (add/change functions)
# Edit project.c2l.yaml
# 3. Generate new code
logic2code project.c2l.yaml -o new_src/
# 4. Compare and merge
diff -r src/ new_src/
🧪 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
logic2code-0.1.0.tar.gz
(3.9 kB
view details)
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.0.tar.gz.
File metadata
- Download URL: logic2code-0.1.0.tar.gz
- Upload date:
- Size: 3.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79c2cdbeb712ca0223d887e166829ba66e81d1e2fd72f0899451a30a1535f905
|
|
| MD5 |
219ec2d8424eecf8acec06c060802db5
|
|
| BLAKE2b-256 |
1f154048de63316031d5c1b3d39b596b1914d4ca3437d99fb2c0131fbadb92cd
|
File details
Details for the file logic2code-0.1.0-py3-none-any.whl.
File metadata
- Download URL: logic2code-0.1.0-py3-none-any.whl
- Upload date:
- Size: 3.5 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 |
eca00b0ff73bab4bed370935e417d67ce9e26d3db205fcaeb9bc534eb067d2bb
|
|
| MD5 |
bfd5b113a4f43b3f76d8106a26c23fa4
|
|
| BLAKE2b-256 |
4984dffccd3a971f52d10a338024e964c73c05c577829346451d18f16839bdc7
|