Source code for codegen.target

import importlib.metadata
from dataclasses import dataclass, field
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from collections.abc import Mapping
    from pathlib import Path

    from codegen.config import CodegenConfig


ENTRY_POINT_GROUP = "codegen.targets"


[docs] @dataclass(frozen=True) class Target: name: str language: str schema: type[CodegenConfig] template_dir: Path operations_entry_point: str jsonnet_stdlib_dir: Path | None = None env_globals: Mapping[str, object] = field(default_factory=dict)
[docs] def discover_targets() -> list[Target]: eps = importlib.metadata.entry_points(group=ENTRY_POINT_GROUP) return [ep.load() for ep in eps]