# Kitchen.iterutils Module

Functions to manipulate iterables

Added in version Kitchen:: 0.2.1a1

Module author: Toshio Kuratomi <toshio@fedoraproject.org>

Module author: Luke Macken <lmacken@redhat.com>

kitchen.iterutils.isiterable(obj, include_string=False)

  Check whether an object is an iterable

  Parameters:

    - obj – Object to test whether it is an iterable

    - include_string – If `True` and `obj` is a byte `bytes` or `str` string this function will return `True`. If set to `False`, byte `bytes` and `str` strings will cause this function to return `False`. Default `False`.

  Returns:

    `True` if `obj` is iterable, otherwise `False`.

kitchen.iterutils.iterate(obj, include_string=False)

  Generator that can be used to iterate over anything

  Parameters:

    - obj – The object to iterate over

    - include_string – if `True`, treat strings as iterables. Otherwise treat them as a single scalar value. Default `False`

  This function will create an iterator out of any scalar or iterable. It is useful for making a value given to you an iterable before operating on it. Iterables have their items returned. scalars are transformed into iterables. A string is treated as a scalar value unless the `include_string` parameter is set to `True`. Example usage:

      >>> list(iterate(None))
      [None]
      >>> list(iterate([None]))
      [None]
      >>> list(iterate([1, 2, 3]))
      [1, 2, 3]
      >>> list(iterate(set([1, 2, 3])))
      [1, 2, 3]
      >>> list(iterate(dict(a='1', b='2')))
      ['a', 'b']
      >>> list(iterate(1))
      [1]
      >>> list(iterate(iter([1, 2, 3])))
      [1, 2, 3]
      >>> list(iterate('abc'))
      ['abc']
      >>> list(iterate('abc', include_string=True))
      ['a', 'b', 'c']