Index: cfe/trunk/bindings/python/tests/cindex/test_translation_unit.py =================================================================== --- cfe/trunk/bindings/python/tests/cindex/test_translation_unit.py +++ cfe/trunk/bindings/python/tests/cindex/test_translation_unit.py @@ -6,6 +6,7 @@ from contextlib import contextmanager import gc import os +import sys import tempfile import unittest @@ -93,10 +94,10 @@ self.assertEqual(spellings[-1], 'y') def test_unsaved_files_2(self): - try: - from StringIO import StringIO - except: + if sys.version_info.major >= 3: from io import StringIO + else: + from io import BytesIO as StringIO tu = TranslationUnit.from_source('fake.c', unsaved_files = [ ('fake.c', StringIO('int x;'))]) spellings = [c.spelling for c in tu.cursor.get_children()] Index: cfe/trunk/tools/clang-format/clang-format-diff.py =================================================================== --- cfe/trunk/tools/clang-format/clang-format-diff.py +++ cfe/trunk/tools/clang-format/clang-format-diff.py @@ -28,10 +28,11 @@ import re import subprocess import sys -try: - from StringIO import StringIO -except ImportError: - from io import StringIO + +if sys.version_info.major >= 3: + from io import StringIO +else: + from io import BytesIO as StringIO def main(): Index: cfe/trunk/tools/scan-view/share/ScanView.py =================================================================== --- cfe/trunk/tools/scan-view/share/ScanView.py +++ cfe/trunk/tools/scan-view/share/ScanView.py @@ -13,7 +13,12 @@ from urllib.parse import urlparse, unquote import posixpath -import StringIO + +if sys.version_info.major >= 3: + from io import StringIO, BytesIO +else: + from io import BytesIO, BytesIO as StringIO + import re import shutil import threading @@ -117,7 +122,7 @@ except Reporter.ReportFailure as e: self.status = e.value except Exception as e: - s = StringIO.StringIO() + s = StringIO() import traceback print('Unhandled Exception
', file=s)
             traceback.print_exc(file=s)
@@ -275,7 +280,7 @@
 
     def handle_exception(self, exc):
         import traceback
-        s = StringIO.StringIO()
+        s = StringIO()
         print("INTERNAL ERROR\n", file=s)
         traceback.print_exc(file=s)
         f = self.send_string(s.getvalue(), 'text/plain')
@@ -739,15 +744,16 @@
         return f
 
     def send_string(self, s, ctype='text/html', headers=True, mtime=None):
+        encoded_s = s.encode()
         if headers:
             self.send_response(200)
             self.send_header("Content-type", ctype)
-            self.send_header("Content-Length", str(len(s)))
+            self.send_header("Content-Length", str(len(encoded_s)))
             if mtime is None:
                 mtime = self.dynamic_mtime
             self.send_header("Last-Modified", self.date_time_string(mtime))
             self.end_headers()
-        return StringIO.StringIO(s)
+        return BytesIO(encoded_s)
 
     def send_patched_file(self, path, ctype):
         # Allow a very limited set of variables. This is pretty gross.