Skip to content

dizzy.generators.adapters

dizzy.generators.adapters

Adapters generator — gen_int/python/adapters/ shared adapter classes.

render_adapter(adapter_name)

Render the source for a shared adapter dataclass.

Source code in dizzy/src/dizzy/generators/adapters.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
def render_adapter(adapter_name: str) -> str:
    """Render the source for a shared adapter dataclass."""
    if adapter_name not in _ADAPTER_REGISTRY:
        warnings.warn(f"Unknown adapter '{adapter_name}' — skipping generation", stacklevel=2)
        return ""

    info = _ADAPTER_REGISTRY[adapter_name]
    lines = [
        "# AUTO-GENERATED — do not edit",
        "from dataclasses import dataclass",
        info["import_line"],
        "",
        "",
        "@dataclass",
        f"class {info['class_name']}:",
        f'    """{info["docstring"]}"""',
        "",
        f"    {info['field_name']}: {info['field_type']}",
        "",
    ]
    return "\n".join(lines)

write_adapter(adapter_name, output_dir)

Write gen_int/python/adapters/.py (always overwritten).

Source code in dizzy/src/dizzy/generators/adapters.py
50
51
52
53
54
55
56
57
58
def write_adapter(adapter_name: str, output_dir: Path) -> None:
    """Write gen_int/python/adapters/<adapter_name>.py (always overwritten)."""
    source = render_adapter(adapter_name)
    if not source:
        return
    dest = gen_int_root(output_dir) / "python" / "adapters" / f"{adapter_name}.py"
    dest.parent.mkdir(parents=True, exist_ok=True)
    dest.write_text(source)
    logger.debug("wrote file", extra={"path": str(dest)})