Skip to main content

A bidirectional Python code generator that converts between AsyncAPI 3.0 specifications and Python code (pure Python or FastAPI implementations).

Project description

Zen Generator Logo

Zen Generator 🚀

A bidirectional Python code generator that converts between AsyncAPI 3.0 specifications and Python code (pure Python or FastAPI implementations).

Features ✨

  • Bidirectional conversion between AsyncAPI 3.0 and Python code
  • Generate Python code from AsyncAPI 3.0 specifications:
    • Pure Python implementations with type hints
    • FastAPI endpoints with Pydantic models
  • Generate AsyncAPI 3.0 specifications from Python code
  • Automatic type inference and mapping
  • Support for both async and sync functions

Installation 📦

pip install zen-generator

Quick Start 🏃

Convert between AsyncAPI 3.0 specifications and Python code:

# Generate FastAPI implementation from AsyncAPI spec
zen-generator fastapi

# Generate pure Python implementation from AsyncAPI spec  
zen-generator pure-python 

# Generate AsyncAPI spec from Python code
zen-generator asyncapi-documentation

Command Line Interface

The CLI is built with Typer and provides three main commands:

Usage:

$ [OPTIONS] COMMAND [ARGS]...

Options:

  • --install-completion: Install completion for the current shell.
  • --show-completion: Show completion for the current shell, to copy it or customize the installation.
  • --help: Show this message and exit.

Commands:

  • asyncapi-documentation
  • pure-python
  • fastapi

asyncapi-documentation

Usage:

$ asyncapi-documentation [OPTIONS]

Options:

  • --models-file PATH: [default: models.py]
  • --functions-file PATH: [default: functions.py]
  • --output-file PATH: [default: asyncapi.yaml]
  • --application-name TEXT: [default: Zen]
  • --help: Show this message and exit.

pure-python

Usage:

$ pure-python [OPTIONS]

Options:

  • --asyncapi-file PATH: [default: asyncapi.yaml]
  • --models-file PATH: [default: models.py]
  • --functions-file PATH: [default: functions.py]
  • --application-name TEXT: [default: Zen]
  • --is-async / --no-is-async: [default: no-is-async]
  • --help: Show this message and exit.

fastapi

Usage:

$ fastapi [OPTIONS]

Options:

  • --asyncapi-file PATH: [default: asyncapi.yaml]
  • --models-file PATH: [default: models.py]
  • --functions-file PATH: [default: functions.py]
  • --application-name TEXT: [default: Zen]
  • --is-async / --no-is-async: [default: no-is-async]
  • --help: Show this message and exit.

Generated Code Examples 📝

Models (models.py)

from __future__ import annotations
from pydantic import BaseModel

class UserModel(BaseModel):
    id: int
    name: str
    email: str | None = None

FastAPI Implementation (functions.py)

from __future__ import annotations
from fastapi import FastAPI
from .models import UserModel

app = FastAPI()

@app.get("/users/{user_id}")
async def get_user(user_id: int) -> UserModel:
    ...

Pure Python Implementation (functions.py)

from __future__ import annotations
from typing import Optional
from .models import UserModel

def get_user(user_id: int) -> UserModel:
    ...

Development Setup 🛠️

Requirements:

  • Python 3.10+
  • uv (Python packaging toolchain)
# Install uv if not already installed
pip install uv

# Clone repository
git clone https://github.com/WaYdotNET/zen-generator.git
cd zen-generator

# Create and activate virtual environment with uv
uv venv
source .venv/bin/activate  # On macOS/Linux
# or
.venv\Scripts\activate  # On Windows

# Install dependencies with uv
uv sync

# Run tests
python -m pytest

Best Practices 💡

  1. AsyncAPI Specification

    • Follow AsyncAPI 3.0 guidelines
    • Define clear schema types
    • Include comprehensive examples
    • Use semantic versioning
  2. Code Generation

    • Review generated code for correctness
    • Implement business logic in function stubs
    • Keep generated files synchronized
    • Use type hints consistently
  3. Project Organization

    • Maintain clear separation between models and functions
    • Follow standard Python package structure
    • Implement proper error handling

Contributing 🤝

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Submit a pull request

License 📄

MIT License - see LICENSE file for details

Support 💬


Made with ❤️ by WaYdotNET

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

zen_generator-0.1.2.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

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

zen_generator-0.1.2-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file zen_generator-0.1.2.tar.gz.

File metadata

  • Download URL: zen_generator-0.1.2.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for zen_generator-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3236f0a4913b1021fec599e880d48b415c575f20eac560feb6636bb4ee78eab4
MD5 abe5e9d2e34dfaeb7451264f333a7610
BLAKE2b-256 6077fb74e4f02f97f2146049bbe617aa97fbc9bf6159f94f05e4e32fa17e5a38

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_generator-0.1.2.tar.gz:

Publisher: python-publish.yml on WaYdotNET/zen-generator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zen_generator-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: zen_generator-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for zen_generator-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3cbf6b18207685139908959f6539e31fef05b0b6e22d153ddab4a821a0368198
MD5 8bc0eb8d4db24aaff6a58c132e7eb206
BLAKE2b-256 f51e3ed1d6f8c055a26612c6dc8661bd7bcdfdaee8b48b604945074e8939e9d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for zen_generator-0.1.2-py3-none-any.whl:

Publisher: python-publish.yml on WaYdotNET/zen-generator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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