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
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(","))
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)
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)
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)
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()
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)
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()
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()
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
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
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