diff --git a/lib/py/src/reflection/limited/ttypes.py b/lib/py/src/reflection/limited/ttypes.py
index ec58f66..f6e6398 100644
--- a/lib/py/src/reflection/limited/ttypes.py
+++ b/lib/py/src/reflection/limited/ttypes.py
@@ -87,10 +87,10 @@
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
-  def __str__(self): 
+  def __str__(self):
     return str(self.__dict__)
 
-  def __repr__(self): 
+  def __repr__(self):
     return repr(self.__dict__)
 
   def __eq__(self, other):
@@ -171,10 +171,10 @@
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
-  def __str__(self): 
+  def __str__(self):
     return str(self.__dict__)
 
-  def __repr__(self): 
+  def __repr__(self):
     return repr(self.__dict__)
 
   def __eq__(self, other):
@@ -255,10 +255,10 @@
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
-  def __str__(self): 
+  def __str__(self):
     return str(self.__dict__)
 
-  def __repr__(self): 
+  def __repr__(self):
     return repr(self.__dict__)
 
   def __eq__(self, other):
@@ -338,10 +338,10 @@
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
-  def __str__(self): 
+  def __str__(self):
     return str(self.__dict__)
 
-  def __repr__(self): 
+  def __repr__(self):
     return repr(self.__dict__)
 
   def __eq__(self, other):
@@ -430,10 +430,10 @@
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
-  def __str__(self): 
+  def __str__(self):
     return str(self.__dict__)
 
-  def __repr__(self): 
+  def __repr__(self):
     return repr(self.__dict__)
 
   def __eq__(self, other):
@@ -521,10 +521,10 @@
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
-  def __str__(self): 
+  def __str__(self):
     return str(self.__dict__)
 
-  def __repr__(self): 
+  def __repr__(self):
     return repr(self.__dict__)
 
   def __eq__(self, other):
diff --git a/lib/py/src/server/TServer.py b/lib/py/src/server/TServer.py
index 74bb93e..b6738f7 100644
--- a/lib/py/src/server/TServer.py
+++ b/lib/py/src/server/TServer.py
@@ -132,7 +132,7 @@
         self.serveClient(client)
       except Exception, x:
         print '%s, %s, %s' % (type(x), x, traceback.format_exc())
-      
+
   def serveClient(self, client):
     """Process input/output from a client for as long as possible"""
     itrans = self.inputTransportFactory.getTransport(client)
@@ -158,7 +158,7 @@
         t.start()
       except Exception, x:
         print '%s, %s, %s,' % (type(x), x, traceback.format_exc())
-    
+
     # Pump the socket for clients
     self.serverTransport.listen()
     while True:
diff --git a/lib/py/src/transport/THttpClient.py b/lib/py/src/transport/THttpClient.py
index 7410fa4..9cf4039 100644
--- a/lib/py/src/transport/THttpClient.py
+++ b/lib/py/src/transport/THttpClient.py
@@ -28,7 +28,7 @@
   def close(self):
     self.__http.close()
     self.__http = None
-    
+
   def isOpen(self):
     return self.__http != None
 
diff --git a/lib/py/src/transport/TSocket.py b/lib/py/src/transport/TSocket.py
index 146820d..732dbd7 100644
--- a/lib/py/src/transport/TSocket.py
+++ b/lib/py/src/transport/TSocket.py
@@ -27,7 +27,7 @@
     self.handle = None
     self._unix_socket = unix_socket
     self._timeout = None
-    
+
   def setHandle(self, h):
     self.handle = h
 
@@ -39,7 +39,7 @@
       self._timeout = None
     else:
       self._timeout = ms/1000.0
-    
+
     if (self.handle != None):
       self.handle.settimeout(self._timeout)
 
@@ -48,7 +48,7 @@
       return [(socket.AF_UNIX, socket.SOCK_STREAM, None, None, self._unix_socket)]
     else:
       return socket.getaddrinfo(self.host, self.port, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE | socket.AI_ADDRCONFIG)
-    
+
   def open(self):
     try:
       res0 = self._resolveAddr()
