Source code for deirokay.parser.reader

"""
Classes and methods to load data from several sources into Deirokay.
"""

from typing import List, Type

from deirokay._typing import DeirokayReadCallable
from deirokay.backend import MultiBackendMixin
from deirokay.enums import Backend

from .dask_reader import read as read_dask
from .pandas_reader import read as read_pandas


[docs]class DataReader(MultiBackendMixin): """Helper class to load data from a data source in function of the backend.""" supported_backends: List[Backend] = [Backend.PANDAS, Backend.DASK] read: DeirokayReadCallable
DataReader.register_backend_method('read', staticmethod(read_dask), # type: ignore # Staticmethod is Callable # noqa: E501 Backend.DASK) DataReader.register_backend_method('read', staticmethod(read_pandas), # type: ignore # Staticmethod is Callable # noqa: E501 Backend.PANDAS)
[docs]def reader_factory(backend: Backend) -> Type[DataReader]: """Return the proper reader for the given backend. Parameters ---------- backend : Backend Backend. Returns ------- Type[DataReader] Subclass of DataReader containing a `read` staticmethod. """ return DataReader.attach_backend(backend)
__all__ = ( 'reader_factory', )