summaryrefslogtreecommitdiffstats
path: root/ipalib/public.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-08-26 01:07:24 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-08-26 01:07:24 +0000
commit87fabaa7177140cf0a934e0f05a6a4b4295fc1d0 (patch)
treec7c87c56310bf3dd285a78ce84419d55f2245bf9 /ipalib/public.py
parent5157d8fc50bab1bd5ac1ebe2c006faaf910fef31 (diff)
downloadfreeipa.git-87fabaa7177140cf0a934e0f05a6a4b4295fc1d0.tar.gz
freeipa.git-87fabaa7177140cf0a934e0f05a6a4b4295fc1d0.tar.xz
freeipa.git-87fabaa7177140cf0a934e0f05a6a4b4295fc1d0.zip
195: Started on docstring for public.DefaultFrom
Diffstat (limited to 'ipalib/public.py')
-rw-r--r--ipalib/public.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/ipalib/public.py b/ipalib/public.py
index d008e9d5..edb4641f 100644
--- a/ipalib/public.py
+++ b/ipalib/public.py
@@ -41,8 +41,28 @@ def is_rule(obj):
class DefaultFrom(plugable.ReadOnly):
+ """
+ Derives a default for one value using other supplied values.
+
+ Here is an example:
+
+ >>> df = DefaultFrom(lambda f, l: f[0] + l[0], 'first', 'last')
+ >>> df(first='John', last='Doe') # Both keys
+ 'JD'
+ >>> df() is None # Returns None if any key is missing
+ True
+ >>> df(first='John', middle='Q') is None # Still returns None
+ True
+ """
def __init__(self, callback, *keys):
+ """
+ :param callback: The callable to call when all ``keys`` are present.
+ :param keys: The keys used to map from keyword to position arguments.
+ """
assert callable(callback), 'not a callable: %r' % callback
+ assert len(keys) > 0, 'must have at least one key'
+ for key in keys:
+ assert type(key) is str, 'not an str: %r' % key
self.callback = callback
self.keys = keys
lock(self)