Kitchen.iterutils Module

Functions to manipulate iterables

New 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']