made formatter a transformer derivation
This commit is contained in:
parent
479afbcd34
commit
726298b155
@ -1,13 +1,13 @@
|
|||||||
from funcy import rcompose
|
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)
|
formatters = (formatter, *formatters)
|
||||||
self.pipe = rcompose(*formatters)
|
self.pipe = rcompose(*formatters)
|
||||||
|
|
||||||
def format(self, obj):
|
def transform(self, obj):
|
||||||
return self.pipe(obj)
|
return self.pipe(obj)
|
||||||
|
|||||||
@ -1,10 +1,15 @@
|
|||||||
import abc
|
import abc
|
||||||
|
|
||||||
|
from image_prediction.transformer.transformer import Transformer
|
||||||
|
|
||||||
class Formatter(abc.ABC):
|
|
||||||
|
class Formatter(Transformer):
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def format(self, obj):
|
def format(self, obj):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
def transform(self, obj):
|
||||||
|
return self.format(obj)
|
||||||
|
|
||||||
def __call__(self, obj):
|
def __call__(self, obj):
|
||||||
return self.format(obj)
|
return self.format(obj)
|
||||||
|
|||||||
0
image_prediction/transformer/__init__.py
Normal file
0
image_prediction/transformer/__init__.py
Normal file
10
image_prediction/transformer/transformer.py
Normal file
10
image_prediction/transformer/transformer.py
Normal file
@ -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)
|
||||||
@ -1,15 +1,15 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from image_prediction.compositor.compositor import TransformerCompositor
|
||||||
from image_prediction.formatter.formatters.enum import EnumFormatter
|
from image_prediction.formatter.formatters.enum import EnumFormatter
|
||||||
from image_prediction.formatter.formatters.identity import IdentityFormatter
|
from image_prediction.formatter.formatters.identity import IdentityFormatter
|
||||||
from image_prediction.compositor.compositor import FormatterCompositor
|
|
||||||
|
|
||||||
|
|
||||||
def test_single_formatter(metadata):
|
def test_single_formatter(metadata):
|
||||||
compositor = FormatterCompositor(IdentityFormatter())
|
compositor = TransformerCompositor(IdentityFormatter())
|
||||||
assert metadata == compositor(metadata)
|
assert metadata == compositor(metadata)
|
||||||
|
|
||||||
|
|
||||||
def test_two_formatters(metadata, metadata_formatted):
|
def test_two_formatters(metadata, metadata_formatted):
|
||||||
compositor = FormatterCompositor(IdentityFormatter(), EnumFormatter())
|
compositor = TransformerCompositor(IdentityFormatter(), EnumFormatter())
|
||||||
assert metadata_formatted == list(compositor(metadata))
|
assert metadata_formatted == list(compositor(metadata))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user