diff --git a/Objects/classobject.c b/Objects/classobject.c
index 07cb639..5e8ac59 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -260,7 +260,7 @@
             PyErr_Clear();
         }
     }
-    
+
     if (funcname != NULL && !PyUnicode_Check(funcname)) {
         Py_DECREF(funcname);
         funcname = NULL;
diff --git a/Objects/iterobject.c b/Objects/iterobject.c
index 77ff810..baa51da 100644
--- a/Objects/iterobject.c
+++ b/Objects/iterobject.c
@@ -212,7 +212,7 @@
         Py_DECREF(args);
         if (result != NULL) {
             int ok;
-            ok = PyObject_RichCompareBool(it->it_sentinel, result, Py_EQ);               
+            ok = PyObject_RichCompareBool(it->it_sentinel, result, Py_EQ);
             if (ok == 0)
                 return result; /* Common case, fast path */
             Py_DECREF(result);
diff --git a/Objects/memoryobject.c b/Objects/memoryobject.c
index b611dc8..6142b4c 100644
--- a/Objects/memoryobject.c
+++ b/Objects/memoryobject.c
@@ -892,7 +892,7 @@
    The logical structure of the input and output buffers is the same
    (i.e. tolist(input) == tolist(output)), but the physical layout in
    memory can be explicitly chosen.
- 
+
    As usual, if buffertype=PyBUF_WRITE, the exporter's buffer must be writable,
    otherwise it may be writable or read-only.
 
@@ -1241,7 +1241,7 @@
     view->suboffsets = NULL;
 
     init_flags(mv);
- 
+
     ret = 0;
 
 out:
@@ -2288,7 +2288,7 @@
 {
     Py_buffer *view;
     view = &(self->view);
-    
+
     CHECK_RELEASED(self);
 
     if (view->ndim == 0) {
diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c
index 441e731..dca5e58 100644
--- a/Objects/moduleobject.c
+++ b/Objects/moduleobject.c
@@ -37,7 +37,7 @@
     _Py_IDENTIFIER(__package__);
     _Py_IDENTIFIER(__loader__);
     _Py_IDENTIFIER(__spec__);
-    
+
     if (md_dict == NULL)
         return -1;
     if (doc == NULL)
diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c
index 7e6c733..0f8cd60 100644
--- a/Objects/rangeobject.c
+++ b/Objects/rangeobject.c
@@ -987,7 +987,7 @@
 longrangeiter_setstate(longrangeiterobject *r, PyObject *state)
 {
     int cmp;
-   
+
     /* clip the value */
     PyObject *zero = PyLong_FromLong(0);
     if (zero == NULL)
@@ -1007,7 +1007,7 @@
         return NULL;
     if (cmp > 0)
         state = r->len;
-    
+
     Py_CLEAR(r->index);
     r->index = state;
     Py_INCREF(r->index);
diff --git a/Objects/stringlib/transmogrify.h b/Objects/stringlib/transmogrify.h
index cae6ea1..b559b53 100644
--- a/Objects/stringlib/transmogrify.h
+++ b/Objects/stringlib/transmogrify.h
@@ -59,7 +59,7 @@
 
     j = 0;
     q = STRINGLIB_STR(u);
-    
+
     for (p = STRINGLIB_STR(self); p < e; p++) {
         if (*p == '\t') {
             if (tabsize > 0) {
diff --git a/Objects/unicodectype.c b/Objects/unicodectype.c
index ea540d6..d8c95c8 100644
--- a/Objects/unicodectype.c
+++ b/Objects/unicodectype.c
@@ -27,7 +27,7 @@
 #define EXTENDED_CASE_MASK 0x4000
 
 typedef struct {
-    /* 
+    /*
        These are either deltas to the character or offsets in
        _PyUnicode_ExtendedCase.
     */
