from pathlib import Path from typing import Any, Generic, Iterator, TypeVar TData = TypeVar("TData") class Content(Generic[TData]): def __init__(self, path: Path, data: TData, language: str | None = None) -> None: self.__path = path self.__data = data self.__language = language @property def path(self) -> Path: return self.__path @property def language(self) -> str | None: return self.__language @property def data(self) -> TData: return self.__data def __str__(self) -> str: return str(self.__data) class ContentField(Content[Any]): def __getitem__(self, key: Any) -> Any: return ContentField(self.path, self.data.get(key), self.language) def __iter__(self) -> Iterator[Any]: for it in self.data: yield ContentField(self.path, it, self.language) def __str__(self) -> str: return str(self.data)