Iterable object to unicode string.

    :type arg: collections.Iterable
    :param arg: iterable object
    :type level: int
    :param level: deep level

    :rtype: unicode
    :return: iterable object as unicode string

def uniiterable(arg, level):
    """
    Iterable object to unicode string.

    :type arg: collections.Iterable
    :param arg: iterable object
    :type level: int
    :param level: deep level

    :rtype: unicode
    :return: iterable object as unicode string
    """

    if not isinstance(arg, collections.Iterable):
        raise TypeError(
            'expected collections.Iterable, {} received'.format(type(arg).__name__)
        )

    templates = {
        list: u'[{}]',
        tuple: u'({})'
    }

    result = []
    for i in arg:
        result.append(pretty_spaces(level) + convert(i, level=level))

    string = join_strings(result, level)
    if level is not None:
        string += pretty_spaces(level - 1)

    return templates.get(type(arg), templates[tuple]).format(string)