summaryrefslogtreecommitdiffstats
path: root/ipalib/frontend.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-09-24 19:45:46 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-09-24 19:45:46 +0000
commitf8bb60f02dc3cbb48c2cc6305e095e6936f5a0d6 (patch)
treecaf207b1fdd00bc827ada0b10cbbb2851b8aa887 /ipalib/frontend.py
parenta79434584eaab5692d716368b54572aa2b6be70c (diff)
downloadfreeipa.git-f8bb60f02dc3cbb48c2cc6305e095e6936f5a0d6.tar.gz
freeipa.git-f8bb60f02dc3cbb48c2cc6305e095e6936f5a0d6.tar.xz
freeipa.git-f8bb60f02dc3cbb48c2cc6305e095e6936f5a0d6.zip
344: Added Param.__clone__() method; added corresponding unit tests
Diffstat (limited to 'ipalib/frontend.py')
-rw-r--r--ipalib/frontend.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py
index ce43ecea..ff0d3492 100644
--- a/ipalib/frontend.py
+++ b/ipalib/frontend.py
@@ -117,6 +117,9 @@ def parse_param_spec(spec):
class Param(plugable.ReadOnly):
+ """
+ A parameter accepted by a `Command`.
+ """
__nones = (None, '', tuple(), [])
__default = dict(
doc='',
@@ -150,9 +153,18 @@ class Param(plugable.ReadOnly):
allow_none=True
)
self.__normalize = self.__kw['normalize']
- self.rules = (type_.validate,) + self.__kw['rules']
+ self.rules = self.__check_type(tuple, 'rules')
+ self.all_rules = (type_.validate,) + self.rules
lock(self)
+ def __clone__(self, **override):
+ """
+ Return a new `Param` instance similar to this one.
+ """
+ kw = dict(self.__kw)
+ kw.update(override)
+ return self.__class__(self.name, self.type, **kw)
+
def __check_type(self, type_, name, allow_none=False):
value = self.__kw[name]
return check_type(value, type_, name, allow_none)