示例#1
0
    def parse(self, inp):
        """"""
        if not inp or inp == NO_STR:
            value = tuple()
        elif isinstance(inp, (tuple, list)) or is_lazy_iterable(inp):
            value = make_tuple(inp)
        elif isinstance(inp, six.string_types):
            if self._brace_expand:
                elems = brace_expand(inp, split_csv=True, escape_csv_sep=self._escape_sep)
            else:
                # replace escaped separators
                if self._escape_sep:
                    escaped_sep = "__law_escaped_csv_sep__"
                    inp = inp.replace("\\" + self.CSV_SEP, escaped_sep)
                # split
                elems = inp.split(self.CSV_SEP)
                # add back escaped separators per element
                if self._escape_sep:
                    elems = [elem.replace(escaped_sep, self.CSV_SEP) for elem in elems]
            value = tuple(map(self._inst.parse, elems))
        else:
            value = (inp,)

        # apply uniqueness, sort, length and choices checks
        value = self._check_unique(value)
        value = self._check_sort(value)
        self._check_len(value)
        self._check_choices(value)

        return value
示例#2
0
文件: parameter.py 项目: mschnepf/law
 def parse(self, inp):
     """"""
     if not inp:
         return ()
     elif isinstance(inp, (tuple, list)) or is_lazy_iterable(inp):
         return make_tuple(inp)
     else:
         return tuple(self._inst.parse(elem) for elem in inp.split(","))
示例#3
0
    def serialize(self, value):
        """"""
        if not value:
            return ""

        # ensure that value is a nested tuple
        value = tuple(map(make_tuple, make_tuple(value)))

        return self.MULTI_RANGE_SEP.join(
            super(MultiRangeParameter, self).serialize(v) for v in value)
示例#4
0
    def __init__(self, *args, **kwargs):
        self._require_start = kwargs.pop("require_start", True)
        self._require_end = kwargs.pop("require_end", True)
        self._single_value = kwargs.pop("single_value", False)

        # ensure that the default value is a tuple
        if "default" in kwargs:
            kwargs["default"] = make_tuple(kwargs["default"])

        super(RangeParameter, self).__init__(*args, **kwargs)
示例#5
0
    def serialize(self, value):
        """"""
        if not value:
            return ""

        # ensure that value is a nested tuple
        value = tuple(map(make_tuple, make_tuple(value)))

        return ":".join(
            super(MultiCSVParameter, self).serialize(v) for v in value)
示例#6
0
文件: parameter.py 项目: mschnepf/law
    def __init__(self, *args, **kwargs):
        """ __init__(*args, cls=luigi.Parameter, **kwargs) """
        cls = kwargs.pop("cls", luigi.Parameter)

        # ensure that the default value is a tuple
        if "default" in kwargs:
            kwargs["default"] = make_tuple(kwargs["default"])

        super(CSVParameter, self).__init__(*args, **kwargs)

        self._inst = cls()
示例#7
0
    def serialize(self, value):
        """"""
        if not value:
            value = tuple()

        value = make_tuple(value)

        # apply uniqueness, sort, length and choices checks
        value = self._check_unique(value)
        value = self._check_sort(value)
        self._check_len(value)
        self._check_choices(value)

        return self.CSV_SEP.join(str(self._inst.serialize(elem)) for elem in value)
示例#8
0
    def __init__(self, *args, **kwargs):
        """ __init__(*args, cls=luigi.Parameter, unique=False, min_len=None, max_len=None, **kwargs)
        """
        self._cls = kwargs.pop("cls", luigi.Parameter)
        self._unique = kwargs.pop("unique", False)
        self._min_len = kwargs.pop("min_len", None)
        self._max_len = kwargs.pop("max_len", None)

        # ensure that the default value is a tuple
        if "default" in kwargs:
            kwargs["default"] = make_tuple(kwargs["default"])

        super(CSVParameter, self).__init__(*args, **kwargs)

        self._inst = self._cls()
示例#9
0
    def __init__(self, *args, **kwargs):
        self._cls = kwargs.pop("cls", luigi.Parameter)
        self._unique = kwargs.pop("unique", False)
        self._sort = kwargs.pop("sort", False)
        self._min_len = kwargs.pop("min_len", None)
        self._max_len = kwargs.pop("max_len", None)
        self._choices = kwargs.pop("choices", None)
        self._brace_expand = kwargs.pop("brace_expand", False)
        self._escape_sep = kwargs.pop("escape_sep", True)

        # ensure that the default value is a tuple
        if "default" in kwargs:
            kwargs["default"] = make_tuple(kwargs["default"])

        super(CSVParameter, self).__init__(*args, **kwargs)

        self._inst = self._cls()
示例#10
0
    def parse(self, inp):
        """"""
        if not inp:
            ret = tuple()
        elif isinstance(inp, (tuple, list)) or is_lazy_iterable(inp):
            ret = make_tuple(inp)
        else:
            ret = tuple(self._inst.parse(elem) for elem in inp.split(","))

        # ensure uniqueness
        if self._unique:
            ret = make_unique(ret)

        # check min_len and max_len
        self._check_len(ret)

        return ret
示例#11
0
    def parse(self, inp):
        """"""
        if not inp or inp == NO_STR:
            value = tuple()
        elif isinstance(inp, (tuple, list)) or is_lazy_iterable(inp):
            value = make_tuple(inp)
        elif isinstance(inp, six.integer_types):
            value = (inp,)
        elif isinstance(inp, six.string_types):
            parts = inp.split(self.RANGE_SEP)
            # convert integers
            try:
                value = tuple((int(p) if p else self.OPEN) for p in parts)
            except ValueError:
                raise ValueError("range '{}'' contains non-integer elements".format(inp))
        else:
            value = (inp,)

        self._check(value)

        return value
示例#12
0
    def __init__(self, *args, **kwargs):
        self._cls = kwargs.pop("cls", luigi.Parameter)
        self._unique = kwargs.pop("unique", False)
        self._sort = kwargs.pop("sort", False)
        self._min_len = kwargs.pop("min_len", None)
        self._max_len = kwargs.pop("max_len", None)
        self._choices = kwargs.pop("choices", None)
        self._brace_expand = kwargs.pop("brace_expand", False)
        self._escape_sep = kwargs.pop("escape_sep", True)

        # ensure that the default value is a tuple
        if "default" in kwargs:
            kwargs["default"] = make_tuple(kwargs["default"])

        super(CSVParameter, self).__init__(*args, **kwargs)

        self._inst = self._cls()

        # brace expansion is only supported when CSV_SEP is ","
        if self._brace_expand and self.CSV_SEP != ",":
            logger.warning("{!r} does not support brace expansion when CSV_SEP is not a ','".format(
                self))
            self._brace_expand = False