diff options
author | Jan Pokorný <jpokorny@redhat.com> | 2014-02-09 23:01:54 +0100 |
---|---|---|
committer | Jan Pokorný <jpokorny@redhat.com> | 2014-02-09 23:01:54 +0100 |
commit | e42a83c6be9368cf45f6372898bf338d0b056a2a (patch) | |
tree | 9af9416fd677230f8f01527b359c3cb624d0c31a /filter_manager.py | |
parent | 84a1924d110702bee1e5dc2320c421a20fa71c85 (diff) | |
download | clufter-e42a83c6be9368cf45f6372898bf338d0b056a2a.tar.gz clufter-e42a83c6be9368cf45f6372898bf338d0b056a2a.tar.xz clufter-e42a83c6be9368cf45f6372898bf338d0b056a2a.zip |
filter_manager: make filter manager work with "in_obj" directly
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
Diffstat (limited to 'filter_manager.py')
-rw-r--r-- | filter_manager.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/filter_manager.py b/filter_manager.py index 04297d7..8263e7e 100644 --- a/filter_manager.py +++ b/filter_manager.py @@ -7,6 +7,7 @@ __author__ = "Jan Pokorný <jpokorny @at@ Red Hat .dot. com>" import logging +from .error import ClufterError from .filter import filters from .format import CompositeFormat, Format from .plugin_registry import PluginManager @@ -17,6 +18,10 @@ from .utils import apply_preserving_depth, \ log = logging.getLogger(__name__) +class FilterManagerError(ClufterError): + pass + + class FilterManager(PluginManager): """Class responsible to manage filters and filtering itself""" _default_registry = filters @@ -67,5 +72,13 @@ class FilterManager(PluginManager): def __call__(self, which, in_decl, **kwargs): flt = self._filters[which] - in_obj = flt.in_format(*in_decl) + if isinstance(in_decl, Format): + if not issubclass(in_decl, flt.in_format): + raise FilterManagerError(self, "input object: format mismatch" + " (expected `{0}', got `{1}')", + in_decl.__class__.name, + flt.in_format.name) + in_obj = in_decl + else: + in_obj = flt.in_format(*in_decl) return flt(in_obj, **kwargs) |