Skip to main content

Generate source code from Code2Logic output files

Project description

Logic2Code - Code Generation from Logic Files

PyPI version Python 3.9+ License: Apache 2.0 Code style: black

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


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.6.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

logic2code-0.1.6-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

File details

Details for the file logic2code-0.1.6.tar.gz.

File metadata

  • Download URL: logic2code-0.1.6.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for logic2code-0.1.6.tar.gz
Algorithm Hash digest
SHA256 4c640949c55daa32fcc1e16ec7baf18d49cf3483e9c3fdb464a3efcb26eb9285
MD5 b6079dec075c352491c740d814af889c
BLAKE2b-256 9a8a1eb0bdbf66e3ba49b91a4f2b45971cd7b0551f0b9696e86ef9e9212537db

See more details on using hashes here.

File details

Details for the file logic2code-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: logic2code-0.1.6-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

Hashes for logic2code-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 bead39ab08407db9c989d3ea2d954a10c1b6619efc907a015b171ed50b1ebe96
MD5 c9f75c2e44fd0eebdd1c000877cfadef
BLAKE2b-256 e667c144a571838c0a8ee4b2b594915caddecf84d91f06d0f13f5dcc65c8db5a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page