]> granicus.if.org Git - python/commitdiff
Merged revisions 68221 via svnmerge from
authorGeorg Brandl <georg@python.org>
Sat, 3 Jan 2009 21:26:05 +0000 (21:26 +0000)
committerGeorg Brandl <georg@python.org>
Sat, 3 Jan 2009 21:26:05 +0000 (21:26 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r68221 | georg.brandl | 2009-01-03 22:04:55 +0100 (Sat, 03 Jan 2009) | 2 lines

  Remove tabs from the documentation.
........

18 files changed:
Doc/extending/newtypes.rst
Doc/howto/curses.rst
Doc/howto/regex.rst
Doc/howto/sockets.rst
Doc/howto/unicode.rst
Doc/library/abc.rst
Doc/library/collections.rst
Doc/library/gettext.rst
Doc/library/multiprocessing.rst
Doc/library/optparse.rst
Doc/library/sched.rst
Doc/library/socket.rst
Doc/tutorial/datastructures.rst
Doc/tutorial/stdlib2.rst
Doc/whatsnew/2.0.rst
Doc/whatsnew/2.2.rst
Doc/whatsnew/2.4.rst
Doc/whatsnew/2.6.rst

index 66af3bf36ae3d6637eccc30fd2e73426d6365694..ab84a83ce23e7a083ce27bf17ff881321c6c3c9b 100644 (file)
@@ -823,8 +823,8 @@ As you can see, the source code closely resembles the :class:`Noddy` examples in
 previous sections. We will break down the main differences between them. ::
 
    typedef struct {
-       PyListObject list;
-       int state;
+       PyListObject list;
+       int state;
    } Shoddy;
 
 The primary difference for derived type objects is that the base type's object
@@ -837,10 +837,10 @@ be safely cast to both *PyListObject\** and *Shoddy\**. ::
    static int
    Shoddy_init(Shoddy *self, PyObject *args, PyObject *kwds)
    {
-       if (PyList_Type.tp_init((PyObject *)self, args, kwds) < 0)
-               return -1;
-       self->state = 0;
-       return 0;
+       if (PyList_Type.tp_init((PyObject *)self, args, kwds) < 0)
+          return -1;
+       self->state = 0;
+       return 0;
    }
 
 In the :attr:`__init__` method for our type, we can see how to call through to
@@ -859,18 +859,18 @@ the module's :cfunc:`init` function. ::
    PyMODINIT_FUNC
    PyInit_shoddy(void)
    {
-        PyObject *m;
+       PyObject *m;
 
-        ShoddyType.tp_base = &PyList_Type;
-        if (PyType_Ready(&ShoddyType) < 0)
-            return NULL;
+       ShoddyType.tp_base = &PyList_Type;
+       if (PyType_Ready(&ShoddyType) < 0)
+           return NULL;
 
-        m = PyModule_Create(&shoddymodule);
-        if (m == NULL)
-            return NULL;
+       m = PyModule_Create(&shoddymodule);
+       if (m == NULL)
+           return NULL;
 
-        Py_INCREF(&ShoddyType);
-        PyModule_AddObject(m, "Shoddy", (PyObject *) &ShoddyType);
+       Py_INCREF(&ShoddyType);
+       PyModule_AddObject(m, "Shoddy", (PyObject *) &ShoddyType);
    }
 
 Before calling :cfunc:`PyType_Ready`, the type structure must have the
@@ -1113,7 +1113,7 @@ structure::
    typedef struct PyMethodDef {
        char        *ml_name;       /* method name */
        PyCFunction  ml_meth;       /* implementation function */
-       int              ml_flags;      /* flags */
+       int          ml_flags;      /* flags */
        char        *ml_doc;        /* docstring */
    } PyMethodDef;
 
index 7e69006c4e9e3808ff3e58a8491ea1c33877b344..1c191adc12cee2f5f62bd8c96941ffc2fed4fb27 100644 (file)
@@ -297,7 +297,7 @@ So, to display a reverse-video status line on the top line of the screen, you
 could code::
 
    stdscr.addstr(0, 0, "Current mode: Typing mode",
-             curses.A_REVERSE)
+                 curses.A_REVERSE)
    stdscr.refresh()
 
 The curses library also supports color on those terminals that provide it, The
index d83665f27430c3f34cd23391d4fdd35fa3b52957..39a8578e7791851cab69de49dbeb5ac1eed292ba 100644 (file)
@@ -917,7 +917,7 @@ module::
 
    InternalDate = re.compile(r'INTERNALDATE "'
            r'(?P<day>[ 123][0-9])-(?P<mon>[A-Z][a-z][a-z])-'
-       r'(?P<year>[0-9][0-9][0-9][0-9])'
+           r'(?P<year>[0-9][0-9][0-9][0-9])'
            r' (?P<hour>[0-9][0-9]):(?P<min>[0-9][0-9]):(?P<sec>[0-9][0-9])'
            r' (?P<zonen>[-+])(?P<zoneh>[0-9][0-9])(?P<zonem>[0-9][0-9])'
            r'"')
index 69130c407ef4919f09dc0baa4f17e2fde7f75678..9f7fe684651240ab68ca13cddd751f96f1a3f74e 100644 (file)
@@ -189,30 +189,30 @@ length message::
        """
 
        def __init__(self, sock=None):
-          if sock is None:
-                  self.sock = socket.socket(
-                                      socket.AF_INET, socket.SOCK_STREAM)
-              else:
-                  self.sock = sock
+           if sock is None:
+               self.sock = socket.socket(
+                               socket.AF_INET, socket.SOCK_STREAM)
+               else:
+                   self.sock = sock
 
        def connect(self, host, port):
            self.sock.connect((host, port))
 
        def mysend(self, msg):
-              totalsent = 0
-              while totalsent < MSGLEN:
-                  sent = self.sock.send(msg[totalsent:])
-                  if sent == 0:
-                          raise RuntimeError("socket connection broken")
-                  totalsent = totalsent + sent
+           totalsent = 0
+           while totalsent < MSGLEN:
+               sent = self.sock.send(msg[totalsent:])
+               if sent == 0:
+                   raise RuntimeError("socket connection broken")
+               totalsent = totalsent + sent
 
        def myreceive(self):
            msg = ''
            while len(msg) < MSGLEN:
-                  chunk = self.sock.recv(MSGLEN-len(msg))
-                  if chunk == '':
-                          raise RuntimeError("socket connection broken")
-                  msg = msg + chunk
+               chunk = self.sock.recv(MSGLEN-len(msg))
+               if chunk == '':
+                   raise RuntimeError("socket connection broken")
+               msg = msg + chunk
            return msg
 
 The sending code here is usable for almost any messaging scheme - in Python you
index 820072334e454e1926da3d433216343ee949ceb5..60f7d7db7ee13289a94b364e0b003fc5b0b30c4a 100644 (file)
@@ -32,8 +32,8 @@ For a while people just wrote programs that didn't display accents.  I remember
 looking at Apple ][ BASIC programs, published in French-language publications in
 the mid-1980s, that had lines like these::
 
-       PRINT "FICHIER EST COMPLETE."
-       PRINT "CARACTERE NON ACCEPTE."
+   PRINT "FICHIER EST COMPLETE."
+   PRINT "CARACTERE NON ACCEPTE."
 
 Those messages should contain accents, and they just look wrong to someone who
 can read French.
@@ -91,11 +91,11 @@ standard, a code point is written using the notation U+12ca to mean the
 character with value 0x12ca (4810 decimal).  The Unicode standard contains a lot
 of tables listing characters and their corresponding code points::
 
-       0061    'a'; LATIN SMALL LETTER A
-       0062    'b'; LATIN SMALL LETTER B
-       0063    'c'; LATIN SMALL LETTER C
-        ...
-       007B    '{'; LEFT CURLY BRACKET
+   0061    'a'; LATIN SMALL LETTER A
+   0062    'b'; LATIN SMALL LETTER B
+   0063    'c'; LATIN SMALL LETTER C
+   ...
+   007B    '{'; LEFT CURLY BRACKET
 
 Strictly, these definitions imply that it's meaningless to say 'this is
 character U+12ca'.  U+12ca is a code point, which represents some particular
@@ -527,19 +527,19 @@ path will return the byte string versions of the filenames.  For example,
 assuming the default filesystem encoding is UTF-8, running the following
 program::
 
-       fn = 'filename\u4500abc'
-       f = open(fn, 'w')
-       f.close()
+   fn = 'filename\u4500abc'
+   f = open(fn, 'w')
+   f.close()
 
-       import os
-       print(os.listdir(b'.'))
-       print(os.listdir('.'))
+   import os
+   print(os.listdir(b'.'))
+   print(os.listdir('.'))
 
 will produce the following output::
 
-       amk:~$ python t.py
-       [b'.svn', b'filename\xe4\x94\x80abc', ...]
-       ['.svn', 'filename\u4500abc', ...]
+   amk:~$ python t.py
+   [b'.svn', b'filename\xe4\x94\x80abc', ...]
+   ['.svn', 'filename\u4500abc', ...]
 
 The first list contains UTF-8-encoded filenames, and the second list contains
 the Unicode versions.
@@ -636,26 +636,26 @@ Version 1.1: Feb-Nov 2008.  Updates the document with respect to Python 3 change
    - [ ] Unicode introduction
        - [ ] ASCII
        - [ ] Terms
-          - [ ] Character
-          - [ ] Code point
-        - [ ] Encodings
-           - [ ] Common encodings: ASCII, Latin-1, UTF-8
+           - [ ] Character
+           - [ ] Code point
+         - [ ] Encodings
+            - [ ] Common encodings: ASCII, Latin-1, UTF-8
        - [ ] Unicode Python type
-          - [ ] Writing unicode literals
-              - [ ] Obscurity: -U switch
-          - [ ] Built-ins
-              - [ ] unichr()
-              - [ ] ord()
-              - [ ] unicode() constructor
-          - [ ] Unicode type
-              - [ ] encode(), decode() methods
+           - [ ] Writing unicode literals
+               - [ ] Obscurity: -U switch
+           - [ ] Built-ins
+               - [ ] unichr()
+               - [ ] ord()
+               - [ ] unicode() constructor
+           - [ ] Unicode type
+               - [ ] encode(), decode() methods
        - [ ] Unicodedata module for character properties
        - [ ] I/O
-          - [ ] Reading/writing Unicode data into files
-              - [ ] Byte-order marks
-          - [ ] Unicode filenames
+           - [ ] Reading/writing Unicode data into files
+               - [ ] Byte-order marks
+           - [ ] Unicode filenames
        - [ ] Writing Unicode programs
-          - [ ] Do everything in Unicode
-          - [ ] Declaring source code encodings (PEP 263)
+           - [ ] Do everything in Unicode
+           - [ ] Declaring source code encodings (PEP 263)
        - [ ] Other issues
-          - [ ] Building Python (UCS2, UCS4)
+           - [ ] Building Python (UCS2, UCS4)
index bf3b0b106c0afdc4c2348e7e8841cbfe22b12377..8ab90cc91c9cdd0362c3d9ced7e6b43d102b8d1c 100644 (file)
@@ -42,15 +42,15 @@ This module provides the following class:
       Register *subclass* as a "virtual subclass" of this ABC. For
       example::
 
-       from abc import ABCMeta
+        from abc import ABCMeta
 
-       class MyABC(metaclass=ABCMeta):
-           pass
+        class MyABC(metaclass=ABCMeta):
+            pass
 
-       MyABC.register(tuple)
+        MyABC.register(tuple)
 
-       assert issubclass(tuple, MyABC)
-       assert isinstance((), MyABC)
+        assert issubclass(tuple, MyABC)
+        assert isinstance((), MyABC)
 
    You can also override this method in an abstract base class:
 
index f41abd670e6323b3af422f34c1a5ef72c1ee364a..4045d2e95030d80007332b45c0960747e5e1625d 100644 (file)
@@ -41,7 +41,7 @@ ABC                        Inherits               Abstract Methods        Mixin
 :class:`Hashable`                                 ``__hash__``
 :class:`Iterable`                                 ``__iter__``
 :class:`Iterator`          :class:`Iterable`      ``__next__``            ``__iter__``
-:class:`Sized`                                   ``__len__``
+:class:`Sized`                                    ``__len__``
 :class:`Callable`                                 ``__call__``
 
 :class:`Sequence`          :class:`Sized`,        ``__getitem__``         ``__contains__``. ``__iter__``, ``__reversed__``.
@@ -68,7 +68,7 @@ ABC                        Inherits               Abstract Methods        Mixin
 :class:`MutableMapping`    :class:`Mapping`       ``__getitem__``         Inherited Mapping methods and
                                                   ``__setitem__``,        ``pop``, ``popitem``, ``clear``, ``update``,
                                                   ``__delitem__``,        and ``setdefault``
-                                                 ``__iter__``, and
+                                                  ``__iter__``, and
                                                   ``__len__``
 
 :class:`MappingView`       :class:`Sized`                                 ``__len__``
@@ -84,7 +84,7 @@ particular functionality, for example::
 
     size = None
     if isinstance(myvar, collections.Sized):
-       size = len(myvar)
+        size = len(myvar)
 
 Several of the ABCs are also useful as mixins that make it easier to develop
 classes supporting container APIs.  For example, to write a class supporting
index cd229e74794f23813ad6f072f762fbe32cf4d010..a295c0eb672bcc619cad79070dc3530468721c87 100644 (file)
@@ -551,10 +551,9 @@ translation until later.  A classic example is::
 
    animals = ['mollusk',
               'albatross',
-          'rat',
-          'penguin',
-          'python',
-          ]
+              'rat',
+              'penguin',
+              'python', ]
    # ...
    for a in animals:
        print(a)
@@ -569,10 +568,9 @@ Here is one way you can handle this situation::
 
    animals = [_('mollusk'),
               _('albatross'),
-          _('rat'),
-          _('penguin'),
-          _('python'),
-          ]
+              _('rat'),
+              _('penguin'),
+              _('python'), ]
 
    del _
 
@@ -595,10 +593,9 @@ Another way to handle this is with the following example::
 
    animals = [N_('mollusk'),
               N_('albatross'),
-          N_('rat'),
-          N_('penguin'),
-          N_('python'),
-          ]
+              N_('rat'),
+              N_('penguin'),
+              N_('python'), ]
 
    # ...
    for a in animals:
index 7e4442357679d49dd43487ac84373a8f0b554ba1..e5dd1ed1d73c76a3eaf367d349fce653319e8574 100644 (file)
@@ -35,7 +35,7 @@ Windows.
         >>> from multiprocessing import Pool
         >>> p = Pool(5)
         >>> def f(x):
-        ...    return x*x
+        ...     return x*x
         ...
         >>> p.map(f, [1,2,3])
         Process PoolWorker-1:
index 3805d965c0671fe808cfb5e8b4b54038674d299c..4e9bb2384a438ba3b06996945a52d12fb4f82ed6 100644 (file)
@@ -543,8 +543,8 @@ Continuing with the parser defined above, adding an
 :class:`OptionGroup` to a parser is easy::
 
     group = OptionGroup(parser, "Dangerous Options",
-                       "Caution: use these options at your own risk.  "
-                       "It is believed that some of them bite.")
+                        "Caution: use these options at your own risk.  "
+                        "It is believed that some of them bite.")
     group.add_option("-g", action="store_true", help="Group option.")
     parser.add_option_group(group)
 
@@ -558,12 +558,12 @@ This would result in the following help output::
       -q, --quiet          be vewwy quiet (I'm hunting wabbits)
       -fFILE, --file=FILE  write output to FILE
       -mMODE, --mode=MODE  interaction mode: one of 'novice', 'intermediate'
-                          [default], 'expert'
+                           [default], 'expert'
 
       Dangerous Options:
-       Caution: use of these options is at your own risk.  It is believed that
-       some of them bite.
-       -g                 Group option.
+      Caution: use of these options is at your own risk.  It is believed that
+      some of them bite.
+      -g                 Group option.
 
 .. _optparse-printing-version-string:
 
index cab7f6092bfb3cf193a01b2d8d592226e5fc33b7..f93c9b5ace420bf50ae3b1b49446269dc7c044c4 100644 (file)
@@ -58,7 +58,7 @@ Example::
     ...     print(time.time())
     ...     Timer(5, print_time, ()).start()
     ...     Timer(10, print_time, ()).start()
-    ...     time.sleep(11)     # sleep while time-delay events execute
+    ...     time.sleep(11)  # sleep while time-delay events execute
     ...     print(time.time())
     ...
     >>> print_some_times()
index c2e3d91547390eba306b347c827df65553d77438..f399dae48d9aa456e48bdaddb6abf5b5325318fb 100644 (file)
@@ -797,17 +797,17 @@ sends traffic to the first one connected successfully. ::
                                  socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
        af, socktype, proto, canonname, sa = res
        try:
-       s = socket.socket(af, socktype, proto)
+           s = socket.socket(af, socktype, proto)
        except socket.error as msg:
-       s = None
-       continue
+           s = None
+           continue
        try:
-       s.bind(sa)
-       s.listen(1)
+           s.bind(sa)
+           s.listen(1)
        except socket.error as msg:
-       s.close()
-       s = None
-       continue
+           s.close()
+           s = None
+           continue
        break
    if s is None:
        print('could not open socket')
@@ -832,16 +832,16 @@ sends traffic to the first one connected successfully. ::
    for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
        af, socktype, proto, canonname, sa = res
        try:
-       s = socket.socket(af, socktype, proto)
+           s = socket.socket(af, socktype, proto)
        except socket.error as msg:
-       s = None
-       continue
+           s = None
+           continue
        try:
-       s.connect(sa)
+           s.connect(sa)
        except socket.error as msg:
-       s.close()
-       s = None
-       continue
+           s.close()
+           s = None
+           continue
        break
    if s is None:
        print('could not open socket')
index 95497b42404fef359f7404f0a3d46c3ef699e3c8..454472cc8f821a1418e1399dc0653cee040d9e2d 100644 (file)
@@ -195,7 +195,7 @@ Using the :keyword:`if` clause we can filter the stream::
 
 Tuples can often be created without their parentheses, but not here::
 
-   >>> [x, x**2 for x in vec]  # error - parens required for tuples
+   >>> [x, x**2 for x in vec]  # error - parens required for tuples
      File "<stdin>", line 1, in ?
        [x, x**2 for x in vec]
                   ^
index f581972d24bd506d516797a2ec6ccc92efd80186..4be327517205e2bf5bb65d21986fe1a9b237b7bc 100644 (file)
@@ -62,7 +62,7 @@ formatting numbers with group separators::
    >>> locale.format("%d", x, grouping=True)
    '1,234,567'
    >>> locale.format("%s%.*f", (conv['currency_symbol'],
-   ...       conv['frac_digits'], x), grouping=True)
+   ...               conv['frac_digits'], x), grouping=True)
    '$1,234,567.80'
 
 
index 75205d40fbf6d529d6a8a5ec4a4268ad6105bb53..f5326d75928d168c17de74ff6ed40cb7be56787b 100644 (file)
@@ -281,7 +281,7 @@ write the following to do it::
    # containing the substring S.
    sublist = filter( lambda s, substring=S:
                         string.find(s, substring) != -1,
-                 L)
+                     L)
 
 Because of Python's scoping rules, a default argument is used so that the
 anonymous function created by the :keyword:`lambda` statement knows what
@@ -293,7 +293,7 @@ List comprehensions have the form::
 
    [ expression for expr in sequence1
                 for expr2 in sequence2 ...
-            for exprN in sequenceN
+                for exprN in sequenceN
                 if condition ]
 
 The :keyword:`for`...\ :keyword:`in` clauses contain the sequences to be
@@ -368,7 +368,7 @@ instance with an incremented value.
        def __init__(self, value):
            self.value = value
        def __iadd__(self, increment):
-       return Number( self.value + increment)
+           return Number( self.value + increment)
 
    n = Number(5)
    n += 3
@@ -852,13 +852,12 @@ the PyXML package::
    from distutils.core import setup, Extension
 
    expat_extension = Extension('xml.parsers.pyexpat',
-       define_macros = [('XML_NS', None)],
-       include_dirs = [ 'extensions/expat/xmltok',
-                        'extensions/expat/xmlparse' ],
-       sources = [ 'extensions/pyexpat.c',
-                   'extensions/expat/xmltok/xmltok.c',
-                   'extensions/expat/xmltok/xmlrole.c',
-                     ]
+        define_macros = [('XML_NS', None)],
+        include_dirs = [ 'extensions/expat/xmltok',
+                         'extensions/expat/xmlparse' ],
+        sources = [ 'extensions/pyexpat.c',
+                    'extensions/expat/xmltok/xmltok.c',
+                    'extensions/expat/xmltok/xmlrole.c', ]
           )
    setup (name = "PyXML", version = "0.5.4",
           ext_modules =[ expat_extension ] )
index 28ecb81ca0d76db644b7a2ebaea8b06434dfa6bf..ec435f71ba37ec43db25cbea62e60983558075a3 100644 (file)
@@ -295,7 +295,7 @@ will be used in methods to call a method in the superclass; for example,
 
    class D (B,C):
        def save (self):
-       # Call superclass .save()
+           # Call superclass .save()
            super(D, self).save()
            # Save D's private information here
            ...
index d608c2b462b43d6e6064c4ac0d51a71ae5f20f88..4ce81326e6562a3d11d0cabe2e477c95bc4ff117 100644 (file)
@@ -396,10 +396,10 @@ single class called :class:`Popen`  whose constructor supports a number of
 different keyword arguments. ::
 
    class Popen(args, bufsize=0, executable=None,
-           stdin=None, stdout=None, stderr=None,
-           preexec_fn=None, close_fds=False, shell=False,
-           cwd=None, env=None, universal_newlines=False,
-           startupinfo=None, creationflags=0):
+               stdin=None, stdout=None, stderr=None,
+               preexec_fn=None, close_fds=False, shell=False,
+               cwd=None, env=None, universal_newlines=False,
+               startupinfo=None, creationflags=0):
 
 *args* is commonly a sequence of strings that will be the arguments to the
 program executed as the subprocess.  (If the *shell* argument is true, *args*
index 750f7db75c5aa2bedb6fdf27379b002b04e33396..5ee71f43e5e71f5d78fb94fb3db473c5e5fdb4e2 100644 (file)
@@ -590,30 +590,30 @@ multiple of 4.
 
 
     def factorial(queue, N):
-       "Compute a factorial."
-       # If N is a multiple of 4, this function will take much longer.
-       if (N % 4) == 0:
-           time.sleep(.05 * N/4)
+        "Compute a factorial."
+        # If N is a multiple of 4, this function will take much longer.
+        if (N % 4) == 0:
+            time.sleep(.05 * N/4)
 
-       # Calculate the result
-       fact = 1L
-       for i in range(1, N+1):
-           fact = fact * i
+        # Calculate the result
+        fact = 1L
+        for i in range(1, N+1):
+            fact = fact * i
 
-       # Put the result on the queue
-       queue.put(fact)
+        # Put the result on the queue
+        queue.put(fact)
 
     if __name__ == '__main__':
-       queue = Queue()
+        queue = Queue()
 
-       N = 5
+        N = 5
 
-       p = Process(target=factorial, args=(queue, N))
-       p.start()
-       p.join()
+        p = Process(target=factorial, args=(queue, N))
+        p.start()
+        p.join()
 
-       result = queue.get()
-       print 'Factorial', N, '=', result
+        result = queue.get()
+        print 'Factorial', N, '=', result
 
 A :class:`Queue` is used to communicate the input parameter *N* and
 the result.  The :class:`Queue` object is stored in a global variable.
@@ -634,12 +634,12 @@ across 5 worker processes and retrieve a list of results::
     from multiprocessing import Pool
 
     def factorial(N, dictionary):
-       "Compute a factorial."
-       ...
+        "Compute a factorial."
+        ...
     p = Pool(5)
     result = p.map(factorial, range(1, 1000, 10))
     for v in result:
-       print v
+        print v
 
 This produces the following output::
 
@@ -1889,9 +1889,9 @@ changes, or look through the Subversion logs for all the details.
      ('id', 'name', 'type', 'size')
 
      >>> var = var_type(1, 'frequency', 'int', 4)
-     >>> print var[0], var.id          # Equivalent
+     >>> print var[0], var.id    # Equivalent
      1 1
-     >>> print var[2], var.type          # Equivalent
+     >>> print var[2], var.type  # Equivalent
      int int
      >>> var._asdict()
      {'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'}
@@ -2050,8 +2050,8 @@ changes, or look through the Subversion logs for all the details.
 
      >>> list(itertools.product([1,2,3], [4,5,6]))
      [(1, 4), (1, 5), (1, 6),
-         (2, 4), (2, 5), (2, 6),
-         (3, 4), (3, 5), (3, 6)]
+      (2, 4), (2, 5), (2, 6),
+      (3, 4), (3, 5), (3, 6)]
 
   The optional *repeat* keyword argument is used for taking the
   product of an iterable or a set of iterables with themselves,