diff --git a/src/pypelines/__init__.py b/src/pypelines/__init__.py index 93cb8a16d921ea0a188b7948820f78b56468c043..4fd42c1fc9c76df4528b4372bb4ba199baa153d3 100644 --- a/src/pypelines/__init__.py +++ b/src/pypelines/__init__.py @@ -1,4 +1,4 @@ -__version__ = "0.0.59" +__version__ = "0.0.60" from . import loggs from .pipes import * diff --git a/src/pypelines/pipelines.py b/src/pypelines/pipelines.py index a140325219b1ffb4e2a6cdc049f5c11a2e69c962..06e45338d45a896d4a7f89c9b734cdd2722cda65 100644 --- a/src/pypelines/pipelines.py +++ b/src/pypelines/pipelines.py @@ -10,7 +10,12 @@ if TYPE_CHECKING: from .graphs import PipelineGraph -class Pipeline: +class PipelineType(Protocol): + + def __getattr__(self, name: str) -> "BasePipe": ... + + +class Pipeline(PipelineType): pipes: Dict[str, "BasePipe"] runner_backend_class = BaseTaskBackend diff --git a/src/pypelines/pipes.py b/src/pypelines/pipes.py index 0f95a07ec5dbb1cfeb06a9da5baf6109c1c471ea..3393780ca1007035812dc4cb04f98b2cbc4ddb1e 100644 --- a/src/pypelines/pipes.py +++ b/src/pypelines/pipes.py @@ -17,7 +17,12 @@ if TYPE_CHECKING: from .pipelines import Pipeline -class BasePipe(metaclass=ABCMeta): +class BasePipeType(Protocol): + + def __getattr__(self, name: str) -> "BaseStep": ... + + +class BasePipe(BasePipeType, metaclass=ABCMeta): # this class must implements only the logic to link steps together. default_extra = None diff --git a/src/pypelines/steps.py b/src/pypelines/steps.py index e624fc9d384d711d38c774fb415d80b82129e8c8..c9a6ebfe47e2c180df3d975e93c1d4fec6710682 100644 --- a/src/pypelines/steps.py +++ b/src/pypelines/steps.py @@ -7,7 +7,7 @@ from pandas import DataFrame from dataclasses import dataclass from types import MethodType -from typing import Callable, Type, Iterable, Protocol, List, TYPE_CHECKING +from typing import Callable, Type, Iterable, Protocol, List, TYPE_CHECKING, Any if TYPE_CHECKING: from .pipelines import Pipeline @@ -244,7 +244,7 @@ class BaseStep: """ @wraps(self.pipe.disk_class.load) - def wrapper(session, extra=None, strict=False): + def wrapper(session, extra=None, strict=False) -> Any: """Wrapper function to load disk object with session and optional extra parameters. Args: