From 05a3ddc8b68d699ea68244c79abf63cae3aa74d8 Mon Sep 17 00:00:00 2001 From: David GAILLETON Date: Wed, 11 Feb 2026 18:02:39 +0100 Subject: [PATCH] 05/ex2 WIP --- 05/ex2/nexus_pipeline.py | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 05/ex2/nexus_pipeline.py diff --git a/05/ex2/nexus_pipeline.py b/05/ex2/nexus_pipeline.py new file mode 100644 index 0000000..73ce149 --- /dev/null +++ b/05/ex2/nexus_pipeline.py @@ -0,0 +1,74 @@ +from abc import ABC +from typing import Any, List, Protocol, Union +from typing_extensions import override + + +class ProcessingStage(Protocol): + def process(self, data: Any) -> Any: + pass + + +class InputStage: + def process(self, data: Any) -> Dict: + pass + + +class TransformStage: + def process(self, data: Any) -> Dict: + pass + + +class OutputStage: + def process(self, data: Any) -> str: + pass + + +class ProcessingPipeline(ABC): + def __init__(self) -> None: + self.stages: List[InputStage | TransformStage | OutputStage] = [] + + def add_stage( + self, stage: Union[InputStage, TransformStage, OutputStage] + ) -> None: + pass + + def process(self, data: Any) -> Any: + pass + + +class JSONAdapter(ProcessingPipeline): + def __init__(self, pipeline_id: str) -> None: + self.pipeline_id = pipeline_id + super().__init__() + + @override + def process(self, data: Any) -> Any: + return super().process(data) + + +class CSVAdapter(ProcessingPipeline): + def __init__(self, pipeline_id: str) -> None: + self.pipeline_id = pipeline_id + super().__init__() + + @override + def process(self, data: Any) -> Any: + return super().process(data) + + +class StreamAdapter(ProcessingPipeline): + def __init__(self, pipeline_id: str) -> None: + self.pipeline_id = pipeline_id + super().__init__() + + @override + def process(self, data: Any) -> Any: + return super().process(data) + + +def tester(): + pass + + +if __name__ == "__main__": + pass