summaryrefslogtreecommitdiffstats
path: root/ipalib/plugable.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-08-08 19:53:45 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-08-08 19:53:45 +0000
commitd171dc90111cad91884c3a1b3afdb8b16b7c289e (patch)
treed23cd4b163c99ec1cfa57934f6426632c3d9c8ec /ipalib/plugable.py
parent8e468248155947075689e6d01c3ab90fbd9f1643 (diff)
downloadfreeipa.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.py17
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.