Yields all pairs drawn from ``seq1`` and ``seq2``.

    If ``seq2`` is ``None``, ``seq2 = seq1``.

        >>> stop_at.ed(all_pairs(xrange(100000), xrange(100000)), 8)
        ((0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7))

def all_pairs(seq1, seq2=None):
    """Yields all pairs drawn from ``seq1`` and ``seq2``.

    If ``seq2`` is ``None``, ``seq2 = seq1``.

        >>> stop_at.ed(all_pairs(xrange(100000), xrange(100000)), 8)
        ((0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7))
    """
    if seq2 is None: seq2 = seq1
    for item1 in seq1:
        for item2 in seq2:
            yield (item1, item2)