Add repeat keyword argument to itertools.product().
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index 6155322..d9a2b33 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -340,7 +340,7 @@
 
    .. versionadded:: 2.6
 
-.. function:: product(*iterables)
+.. function:: product(*iterables[, repeat])
 
    Cartesian product of input iterables.
 
@@ -353,11 +353,15 @@
    so that if the inputs iterables are sorted, the product tuples are emitted
    in sorted order.
 
+   To compute the product of an iterable with itself, specify the number of
+   repetitions with the optional *repeat* keyword argument.  For example,
+   ``product(A, repeat=4)`` means the same as ``product(A, A, A, A)``.
+
    Equivalent to the following except that the actual implementation does not
    build-up intermediate results in memory::
 
-       def product(*args):
-           pools = map(tuple, args)
+       def product(*args, **kwds):
+           pools = map(tuple, args) * kwds.get('repeat', 1)
            if pools:            
                result = [[]]
                for pool in pools: