from __future__ import annotations

from typing import Any, Optional

from ..log_helper import get_logger as get_logger

class _DatasetFetcher:
    dataset: Any = ...
    auto_collate_batch: Any = ...
    collate_fn: Any = ...
    drop_last: Any = ...
    def __init__(self, dataset: Any, auto_collate_batch: Any, collate_fn: Any, drop_last: Any) -> None: ...
    def fetch(self, batch_indices: Any, done_event: Optional[Any] = ...) -> None: ...

class _IterableDatasetFetcher(_DatasetFetcher):
    dataset_iter: Any = ...
    def __init__(self, dataset: Any, auto_collate_batch: Any, collate_fn: Any, drop_last: Any) -> None: ...
    def fetch(self, batch_indices: Any, done_event: Optional[Any] = ...): ...

class _MapDatasetFetcher(_DatasetFetcher):
    def __init__(self, dataset: Any, auto_collate_batch: Any, collate_fn: Any, drop_last: Any) -> None: ...
    def fetch(self, batch_indices: Any, done_event: Optional[Any] = ...): ...
