summaryrefslogtreecommitdiffstats
path: root/ipalib/plugable.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipalib/plugable.py')
-rw-r--r--ipalib/plugable.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/ipalib/plugable.py b/ipalib/plugable.py
index b607f0fac..a91063e7c 100644
--- a/ipalib/plugable.py
+++ b/ipalib/plugable.py
@@ -135,6 +135,18 @@ class ProxyTarget(ReadOnly):
"must be str, frozenset, or have frozenset '__public__' attribute"
)
+ @classmethod
+ def implemented_by(cls, arg):
+ if inspect.isclass(arg):
+ subclass = arg
+ else:
+ subclass = arg.__class__
+ assert issubclass(subclass, cls), 'must be subclass of %r' % cls
+ for name in cls.__public__:
+ if not hasattr(subclass, name):
+ return False
+ return True
+
class Proxy(ReadOnly):
"""