summaryrefslogtreecommitdiffstats
path: root/ipalib/public.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipalib/public.py')
-rw-r--r--ipalib/public.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/ipalib/public.py b/ipalib/public.py
index baae83e4..9467feaf 100644
--- a/ipalib/public.py
+++ b/ipalib/public.py
@@ -58,17 +58,24 @@ class opt(plugable.ReadOnly):
def __get_rules(self):
if self.__rules is None:
- self.__rules = tuple(self.__rules_iter())
+ rules = sorted(
+ self.__rules_iter(),
+ key=lambda f: getattr(f, '__name__'),
+ )
+ object.__setattr__(self, '_opt__rules', tuple(rules))
return self.__rules
rules = property(__get_rules)
def __rules_iter(self):
- for name in dir(self):
+ for name in dir(self.__class__):
if name.startswith('_'):
continue
- attr = getattr(self, name)
- if is_rule(attr):
- yield attr
+ base_attr = getattr(self.__class__, name)
+ if is_rule(base_attr):
+ attr = getattr(self, name)
+ if is_rule(attr):
+ yield attr
+
def validate(self, value):
pass
@@ -77,7 +84,6 @@ class opt(plugable.ReadOnly):
-
class cmd(plugable.Plugin):
__public__ = frozenset((
'normalize',