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))