from abc import ABC, abstractmethod
from collections.abc import Iterator
import pandas as pd


class BaseConnector(ABC):
    @abstractmethod
    def test(self) -> bool:
        raise NotImplementedError

    @abstractmethod
    def extract(self, source_object: str, incremental_column: str | None = None,
                watermark_value: str | None = None, chunk_size: int = 50000) -> Iterator[pd.DataFrame]:
        raise NotImplementedError
