From 726298b15515a3344e8b9e1bb666acadfb8ea065 Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Thu, 31 Mar 2022 15:26:30 +0200 Subject: [PATCH] made formatter a transformer derivation --- image_prediction/compositor/compositor.py | 8 ++++---- image_prediction/formatter/formatter.py | 7 ++++++- image_prediction/transformer/__init__.py | 0 image_prediction/transformer/transformer.py | 10 ++++++++++ test/unit_tests/compositor_test.py | 6 +++--- 5 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 image_prediction/transformer/__init__.py create mode 100644 image_prediction/transformer/transformer.py diff --git a/image_prediction/compositor/compositor.py b/image_prediction/compositor/compositor.py index cb39ea3..b0226a8 100644 --- a/image_prediction/compositor/compositor.py +++ b/image_prediction/compositor/compositor.py @@ -1,13 +1,13 @@ from funcy import rcompose -from image_prediction.formatter.formatter import Formatter +from image_prediction.transformer.transformer import Transformer -class FormatterCompositor(Formatter): +class TransformerCompositor(Transformer): - def __init__(self, formatter: Formatter, *formatters: Formatter): + def __init__(self, formatter: Transformer, *formatters: Transformer): formatters = (formatter, *formatters) self.pipe = rcompose(*formatters) - def format(self, obj): + def transform(self, obj): return self.pipe(obj) diff --git a/image_prediction/formatter/formatter.py b/image_prediction/formatter/formatter.py index 2129813..6c5b97f 100644 --- a/image_prediction/formatter/formatter.py +++ b/image_prediction/formatter/formatter.py @@ -1,10 +1,15 @@ import abc +from image_prediction.transformer.transformer import Transformer -class Formatter(abc.ABC): + +class Formatter(Transformer): @abc.abstractmethod def format(self, obj): raise NotImplementedError + def transform(self, obj): + return self.format(obj) + def __call__(self, obj): return self.format(obj) diff --git a/image_prediction/transformer/__init__.py b/image_prediction/transformer/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/image_prediction/transformer/transformer.py b/image_prediction/transformer/transformer.py new file mode 100644 index 0000000..c079c68 --- /dev/null +++ b/image_prediction/transformer/transformer.py @@ -0,0 +1,10 @@ +import abc + + +class Transformer(abc.ABC): + @abc.abstractmethod + def transform(self, obj): + raise NotImplementedError + + def __call__(self, obj): + return self.transform(obj) diff --git a/test/unit_tests/compositor_test.py b/test/unit_tests/compositor_test.py index 88316c9..02b2cd1 100644 --- a/test/unit_tests/compositor_test.py +++ b/test/unit_tests/compositor_test.py @@ -1,15 +1,15 @@ import pytest +from image_prediction.compositor.compositor import TransformerCompositor from image_prediction.formatter.formatters.enum import EnumFormatter from image_prediction.formatter.formatters.identity import IdentityFormatter -from image_prediction.compositor.compositor import FormatterCompositor def test_single_formatter(metadata): - compositor = FormatterCompositor(IdentityFormatter()) + compositor = TransformerCompositor(IdentityFormatter()) assert metadata == compositor(metadata) def test_two_formatters(metadata, metadata_formatted): - compositor = FormatterCompositor(IdentityFormatter(), EnumFormatter()) + compositor = TransformerCompositor(IdentityFormatter(), EnumFormatter()) assert metadata_formatted == list(compositor(metadata))