import contextlib from collections.abc import Sequence from typing import Any, Protocol from dmp.adapters.db import Model, ReportingModel class BuildModel(Protocol): def __call__[T](self, model: type[T], **kwargs: Any) -> T: ... class BuildModelBatch(Protocol): def __call__[T](self, model: type[T], *, size: int, **kwargs: Any) -> list[T]: ... class CreateModel(Protocol): def __call__[T: Model](self, model: type[T], **kwargs: Any) -> T: ... class CreateModelBatch(Protocol): def __call__[T: Model]( self, model: type[T], *, size: int, **kwargs: Any ) -> list[T]: ... class CreateReportingModel(Protocol): def __call__[T: ReportingModel](self, model: type[T], **kwargs: Any) -> T: ... class CreateReportingModelBatch(Protocol): def __call__[T: ReportingModel]( self, model: type[T], *, size: int, **kwargs: Any ) -> list[T]: ... class OverrideSettings(Protocol): def __call__(self, **kwargs: Any) -> contextlib.AbstractContextManager[None]: ... class EnableFeatures(Protocol): def __call__( self, feature_flag_names: Sequence[str] ) -> contextlib.AbstractContextManager[None]: ...