aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSerge Guelton <sguelton@quarkslab.com>2019-01-03 14:26:56 +0000
committerSerge Guelton <sguelton@quarkslab.com>2019-01-03 14:26:56 +0000
commitf886c03e47092d1fad1998df0ddfcffa9e8c3d48 (patch)
tree98f9c815fbac0aea0362bfd246e40b8a54796871
parentd23e9bc5af0220c049d841acf219e2158f7004b8 (diff)
Portable Python script across Python version
StringIO is obsoleted in Python3, replaced by io.BytesIO or io.StringIO depending on the use. Differential Revision: https://reviews.llvm.org/D55196 llvm-svn: 350318
-rw-r--r--clang/bindings/python/tests/cindex/test_translation_unit.py7
-rwxr-xr-xclang/tools/clang-format/clang-format-diff.py9
-rw-r--r--clang/tools/scan-view/share/ScanView.py16
3 files changed, 20 insertions, 12 deletions
diff --git a/clang/bindings/python/tests/cindex/test_translation_unit.py b/clang/bindings/python/tests/cindex/test_translation_unit.py
index b3075eb85de1..f3e770a93611 100644
--- a/clang/bindings/python/tests/cindex/test_translation_unit.py
+++ b/clang/bindings/python/tests/cindex/test_translation_unit.py
@@ -6,6 +6,7 @@ if 'CLANG_LIBRARY_PATH' in os.environ:
from contextlib import contextmanager
import gc
import os
+import sys
import tempfile
import unittest
@@ -93,10 +94,10 @@ int SOME_DEFINE;
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()]
diff --git a/clang/tools/clang-format/clang-format-diff.py b/clang/tools/clang-format/clang-format-diff.py
index 54347ce7593a..d6d351041611 100755
--- a/clang/tools/clang-format/clang-format-diff.py
+++ b/clang/tools/clang-format/clang-format-diff.py
@@ -28,10 +28,11 @@ import difflib
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():
diff --git a/clang/tools/scan-view/share/ScanView.py b/clang/tools/scan-view/share/ScanView.py
index da30f3618747..c40366b2e849 100644
--- a/clang/tools/scan-view/share/ScanView.py
+++ b/clang/tools/scan-view/share/ScanView.py
@@ -13,7 +13,12 @@ except ImportError:
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 @@ class ReporterThread(threading.Thread):
except Reporter.ReportFailure as e:
self.status = e.value
except Exception as e:
- s = StringIO.StringIO()
+ s = StringIO()
import traceback
print('<b>Unhandled Exception</b><br><pre>', file=s)
traceback.print_exc(file=s)
@@ -275,7 +280,7 @@ class ScanViewRequestHandler(SimpleHTTPRequestHandler):
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 @@ File Bug</h3>
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.