Source code for lcmd_db.dataset._fragments
"""FragmentDataset — one row per Fragment entry."""
from __future__ import annotations
from typing import Generic
from ..types import EntityMetadata, Fragment, FType, Properties
from ._base import Dataset, _extract_properties
from ._source import DataSource
_FRAGMENT_EXCLUDE: frozenset[str] = frozenset(("id", "fragment_type_slug"))
[docs]
class FragmentDataset(Dataset[Fragment[Properties, FType]], Generic[Properties, FType]): # noqa: UP046
def __init__(
self,
source: DataSource,
*,
metadata: EntityMetadata | None = None,
) -> None:
super().__init__(source, metadata=metadata)
def _resolve_entry(self, row: dict[str, object]) -> Fragment[Properties, FType]:
return Fragment(
id=int(row["id"]), # type: ignore[arg-type]
properties=_extract_properties(row, _FRAGMENT_EXCLUDE), # type: ignore[arg-type]
fragment_type=row.get("fragment_type_slug"), # type: ignore[arg-type]
)
def _with_source(self, source: DataSource) -> FragmentDataset[Properties, FType]:
return FragmentDataset(source, metadata=self._metadata)