def batcher(seq, batch_size: int) ->list:
    """Splits an iterable into batch sized iterables

    :param seq: iterable to split into batches
    :type seq: list, tuple, set
    :param batch_size: batch size
    :type batch_size: int
    :return: yields a list with 'batch_size' items
    :rtype: list
    """
    res = []
    for el in seq:
        res.append(el)
        if len(res) == batch_size:
            yield res
            res = []
    if res:
        yield res
