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
This commit is contained in:
parent
d23e9bc5af
commit
f886c03e47
|
@ -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()]
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue