Index: bindings/python/tests/cindex/test_translation_unit.py
===================================================================
--- bindings/python/tests/cindex/test_translation_unit.py
+++ bindings/python/tests/cindex/test_translation_unit.py
@@ -93,12 +93,9 @@
self.assertEqual(spellings[-1], 'y')
def test_unsaved_files_2(self):
- try:
- from StringIO import StringIO
- except:
- from io import StringIO
+ from io import BytesIO
tu = TranslationUnit.from_source('fake.c', unsaved_files = [
- ('fake.c', StringIO('int x;'))])
+ ('fake.c', BytesIO('int x;'))])
spellings = [c.spelling for c in tu.cursor.get_children()]
self.assertEqual(spellings[-1], 'x')
Index: tools/clang-format/clang-format-diff.py
===================================================================
--- tools/clang-format/clang-format-diff.py
+++ 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: tools/scan-view/share/ScanView.py
===================================================================
--- tools/scan-view/share/ScanView.py
+++ 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,12 +280,12 @@ 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') if f: - self.copyfile(f, self.wfile) + self.copyfile(BytesIO(f.getvalue().encode()), self.wfile) f.close() def get_scalar_field(self, name): @@ -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.