Esempio n. 1
0
def _process_includes(raw, filepath, error_name):
    if not raw:
        return []

    source_dir = os.path.dirname(filepath)
    included_files = []
    replace_value = None

    if hasattr(raw, 'items'):
        for key, value in raw.items():
            if key == 'include#':
                include_path = os.path.expanduser(
                    os.path.join(source_dir, value))
                included_files.append(include_path)
                replace_value, includes = _load_file(include_path, error_name)
                included_files.extend(includes)
            elif hasattr(value, 'items') or isiterable(value):
                includes = _process_includes(value, filepath, error_name)
                included_files.extend(includes)
    elif isiterable(raw):
        for element in raw:
            if hasattr(element, 'items') or isiterable(element):
                includes = _process_includes(element, filepath, error_name)
                included_files.extend(includes)

    if replace_value is not None:
        del raw['include#']
        for key, value in replace_value.items():
            raw[key] = merge_config_values(value, raw.get(key, None))

    return included_files
Esempio n. 2
0
def _process_includes(raw, filepath, error_name):
    if not raw:
        return []

    source_dir = os.path.dirname(filepath)
    included_files = []
    replace_value = None

    if hasattr(raw, 'items'):
        for key, value in raw.items():
            if key == 'include#':
                include_path = os.path.expanduser(os.path.join(source_dir, value))
                included_files.append(include_path)
                replace_value, includes = _load_file(include_path, error_name)
                included_files.extend(includes)
            elif hasattr(value, 'items') or isiterable(value):
                includes = _process_includes(value, filepath, error_name)
                included_files.extend(includes)
    elif isiterable(raw):
        for element in raw:
            if hasattr(element, 'items') or isiterable(element):
                includes = _process_includes(element, filepath, error_name)
                included_files.extend(includes)

    if replace_value is not None:
        del raw['include#']
        for key, value in replace_value.items():
            raw[key] = merge_config_values(value, raw.get(key, None))

    return included_files
Esempio n. 3
0
    def update_metadata(self, key, *args):
        if not args:
            del self.metadata[key]
            return

        if key not in self.metadata:
            return self.add_metadata(key, *args)

        if hasattr(self.metadata[key], 'items'):
            if len(args) == 2:
                self.metadata[key][args[0]] = args[1]
            elif len(args) > 2:  # assume list of key-value pairs
                for k, v in args:
                    self.metadata[key][k] = v
            elif hasattr(args[0], 'items'):
                for k, v in args[0].items():
                    self.metadata[key][k] = v
            else:
                raise ValueError('Invalid value for key "{}": {}'.format(key, args))

        elif isiterable(self.metadata[key]):
            self.metadata[key].extend(args)
        else:   # scalar
            if len(args) > 1:
                raise ValueError('Invalid value for key "{}": {}'.format(key, args))
            self.metadata[key] = args[0]
Esempio n. 4
0
def list_of_strs(value):
    """
    Value must be iterable. All elements will be converted to strings.

    """
    if not isiterable(value):
        raise ValueError(value)
    return list(map(str, value))
Esempio n. 5
0
def list_of_ints(value):
    """
    Value must be iterable. All elements will be converted to ``int``\ s.

    """
    if not isiterable(value):
        raise ValueError(value)
    return list(map(int, value))
Esempio n. 6
0
def try_convert_to_numeric(v):
    try:
        if isiterable(v):
            return list(map(numeric, v))
        else:
            return numeric(v)
    except ValueError:
        return v
Esempio n. 7
0
def list_of_strs(value):
    """
    Value must be iterable. All elements will be converted to strings.

    """
    if not isiterable(value):
        raise ValueError(value)
    return list(map(str, value))
Esempio n. 8
0
def try_convert_to_numeric(v):
    try:
        if isiterable(v):
            return list(map(numeric, v))
        else:
            return numeric(v)
    except ValueError:
        return v
Esempio n. 9
0
def list_of_ints(value):
    """
    Value must be iterable. All elements will be converted to ``int``\ s.

    """
    if not isiterable(value):
        raise ValueError(value)
    return list(map(int, value))
Esempio n. 10
0
def list_of_numbers(value):
    """
    Value must be iterable. All elements will be converted to numbers (either ``ints`` or
    ``float``\ s depending on the elements).

    """
    if not isiterable(value):
        raise ValueError(value)
    return list(map(numeric, value))
Esempio n. 11
0
def list_of_numbers(value):
    """
    Value must be iterable. All elements will be converted to numbers (either ``ints`` or
    ``float``\ s depending on the elements).

    """
    if not isiterable(value):
        raise ValueError(value)
    return list(map(numeric, value))
Esempio n. 12
0
 def load_objects(d):
     pairs = []
     for k, v in d.items():
         if hasattr(v, 'items'):
             pairs.append((k, load_objects(v)))
         elif isiterable(v):
             pairs.append((k, [try_parse_object(i) for i in v]))
         else:
             pairs.append((k, try_parse_object(v)))
     return OrderedDict(pairs)
Esempio n. 13
0
 def __init__(self, value=None):
     if isiterable(value):
         super(arguments, self).__init__(list(map(str, value)))
     elif isinstance(value, str):
         posix = os.name != 'nt'
         super(arguments, self).__init__(shlex.split(value, posix=posix))
     elif value is None:
         super(arguments, self).__init__()
     else:
         super(arguments, self).__init__([str(value)])
Esempio n. 14
0
 def _set(self, attr, vals):
     if vals is None:
         vals = []
     elif isiterable(vals):
         if hasattr(vals, 'values'):
             vals = list(vals.values())
     else:
         msg = '{} must be iterable; got "{}"'
         raise ValueError(msg.format(attr, vals))
     setattr(self, attr, vals)
Esempio n. 15
0
 def load_objects(d):
     pairs = []
     for k, v in d.items():
         if hasattr(v, 'items'):
             pairs.append((k, load_objects(v)))
         elif isiterable(v):
             pairs.append((k, [try_parse_object(i) for i in v]))
         else:
             pairs.append((k, try_parse_object(v)))
     return OrderedDict(pairs)
Esempio n. 16
0
 def _set(self, attr, vals):
     if vals is None:
         vals = []
     elif isiterable(vals):
         if hasattr(vals, 'values'):
             vals = list(vals.values())
     else:
         msg = '{} must be iterable; got "{}"'
         raise ValueError(msg.format(attr, vals))
     setattr(self, attr, vals)
Esempio n. 17
0
 def __init__(self, value=None):
     if isiterable(value):
         super(arguments, self).__init__(list(map(str, value)))
     elif isinstance(value, str):
         posix = os.name != 'nt'
         super(arguments, self).__init__(shlex.split(value, posix=posix))
     elif value is None:
         super(arguments, self).__init__()
     else:
         super(arguments, self).__init__([str(value)])
Esempio n. 18
0
def is_pod(obj):
    if type(obj) not in POD_TYPES:  # pylint: disable=unidiomatic-typecheck
        return False
    if hasattr(obj, 'items'):
        for k, v in obj.items():
            if not (is_pod(k) and is_pod(v)):
                return False
    elif isiterable(obj):
        for v in obj:
            if not is_pod(v):
                return False
    return True
Esempio n. 19
0
def is_pod(obj):
    if type(obj) not in POD_TYPES:  # pylint: disable=unidiomatic-typecheck
        return False
    if hasattr(obj, 'items'):
        for k, v in obj.items():
            if not (is_pod(k) and is_pod(v)):
                return False
    elif isiterable(obj):
        for v in obj:
            if not is_pod(v):
                return False
    return True
Esempio n. 20
0
def list_of_bools(value, interpret_strings=True):
    """
    Value must be iterable. All elements will be converted to ``bool``\ s.

    .. note:: By default, ``boolean()`` conversion function will be used, which
              means that strings like ``"0"`` or ``"false"`` will be
              interpreted as ``False``. If this is undesirable, set
              ``interpret_strings`` to ``False``.

    """
    if not isiterable(value):
        raise ValueError(value)
    if interpret_strings:
        return list(map(boolean, value))
    else:
        return list(map(bool, value))
Esempio n. 21
0
def list_of_bools(value, interpret_strings=True):
    """
    Value must be iterable. All elements will be converted to ``bool``\ s.

    .. note:: By default, ``boolean()`` conversion function will be used, which
              means that strings like ``"0"`` or ``"false"`` will be
              interpreted as ``False``. If this is undesirable, set
              ``interpret_strings`` to ``False``.

    """
    if not isiterable(value):
        raise ValueError(value)
    if interpret_strings:
        return list(map(boolean, value))
    else:
        return list(map(bool, value))
Esempio n. 22
0
 def __init__(self, value):
     # pylint: disable=non-parent-init-called,super-init-not-called
     if isiterable(value):
         list_type.__init__(self, value)
     else:
         list_type.__init__(self, [value])
Esempio n. 23
0
def disable(to_disable):
    if isiterable(to_disable):
        for inst in to_disable:
            _disable_instrument(inst)
    else:
        _disable_instrument(to_disable)
Esempio n. 24
0
def enable(to_enable):
    if isiterable(to_enable):
        for inst in to_enable:
            _enable_instrument(inst)
    else:
        _enable_instrument(to_enable)
 def disable(self, to_disable):
     if isiterable(to_disable):
         for inst in to_disable:
             self._disable_output_processor(inst)
     else:
         self._disable_output_processor(to_disable)
 def disable(self, to_disable):
     if isiterable(to_disable):
         for inst in to_disable:
             self._disable_output_processor(inst)
     else:
         self._disable_output_processor(to_disable)
Esempio n. 27
0
 def __init__(self, value):
     # pylint: disable=non-parent-init-called,super-init-not-called
     if isiterable(value):
         list_type.__init__(self, value)
     else:
         list_type.__init__(self, [value])