masterlen > instead of !=
authorgwen <gremond@cadoles.com>
Mon, 25 Feb 2013 14:52:10 +0000 (15:52 +0100)
committergwen <gremond@cadoles.com>
Mon, 25 Feb 2013 14:52:10 +0000 (15:52 +0100)
tiramisu/option.py
tiramisu/value.py

index 3fcf808..d8de012 100644 (file)
@@ -20,6 +20,7 @@
 # the rough pypy's guys: http://codespeak.net/svn/pypy/dist/pypy/config/
 # the whole pypy projet is under MIT licence
 # ____________________________________________________________
+import re
 from types import FunctionType
 from tiramisu.basetype import HiddenBaseType, DisabledBaseType
 from tiramisu.error import (ConfigError, ConflictConfigError, NotFoundError,
@@ -37,6 +38,11 @@ for act1, act2 in requires_actions:
     reverse_actions[act1] = act2
     reverse_actions[act2] = act1
 # ____________________________________________________________
+name_regexp = re.compile(r'^\d+')
+
+def valid_name(name):
+    return re.match(name_regexp, name)
+
 #
 class Option(HiddenBaseType, DisabledBaseType):
     """
@@ -68,6 +74,7 @@ class Option(HiddenBaseType, DisabledBaseType):
                           validation of the value
         :param validator_args: the validator's parameters
         """
+
         self._name = name
         self.doc = doc
         self._requires = requires
index 0c33fe3..f6a71f4 100644 (file)
@@ -144,10 +144,15 @@ class Values(object):
         if opt in self.masters:
             masterlen = len(value)
             for slave in self.masters[opt]:
-                if len(self._get_value(slave)) != masterlen:
+                value_slave = self._get_value(slave)
+                if len(value_slave) > masterlen:
                     raise MultiTypeError("invalid len for the slave: {0}"
                     " which has {1} as master".format(slave._name,
                                                       opt._name))
+                elif len(value_slave) < masterlen:
+                    for num in range(0, masterlen - len(value_slave)):
+                        value_slave.append(None, force=True)
+
         elif opt in self.slaves:
             if len(self._get_value(self.slaves[opt])) != len(value):
                    raise MultiTypeError("invalid len for the slave: {0}"
@@ -204,7 +209,7 @@ class Multi(list):
         if not force:
             if self.multitype == multitypes.slave:
                 raise MultiTypeError("cannot append a value on a multi option {0}"
-                        " wich is a slave".format(self.opt._name))
+                        " which is a slave".format(self.opt._name))
             elif self.multitype == multitypes.master:
                 for slave in self.slaves:
                     self.values[slave].append(None, force=True)
@@ -227,7 +232,7 @@ class Multi(list):
         if not force:
             if self.multitype == multitypes.slave:
                 raise MultiTypeError("cannot append a value on a multi option {0}"
-                        " wich is a slave".format(self.opt._name))
+                        " which is a slave".format(self.opt._name))
             elif self.multitype == multitypes.master:
                 for slave in self.slaves:
                     self.values[slave].pop(key, force=True)