diff --git a/Lib/compiler/ast.py b/Lib/compiler/ast.py
index cfc2a51..6b78fdd 100644
--- a/Lib/compiler/ast.py
+++ b/Lib/compiler/ast.py
@@ -553,7 +553,7 @@
             self.varargs = 1
         if flags & CO_VARKEYWORDS:
             self.kwargs = 1
-    
+
 
 
     def getChildren(self):
@@ -584,7 +584,7 @@
         self.lineno = lineno
         self.argnames = ['[outmost-iterable]']
         self.varargs = self.kwargs = None
-    
+
 
 
     def getChildren(self):
@@ -763,7 +763,7 @@
             self.varargs = 1
         if flags & CO_VARKEYWORDS:
             self.kwargs = 1
-    
+
 
 
     def getChildren(self):
@@ -1313,4 +1313,4 @@
 
 for name, obj in globals().items():
     if isinstance(obj, type) and issubclass(obj, Node):
-       nodes[name.lower()] = obj
+        nodes[name.lower()] = obj
diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py
index 756e565..34ad5ea 100644
--- a/Lib/compiler/transformer.py
+++ b/Lib/compiler/transformer.py
@@ -79,7 +79,7 @@
             lineno = extractLineNo(child)
             if lineno is not None:
                 return lineno
-        
+
 def Node(*args):
     kind = args[0]
     if nodes.has_key(kind):
@@ -127,7 +127,7 @@
     def parsesuite(self, text):
         """Return a modified parse tree for the given suite text."""
         return self.transform(parser.suite(text))
-        
+
     def parseexpr(self, text):
         """Return a modified parse tree for the given expression text."""
         return self.transform(parser.expr(text))
@@ -426,7 +426,7 @@
 
     def import_name(self, nodelist):
         # import_name: 'import' dotted_as_names
-        return Import(self.com_dotted_as_names(nodelist[1]), 
+        return Import(self.com_dotted_as_names(nodelist[1]),
                       lineno=nodelist[0][2])
 
     def import_from(self, nodelist):
@@ -514,7 +514,7 @@
         else:
             elseNode = None
 
-        return For(assignNode, listNode, bodyNode, elseNode, 
+        return For(assignNode, listNode, bodyNode, elseNode,
                    lineno=nodelist[0][2])
 
     def try_stmt(self, nodelist):
@@ -887,7 +887,7 @@
     def com_try_finally(self, nodelist):
         # try_fin_stmt: "try" ":" suite "finally" ":" suite
         return TryFinally(self.com_node(nodelist[2]),
-                       self.com_node(nodelist[5]), 
+                       self.com_node(nodelist[5]),
                        lineno=nodelist[0][2])
 
     def com_try_except(self, nodelist):
@@ -1226,7 +1226,7 @@
         subscripts = []
         for i in range(1, len(nodelist), 2):
             subscripts.append(self.com_subscript(nodelist[i]))
-        return Subscript(primary, assigning, subscripts, 
+        return Subscript(primary, assigning, subscripts,
                          lineno=extractLineNo(nodelist))
 
     def com_subscript(self, node):
