<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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)