summaryrefslogtreecommitdiffstats
path: root/ipalib/frontend.py
diff options
context:
space:
mode:
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)