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]