from typing import Iterator
import itertools


def round_robin_shortest(*iterables) -> Iterator:
    """Return iterator yielding from each iterable in turn.

    Stop when the last item from the shortest iterable is yielded.

    Arguments:
        an arbitrary number of iterable positional arguments

    Returns:
        iterator rotating among iterables until the shortest is exhausted

    Examples:

    >>> numbers = range(3)
    >>> chars = 'abcde'
    >>> classes = [int, str, dict, list]
    >>> list(round_robin_shortest(numbers, chars, classes))
    [0, 'a', <class 'int'>, 1, 'b', <class 'str'>, 2, 'c', <class 'dict'>]

    """
    return itertools.chain.from_iterable(zip(*iterables))