diff --git a/Doc/c-api/buffer.rst b/Doc/c-api/buffer.rst
index 255f45a..9467253 100644
--- a/Doc/c-api/buffer.rst
+++ b/Doc/c-api/buffer.rst
@@ -31,7 +31,7 @@
 
 .. index:: single: PyBufferProcs
 
-More information on the buffer interface is provided in the section 
+More information on the buffer interface is provided in the section
 :ref:`buffer-structs`, under the description for :ctype:`PyBufferProcs`.
 
 Buffer objects are useful as a way to expose the data from another object's
@@ -104,7 +104,7 @@
                   pointer += strides[i] * indices[i];
                   if (suboffsets[i] >=0 ) {
                       pointer = *((char**)pointer) + suboffsets[i];
-                  }                     
+                  }
               }
               return (void*)pointer;
            }
diff --git a/Doc/c-api/conversion.rst b/Doc/c-api/conversion.rst
index b71283b..1c19879 100644
--- a/Doc/c-api/conversion.rst
+++ b/Doc/c-api/conversion.rst
@@ -80,7 +80,7 @@
 
    See the Unix man page :manpage:`atof(2)` for details.
 
-   
+
 .. cfunction:: char * PyOS_stricmp(char *s1, char *s2)
 
    Case insensitive comparison of strings. The function works almost
diff --git a/Doc/c-api/file.rst b/Doc/c-api/file.rst
index c76fd22..599717b 100644
--- a/Doc/c-api/file.rst
+++ b/Doc/c-api/file.rst
@@ -22,7 +22,7 @@
 
    .. warning::
 
-     Take care when you are mixing streams and descriptors! For more 
+     Take care when you are mixing streams and descriptors! For more
      information, see `the GNU C Library docs
      <http://www.gnu.org/software/libc/manual/html_node/Stream_002fDescriptor-Precautions.html#Stream_002fDescriptor-Precautions>`_.
 
diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst
index 89bcff3..0ac8d5b 100644
--- a/Doc/c-api/init.rst
+++ b/Doc/c-api/init.rst
@@ -885,7 +885,7 @@
 
    Return a tuple of function call counts.  There are constants defined for the
    positions within the tuple:
-   
+
    +-------------------------------+-------+
    | Name                          | Value |
    +===============================+=======+
@@ -911,7 +911,7 @@
    +-------------------------------+-------+
    | :const:`PCALL_POP`            | 10    |
    +-------------------------------+-------+
-   
+
    :const:`PCALL_FAST_FUNCTION` means no argument tuple needs to be created.
    :const:`PCALL_FASTER_FUNCTION` means that the fast-path frame setup code is used.
 
diff --git a/Doc/c-api/long.rst b/Doc/c-api/long.rst
index b0debe3..a7fe4b5 100644
--- a/Doc/c-api/long.rst
+++ b/Doc/c-api/long.rst
@@ -107,7 +107,7 @@
    retrieved from the resulting value using :cfunc:`PyLong_AsVoidPtr`.
 
 
-.. XXX alias PyLong_AS_LONG (for now) 
+.. XXX alias PyLong_AS_LONG (for now)
 .. cfunction:: long PyLong_AsLong(PyObject *pylong)
 
    .. index::
@@ -123,7 +123,7 @@
 
    Return a C :ctype:`long` representation of the contents of *pylong*.  If
    *pylong* is greater than :const:`LONG_MAX`, return -1 and
-   set `*overflow` to 1 (for overflow) or -1 (for underflow). 
+   set `*overflow` to 1 (for overflow) or -1 (for underflow).
    If an exception is set because of type errors, also return -1.
 
 
diff --git a/Doc/c-api/module.rst b/Doc/c-api/module.rst
index 9be2a11..3a612e0 100644
--- a/Doc/c-api/module.rst
+++ b/Doc/c-api/module.rst
@@ -96,7 +96,7 @@
 
 .. cfunction:: int PyModule_AddIntMacro(PyObject *module, macro)
 
-   Add an int constant to *module*. The name and the value are taken from 
+   Add an int constant to *module*. The name and the value are taken from
    *macro*. For example ``PyModule_AddConstant(module, AF_INET)`` adds the int
    constant *AF_INET* with the value of *AF_INET* to *module*.
    Return ``-1`` on error, ``0`` on success.
diff --git a/Doc/c-api/reflection.rst b/Doc/c-api/reflection.rst
index 8a96ce3..822c593 100644
--- a/Doc/c-api/reflection.rst
+++ b/Doc/c-api/reflection.rst
@@ -15,7 +15,7 @@
 
    Return a dictionary of the local variables in the current execution frame,
    or *NULL* if no frame is currently executing.
-   
+
 
 .. cfunction:: PyObject* PyEval_GetGlobals()
 
diff --git a/Doc/c-api/sequence.rst b/Doc/c-api/sequence.rst
index 0ebc0f3..51f9a7d 100644
--- a/Doc/c-api/sequence.rst
+++ b/Doc/c-api/sequence.rst
@@ -143,9 +143,9 @@
 
    Return the underlying array of PyObject pointers.  Assumes that *o* was returned
    by :cfunc:`PySequence_Fast` and *o* is not *NULL*.
-   
+
    Note, if a list gets resized, the reallocation may relocate the items array.
-   So, only use the underlying array pointer in contexts where the sequence 
+   So, only use the underlying array pointer in contexts where the sequence
    cannot change.
 
 
