Exemple #1
0
    def __init__(self,
                 name,
                 description,
                 enumeration,
                 default=None,
                 dependencies=None):
        Option.__init__(self,
                        name,
                        description,
                        None,
                        dependencies,
                        convert_input=self._obj_to_str,
                        convert_output=self.as_enumeration)
        if self._is_enum(enumeration):
            self._enumeration = {
                self._obj_to_str(entry): entry.value
                for entry in enumeration
            }
        elif isinstance(enumeration, (list, tuple, set, range)) and \
           len(enumeration) == len(set(enumeration)):
            # If the argument is a list and the items in the list are unique,
            # convert it so that the value of the enum equals its name.
            self._enumeration = {
                self._obj_to_str(entry): entry
                for entry in enumeration
            }
        elif isinstance(enumeration, dict):
            self._enumeration = enumeration
            for key in self._enumeration.keys():
                if not isinstance(key, str):
                    raise le.LbuildOptionConstructionException(
                        self,
                        "All enumeration keys must be of type string, but key '{}' is of type '{}'!"
                        .format(key,
                                type(key).__name__))
        else:
            raise le.LbuildOptionConstructionException(
                self, "Type '{}' not supported as enumeration!".format(
                    type(enumeration).__name__))

        self._set_default(default)
Exemple #2
0
    def __init__(self,
                 name,
                 description,
                 minimum=None,
                 maximum=None,
                 default=None,
                 dependencies=None,
                 validate=None):
        Option.__init__(self,
                        name,
                        description,
                        default,
                        dependencies,
                        validate,
                        convert_output=self.as_numeric_value)
        self.minimum_input = str(minimum)
        self.maximum_input = str(maximum)
        self.minimum = None
        self.maximum = None

        try:
            self.minimum = self.as_numeric_value(minimum)
        except (TypeError, ValueError) as error:
            raise le.LbuildOptionConstructionException(
                self, "Minimum '{}' is invalid! {}".format(minimum, error))
        try:
            self.maximum = self.as_numeric_value(maximum)
        except (TypeError, ValueError) as error:
            raise le.LbuildOptionConstructionException(
                self, "Maximum '{}' is invalid! {}".format(maximum, error))

        if self.minimum is not None and self.maximum is not None:
            if self.minimum >= self.maximum:
                raise le.LbuildOptionConstructionException(
                    self,
                    "Minimum '{}' must be smaller than maximum '{}'!".format(
                        self.minimum, self.maximum))
Exemple #3
0
    def __init__(self, option, default=None):
        if isinstance(option, (SetOption, StringOption)):
            raise le.LbuildOptionConstructionException(
                self, "StringOption cannot be used as a set option!")

        Option.__init__(self,
                        option.name,
                        option._description,
                        convert_input=self.to_set,
                        convert_output=self.as_set)
        self._option = option
        self._dependency_handler = option._dependency_handler
        if default is not None:
            self._set_default(default)
        elif not option.is_default():
            self._set_default(option._default)