diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-08 19:53:45 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-08 19:53:45 +0000 |
commit | d171dc90111cad91884c3a1b3afdb8b16b7c289e (patch) | |
tree | d23cd4b163c99ec1cfa57934f6426632c3d9c8ec /ipalib/plugable.py | |
parent | 8e468248155947075689e6d01c3ab90fbd9f1643 (diff) | |
download | freeipa.git-d171dc90111cad91884c3a1b3afdb8b16b7c289e.tar.gz freeipa.git-d171dc90111cad91884c3a1b3afdb8b16b7c289e.tar.xz freeipa.git-d171dc90111cad91884c3a1b3afdb8b16b7c289e.zip |
82: Cleaned up unit tests for public.option; added some doodles in plugable.Base
Diffstat (limited to 'ipalib/plugable.py')
-rw-r--r-- | ipalib/plugable.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/ipalib/plugable.py b/ipalib/plugable.py index c3eb409b..4032b574 100644 --- a/ipalib/plugable.py +++ b/ipalib/plugable.py @@ -54,6 +54,23 @@ def check_identifier(name): raise errors.NameSpaceError(name, regex) +class Abstract(object): + __public__ = frozenset() + + @classmethod + def implements(cls, arg): + assert type(cls.__public__) is frozenset + if isinstance(arg, str): + return arg in cls.__public__ + if type(getattr(arg, '__public__', None)) is frozenset: + return cls.__public__.issuperset(arg.__public__) + if type(arg) is frozenset: + return cls.__public__.issuperset(arg) + raise TypeError( + "must be str, frozenset, or have frozenset '__public__' attribute" + ) + + class Plugin(object): """ Base class for all plugins. |