made formatter a transformer derivation
This commit is contained in:
parent
479afbcd34
commit
726298b155
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
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
|
||||
|
||||
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))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user