Files
2026-05-12 19:40:31 +09:00

27 lines
699 B
Python

from __future__ import annotations
from typing import Generic, TypeVar
from pydantic import BaseModel, Field, model_serializer
T = TypeVar("T")
class SerializeableAsyncIterable(BaseModel, Generic[T]):
content: list[T] = Field(default_factory=lambda: [])
_index: int = 0
@model_serializer(mode="plain")
def serialize_model(self) -> list[T]:
return self.content
async def __anext__(self) -> T:
if self._index >= len(self.content):
raise StopAsyncIteration
value = self.content[self._index]
self._index += 1
return value
def __aiter__(self) -> SerializeableAsyncIterable[T]:
self._index = 0
return self