Source code for pjkm.core.models.group

"""Package group models: curated dependency bundles with scaffolded code."""

from __future__ import annotations

from pydantic import BaseModel, Field


[docs] class ScaffoldedFile(BaseModel): """A template fragment to render when a group is selected."""
[docs] template_fragment: str
[docs] destination: str
[docs] description: str = ""
[docs] conditions: dict[str, bool | str] = Field(default_factory=dict)
[docs] class PackageGroup(BaseModel): """A curated bundle of dependencies and scaffolded code/config."""
[docs] id: str
[docs] name: str
[docs] description: str = ""
[docs] category: str = "Core Dev"
[docs] archetypes: list[str] = Field(default_factory=list)
[docs] requires_groups: list[str] = Field(default_factory=list)
[docs] platform_filter: str | None = None
[docs] dependencies: dict[str, list[str]] = Field(default_factory=dict)
[docs] scaffolded_files: list[ScaffoldedFile] = Field(default_factory=list)
[docs] pyproject_tool_config: dict[str, dict] = Field(default_factory=dict)