diff --git a/lldb/bindings/interface/SBData.i b/lldb/bindings/interface/SBData.i --- a/lldb/bindings/interface/SBData.i +++ b/lldb/bindings/interface/SBData.i @@ -157,7 +157,7 @@ for x in range(*key.indices(self.__len__())): list.append(self.__getitem__(x)) return list - if not (isinstance(key,six.integer_types)): + if not (isinstance(key, int)): raise TypeError('must be int') key = key * self.item_size # SBData uses byte-based indexes, but we want to use itemsize-based indexes here error = SBError() diff --git a/lldb/bindings/python/python.swig b/lldb/bindings/python/python.swig --- a/lldb/bindings/python/python.swig +++ b/lldb/bindings/python/python.swig @@ -84,8 +84,6 @@ import uuid import re import os - -import six %} // Include the version of swig that was used to generate this interface. diff --git a/lldb/examples/python/scripted_process/scripted_process.py b/lldb/examples/python/scripted_process/scripted_process.py --- a/lldb/examples/python/scripted_process/scripted_process.py +++ b/lldb/examples/python/scripted_process/scripted_process.py @@ -1,10 +1,8 @@ from abc import ABCMeta, abstractmethod -import six import lldb -@six.add_metaclass(ABCMeta) -class ScriptedProcess: +class ScriptedProcess(metaclass=ABCMeta): """ The base class for a scripted process. @@ -193,8 +191,7 @@ """ return None -@six.add_metaclass(ABCMeta) -class ScriptedThread: +class ScriptedThread(metaclass=ABCMeta): """ The base class for a scripted thread. diff --git a/lldb/examples/summaries/synth.py b/lldb/examples/summaries/synth.py --- a/lldb/examples/summaries/synth.py +++ b/lldb/examples/summaries/synth.py @@ -33,8 +33,7 @@ def gen_child(self, name, value): data = None type = None - import six - if isinstance(value, six.integer_types): + if isinstance(value, int): data = lldb.SBData.CreateDataFromUInt64Array( self.bo, self.ps, [value]) type = self.value.target.GetBasicType(lldb.eBasicTypeLong) diff --git a/lldb/packages/Python/lldbsuite/support/encoded_file.py b/lldb/packages/Python/lldbsuite/support/encoded_file.py --- a/lldb/packages/Python/lldbsuite/support/encoded_file.py +++ b/lldb/packages/Python/lldbsuite/support/encoded_file.py @@ -10,26 +10,12 @@ # Python modules: import io -# Third party modules -import six - - -def _encoded_read(old_read, encoding): - def impl(size): - result = old_read(size) - # If this is Python 2 then we need to convert the resulting `unicode` back - # into a `str` before returning - if six.PY2: - result = result.encode(encoding) - return result - return impl - def _encoded_write(old_write, encoding): def impl(s): - # If we were asked to write a `str` (in Py2) or a `bytes` (in Py3) decode it - # as unicode before attempting to write. - if isinstance(s, six.binary_type): + # If we were asked to write a `bytes` decode it as unicode before + # attempting to write. + if isinstance(s, bytes): s = s.decode(encoding, "replace") # Filter unreadable characters, Python 3 is stricter than python 2 about them. import re @@ -38,9 +24,8 @@ return impl ''' -Create a Text I/O file object that can be written to with either unicode strings or byte strings -under Python 2 and Python 3, and automatically encodes and decodes as necessary to return the -native string type for the current Python version +Create a Text I/O file object that can be written to with either unicode strings +or byte strings. ''' @@ -60,8 +45,6 @@ errors=errors, newline=newline, closefd=closefd) - new_read = _encoded_read(getattr(wrapped_file, 'read'), encoding) new_write = _encoded_write(getattr(wrapped_file, 'write'), encoding) - setattr(wrapped_file, 'read', new_read) setattr(wrapped_file, 'write', new_write) return wrapped_file diff --git a/lldb/packages/Python/lldbsuite/support/seven.py b/lldb/packages/Python/lldbsuite/support/seven.py --- a/lldb/packages/Python/lldbsuite/support/seven.py +++ b/lldb/packages/Python/lldbsuite/support/seven.py @@ -1,47 +1,31 @@ import binascii -import six import shlex +import subprocess -if six.PY2: - import commands - get_command_output = commands.getoutput - get_command_status_output = commands.getstatusoutput +def get_command_output(command): + try: + return subprocess.check_output( + command, + shell=True, + universal_newlines=True).rstrip() + except subprocess.CalledProcessError as e: + return e.output - cmp_ = cmp -else: - def get_command_status_output(command): - try: - import subprocess - return ( - 0, - subprocess.check_output( - command, - shell=True, - universal_newlines=True).rstrip()) - except subprocess.CalledProcessError as e: - return (e.returncode, e.output) - - def get_command_output(command): - return get_command_status_output(command)[1] - - cmp_ = lambda x, y: (x > y) - (x < y) - -def bitcast_to_string(b): +def bitcast_to_string(b: bytes) -> str: """ - Take a string(PY2) or a bytes(PY3) object and return a string. The returned - string contains the exact same bytes as the input object (latin1 <-> unicode - transformation is an identity operation for the first 256 code points). + Take a bytes object and return a string. The returned string contains the + exact same bytes as the input object. (latin1 <-> unicode transformation is + an identity operation for the first 256 code points). """ - return b if six.PY2 else b.decode("latin1") + return b.decode("latin1") -def bitcast_to_bytes(s): +def bitcast_to_bytes(s: str) -> bytes: """ - Take a string and return a string(PY2) or a bytes(PY3) object. The returned - object contains the exact same bytes as the input string. (latin1 <-> - unicode transformation is an identity operation for the first 256 code - points). + Take a string and return a bytes object. The returned object contains the + exact same bytes as the input string. (latin1 <-> unicode transformation isi + an identity operation for the first 256 code points). """ - return s if six.PY2 else s.encode("latin1") + return s.encode("latin1") def unhexlify(hexstr): """Hex-decode a string. The result is always a string.""" diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py b/lldb/packages/Python/lldbsuite/test/decorators.py --- a/lldb/packages/Python/lldbsuite/test/decorators.py +++ b/lldb/packages/Python/lldbsuite/test/decorators.py @@ -13,7 +13,6 @@ import subprocess # Third-party modules -import six import unittest2 # LLDB modules @@ -71,7 +70,6 @@ LooseVersion(expected_str)) -_re_pattern_type = type(re.compile('')) def _match_decorator_property(expected, actual): if expected is None: return True @@ -82,7 +80,7 @@ if isinstance(expected, no_match): return not _match_decorator_property(expected.item, actual) - if isinstance(expected, (_re_pattern_type,) + six.string_types): + if isinstance(expected, (re.Pattern, str)): return re.search(expected, actual) is not None if hasattr(expected, "__iter__"): @@ -131,7 +129,7 @@ # the first way, the first argument will be the actual function because decorators are # weird like that. So this is basically a check that says "which syntax was the original # function decorated with?" - if six.callable(bugnumber): + if callable(bugnumber): return expectedFailure_impl(bugnumber) else: return expectedFailure_impl @@ -162,7 +160,7 @@ # the first way, the first argument will be the actual function because decorators are # weird like that. So this is basically a check that says "how was the # decorator used" - if six.callable(bugnumber): + if callable(bugnumber): return skipTestIfFn_impl(bugnumber) else: return skipTestIfFn_impl @@ -249,7 +247,7 @@ mode_str, reason_str) else: reason_str = "{} unconditionally" - if bugnumber is not None and not six.callable(bugnumber): + if bugnumber is not None and not callable(bugnumber): reason_str = reason_str + " [" + str(bugnumber) + "]" return reason_str @@ -463,7 +461,7 @@ # the first way, the first argument will be the actual function because decorators are # weird like that. So this is basically a check that says "which syntax was the original # function decorated with?" - if six.callable(bugnumber): + if callable(bugnumber): return expectedFailure_impl(bugnumber) else: return expectedFailure_impl diff --git a/lldb/packages/Python/lldbsuite/test/dotest.py b/lldb/packages/Python/lldbsuite/test/dotest.py --- a/lldb/packages/Python/lldbsuite/test/dotest.py +++ b/lldb/packages/Python/lldbsuite/test/dotest.py @@ -36,7 +36,6 @@ import tempfile # Third-party modules -import six import unittest2 # LLDB Modules diff --git a/lldb/packages/Python/lldbsuite/test/lldbpexpect.py b/lldb/packages/Python/lldbsuite/test/lldbpexpect.py --- a/lldb/packages/Python/lldbsuite/test/lldbpexpect.py +++ b/lldb/packages/Python/lldbsuite/test/lldbpexpect.py @@ -4,9 +4,6 @@ import os import sys -# Third-party modules -import six - # LLDB Modules import lldb from .lldbtest import * @@ -72,7 +69,7 @@ self.assertNotIn('\n', cmd) # If 'substrs' is a string then this code would just check that every # character of the string is in the output. - assert not isinstance(substrs, six.string_types), \ + assert not isinstance(substrs, str), \ "substrs must be a collection of strings" self.child.sendline(cmd) diff --git a/lldb/packages/Python/lldbsuite/test/lldbplatform.py b/lldb/packages/Python/lldbsuite/test/lldbplatform.py --- a/lldb/packages/Python/lldbsuite/test/lldbplatform.py +++ b/lldb/packages/Python/lldbsuite/test/lldbplatform.py @@ -5,9 +5,6 @@ # System modules import itertools -# Third-party modules -import six - # LLDB modules import lldb @@ -39,10 +36,10 @@ def translate(values): - if isinstance(values, six.integer_types): + if isinstance(values, int): # This is a value from the platform enumeration, translate it. return __name_lookup[values] - elif isinstance(values, six.string_types): + elif isinstance(values, str): # This is a raw string, return it. return [values] elif hasattr(values, "__iter__"): diff --git a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py --- a/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py +++ b/lldb/packages/Python/lldbsuite/test/lldbplatformutil.py @@ -9,10 +9,7 @@ import subprocess import sys import os - -# Third-party modules -import six -from six.moves.urllib import parse as urlparse +from urllib.parse import urlparse # LLDB modules from . import configuration @@ -62,7 +59,7 @@ if not hasattr(android_device_api, 'result'): assert configuration.lldb_platform_url is not None device_id = None - parsed_url = urlparse.urlparse(configuration.lldb_platform_url) + parsed_url = urlparse(configuration.lldb_platform_url) host_name = parsed_url.netloc.split(":")[0] if host_name != 'localhost': device_id = host_name diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py --- a/lldb/packages/Python/lldbsuite/test/lldbtest.py +++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -48,9 +48,6 @@ # Third-party modules import unittest2 -from six import add_metaclass -from six import StringIO as SixStringIO -import six # LLDB modules import lldb @@ -320,7 +317,7 @@ child_error = "Checking child with index " + str(i) + ":\n" + error_msg expected_child.check_value(test_base, actual_child, child_error) -class recording(SixStringIO): +class recording(io.StringIO): """ A nice little context manager for recording the debugger interactions into our session object. If trace flag is ON, it also emits the interactions @@ -328,8 +325,8 @@ """ def __init__(self, test, trace): - """Create a SixStringIO instance; record the session obj and trace flag.""" - SixStringIO.__init__(self) + """Create a io.StringIO instance; record the session obj and trace flag.""" + io.StringIO.__init__(self) # The test might not have undergone the 'setUp(self)' phase yet, so that # the attribute 'session' might not even exist yet. self.session = getattr(test, "session", None) if test else None @@ -338,7 +335,7 @@ def __enter__(self): """ Context management protocol on entry to the body of the with statement. - Just return the SixStringIO object. + Just return the io.StringIO object. """ return self @@ -346,7 +343,7 @@ """ Context management protocol on exit from the body of the with statement. If trace is ON, it emits the recordings into stderr. Always add the - recordings to our session object. And close the SixStringIO object, too. + recordings to our session object. And close the io.StringIO object, too. """ if self.trace: print(self.getvalue(), file=sys.stderr) @@ -355,8 +352,7 @@ self.close() -@add_metaclass(abc.ABCMeta) -class _BaseProcess(object): +class _BaseProcess(object, metaclass=abc.ABCMeta): @abc.abstractproperty def pid(self): @@ -945,7 +941,7 @@ Hooks are executed in a first come first serve manner. """ - if six.callable(hook): + if callable(hook): with recording(self, traceAlways) as sbuf: print( "Adding tearDown hook:", @@ -1691,8 +1687,7 @@ # methods when a new class is loaded -@add_metaclass(LLDBTestCaseFactory) -class TestBase(Base): +class TestBase(Base, metaclass=LLDBTestCaseFactory): """ This abstract base class is meant to be subclassed. It provides default implementations for setUpClass(), tearDownClass(), setUp(), and tearDown(), @@ -2230,7 +2225,7 @@ def expect( self, - str, + string, msg=None, patterns=None, startstr=None, @@ -2264,9 +2259,9 @@ client is expecting the output of the command not to match the golden input. - Finally, the required argument 'str' represents the lldb command to be + Finally, the required argument 'string' represents the lldb command to be sent to the command interpreter. In case the keyword argument 'exe' is - set to False, the 'str' is treated as a string to be matched/not-matched + set to False, the 'string' is treated as a string to be matched/not-matched against the golden input. """ # Catch cases where `expect` has been miscalled. Specifically, prevent @@ -2280,9 +2275,9 @@ assert False, "expect() missing a matcher argument" # Check `patterns` and `substrs` are not accidentally given as strings. - assert not isinstance(patterns, six.string_types), \ + assert not isinstance(patterns, str), \ "patterns must be a collection of strings" - assert not isinstance(substrs, six.string_types), \ + assert not isinstance(substrs, str), \ "substrs must be a collection of strings" trace = (True if traceAlways else trace) @@ -2292,7 +2287,7 @@ # Pass the assert message along since it provides more semantic # info. self.runCmd( - str, + string, msg=msg, trace=( True if trace else False), @@ -2305,13 +2300,13 @@ # If error is True, the API client expects the command to fail! if error: self.assertFalse(self.res.Succeeded(), - "Command '" + str + "' is expected to fail!") + "Command '" + string + "' is expected to fail!") else: - # No execution required, just compare str against the golden input. - if isinstance(str, lldb.SBCommandReturnObject): - output = str.GetOutput() + # No execution required, just compare string against the golden input. + if isinstance(string, lldb.SBCommandReturnObject): + output = string.GetOutput() else: - output = str + output = string with recording(self, trace) as sbuf: print("looking at:", output, file=sbuf) @@ -2322,7 +2317,7 @@ # To be used as assert fail message and/or trace content log_lines = [ "{}:".format("Ran command" if exe else "Checking string"), - "\"{}\"".format(str), + "\"{}\"".format(string), # Space out command and output "", ] diff --git a/lldb/packages/Python/lldbsuite/test/lldbutil.py b/lldb/packages/Python/lldbsuite/test/lldbutil.py --- a/lldb/packages/Python/lldbsuite/test/lldbutil.py +++ b/lldb/packages/Python/lldbsuite/test/lldbutil.py @@ -9,16 +9,13 @@ # System modules import errno +import io import os import re import sys import subprocess from typing import Dict -# Third-party modules -from six import StringIO as SixStringIO -import six - # LLDB modules import lldb from . import lldbtest_config @@ -111,7 +108,7 @@ It returns the disassembly content in a string object. """ - buf = SixStringIO() + buf = io.StringIO() insts = function_or_symbol.GetInstructions(target) for i in insts: print(i, file=buf) @@ -1080,7 +1077,7 @@ def print_stacktrace(thread, string_buffer=False): """Prints a simple stack trace of this thread.""" - output = SixStringIO() if string_buffer else sys.stdout + output = io.StringIO() if string_buffer else sys.stdout target = thread.GetProcess().GetTarget() depth = thread.GetNumFrames() @@ -1142,7 +1139,7 @@ def print_stacktraces(process, string_buffer=False): """Prints the stack traces of all the threads.""" - output = SixStringIO() if string_buffer else sys.stdout + output = io.StringIO() if string_buffer else sys.stdout print("Stack traces for " + str(process), file=output) @@ -1258,7 +1255,7 @@ def print_registers(frame, string_buffer=False): """Prints all the register sets of the frame.""" - output = SixStringIO() if string_buffer else sys.stdout + output = io.StringIO() if string_buffer else sys.stdout print("Register sets for " + str(frame), file=output) @@ -1344,7 +1341,7 @@ def format(self, value, buffer=None, indent=0): if not buffer: - output = SixStringIO() + output = io.StringIO() else: output = buffer # If there is a summary, it suffices. @@ -1374,7 +1371,7 @@ def format(self, value, buffer=None): if not buffer: - output = SixStringIO() + output = io.StringIO() else: output = buffer @@ -1401,7 +1398,7 @@ def format(self, value, buffer=None): if not buffer: - output = SixStringIO() + output = io.StringIO() else: output = buffer @@ -1511,7 +1508,7 @@ def skip_if_callable(test, mycallable, reason): - if six.callable(mycallable): + if callable(mycallable): if mycallable(test): test.skipTest(reason) return True diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/gdbremote_testcase.py @@ -59,8 +59,7 @@ return super(GdbRemoteTestCaseFactory, cls).__new__( cls, name, bases, newattrs) -@add_metaclass(GdbRemoteTestCaseFactory) -class GdbRemoteTestCaseBase(Base): +class GdbRemoteTestCaseBase(Base, metaclass=GdbRemoteTestCaseFactory): # Default time out in seconds. The timeout is increased tenfold under Asan. DEFAULT_TIMEOUT = 20 * (10 if ('ASAN_OPTIONS' in os.environ) else 1) diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/lldbgdbserverutils.py b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/lldbgdbserverutils.py --- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/lldbgdbserverutils.py +++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/lldbgdbserverutils.py @@ -8,7 +8,6 @@ import os.path import platform import re -import six import socket import subprocess from lldbsuite.support import seven @@ -803,7 +802,7 @@ If we don't know how to check running process ids on the given OS: return the value provided by the unknown_value arg. """ - if not isinstance(pid, six.integer_types): + if not isinstance(pid, int): raise Exception( "pid must be an integral type (actual type: %s)" % str( type(pid))) @@ -878,7 +877,7 @@ @staticmethod def _checksum(packet): checksum = 0 - for c in six.iterbytes(packet): + for c in iter(packet): checksum += c return checksum % 256 diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp --- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -429,7 +429,7 @@ // Reloading modules requires a different syntax in Python 2 and Python 3. // This provides a consistent syntax no matter what version of Python. run_string.Clear(); - run_string.Printf("run_one_line (%s, 'from six.moves import reload_module')", + run_string.Printf("run_one_line (%s, 'from importlib import reload as reload_module')", m_dictionary_name.c_str()); PyRun_SimpleString(run_string.GetData()); diff --git a/lldb/test/API/api/listeners/TestListener.py b/lldb/test/API/api/listeners/TestListener.py --- a/lldb/test/API/api/listeners/TestListener.py +++ b/lldb/test/API/api/listeners/TestListener.py @@ -7,8 +7,6 @@ from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil -import six - class ListenToModuleLoadedEvents (TestBase): NO_DEBUG_INFO_TESTCASE = True diff --git a/lldb/test/API/commands/command/script/import/thepackage/TPunitA.py b/lldb/test/API/commands/command/script/import/thepackage/TPunitA.py --- a/lldb/test/API/commands/command/script/import/thepackage/TPunitA.py +++ b/lldb/test/API/commands/command/script/import/thepackage/TPunitA.py @@ -1,7 +1,3 @@ - -import six - - def command(debugger, command, result, internal_dict): - result.PutCString(six.u("hello world A")) + result.PutCString("hello world A") return None diff --git a/lldb/test/API/commands/command/script/import/thepackage/TPunitB.py b/lldb/test/API/commands/command/script/import/thepackage/TPunitB.py --- a/lldb/test/API/commands/command/script/import/thepackage/TPunitB.py +++ b/lldb/test/API/commands/command/script/import/thepackage/TPunitB.py @@ -1,7 +1,3 @@ - -import six - - def command(debugger, command, result, internal_dict): - result.PutCString(six.u("hello world B")) + result.PutCString("hello world B") return None diff --git a/lldb/test/API/commands/process/launch/TestProcessLaunch.py b/lldb/test/API/commands/process/launch/TestProcessLaunch.py --- a/lldb/test/API/commands/process/launch/TestProcessLaunch.py +++ b/lldb/test/API/commands/process/launch/TestProcessLaunch.py @@ -11,8 +11,6 @@ from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil -import six - class ProcessLaunchTestCase(TestBase): NO_DEBUG_INFO_TESTCASE = True diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGdbClientModuleLoad.py b/lldb/test/API/functionalities/gdb_remote_client/TestGdbClientModuleLoad.py --- a/lldb/test/API/functionalities/gdb_remote_client/TestGdbClientModuleLoad.py +++ b/lldb/test/API/functionalities/gdb_remote_client/TestGdbClientModuleLoad.py @@ -3,7 +3,6 @@ from lldbsuite.test.decorators import * from lldbsuite.test.gdbclientutils import * from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase -from lldbsuite.support import seven class MyResponder(MockGDBServerResponder): """ diff --git a/lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpNew.py b/lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpNew.py --- a/lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpNew.py +++ b/lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpNew.py @@ -2,8 +2,6 @@ Test basics of Minidump debugging. """ -from six import iteritems - import shutil import lldb @@ -327,7 +325,7 @@ expected_stack = {1: 'bar', 2: 'foo', 3: '_start'} self.assertGreaterEqual(thread.GetNumFrames(), len(expected_stack)) - for index, name in iteritems(expected_stack): + for index, name in expected_stack.items(): frame = thread.GetFrameAtIndex(index) self.assertTrue(frame.IsValid()) function_name = frame.GetFunctionName() diff --git a/lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpUUID.py b/lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpUUID.py --- a/lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpUUID.py +++ b/lldb/test/API/functionalities/postmortem/minidump-new/TestMiniDumpUUID.py @@ -2,9 +2,6 @@ Test basics of Minidump debugging. """ -from six import iteritems - - import lldb import os from lldbsuite.test.decorators import * diff --git a/lldb/test/API/functionalities/postmortem/minidump/TestMiniDump.py b/lldb/test/API/functionalities/postmortem/minidump/TestMiniDump.py --- a/lldb/test/API/functionalities/postmortem/minidump/TestMiniDump.py +++ b/lldb/test/API/functionalities/postmortem/minidump/TestMiniDump.py @@ -2,9 +2,6 @@ Test basics of mini dump debugging. """ -from six import iteritems - - import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -130,7 +127,7 @@ expected_stack = {0: 'bar', 1: 'foo', 2: 'main'} self.assertGreaterEqual(thread.GetNumFrames(), len(expected_stack)) - for index, name in iteritems(expected_stack): + for index, name in expected_stack.items(): frame = thread.GetFrameAtIndex(index) self.assertTrue(frame.IsValid()) function_name = frame.GetFunctionName() diff --git a/lldb/test/API/functionalities/postmortem/wow64_minidump/TestWow64MiniDump.py b/lldb/test/API/functionalities/postmortem/wow64_minidump/TestWow64MiniDump.py --- a/lldb/test/API/functionalities/postmortem/wow64_minidump/TestWow64MiniDump.py +++ b/lldb/test/API/functionalities/postmortem/wow64_minidump/TestWow64MiniDump.py @@ -7,9 +7,6 @@ get the 32-bit register contexts. """ -from six import iteritems - - import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * diff --git a/lldb/test/API/python_api/frame/TestFrames.py b/lldb/test/API/python_api/frame/TestFrames.py --- a/lldb/test/API/python_api/frame/TestFrames.py +++ b/lldb/test/API/python_api/frame/TestFrames.py @@ -5,6 +5,7 @@ from __future__ import print_function +import io import lldb from lldbsuite.test.decorators import * @@ -42,8 +43,7 @@ # depth of 3 of the 'c' leaf function. callsOfA = 0 - from six import StringIO as SixStringIO - session = SixStringIO() + session = io.StringIO() while process.GetState() == lldb.eStateStopped: thread = lldbutil.get_stopped_thread( process, lldb.eStopReasonBreakpoint) diff --git a/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py b/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py --- a/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py +++ b/lldb/test/API/terminal/TestSTTYBeforeAndAfter.py @@ -6,7 +6,7 @@ import lldb -import six +import io import sys from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -57,8 +57,8 @@ child.expect(expect_prompt) # Turn on loggings for input/output to/from the child. - child.logfile_send = child_send1 = six.StringIO() - child.logfile_read = child_read1 = six.StringIO() + child.logfile_send = child_send1 = io.StringIO() + child.logfile_read = child_read1 = io.StringIO() child.sendline('stty -a') child.expect(expect_prompt) @@ -75,8 +75,8 @@ child.sendline('quit') child.expect(expect_prompt) - child.logfile_send = child_send2 = six.StringIO() - child.logfile_read = child_read2 = six.StringIO() + child.logfile_send = child_send2 = io.StringIO() + child.logfile_read = child_read2 = io.StringIO() child.sendline('stty -a') child.expect(expect_prompt) diff --git a/lldb/test/API/test_utils/base/TestBaseTest.py b/lldb/test/API/test_utils/base/TestBaseTest.py --- a/lldb/test/API/test_utils/base/TestBaseTest.py +++ b/lldb/test/API/test_utils/base/TestBaseTest.py @@ -2,9 +2,10 @@ Test TestBase test functions. """ +import io + from lldbsuite.test.lldbtest import * from lldbsuite.test_event import build_exception -import six class TestBuildMethod(Base): @@ -15,9 +16,9 @@ # override the parent trace method def trace(self, *args, **kwargs): - io = six.StringIO() - print(*args, file=io, **kwargs) - self._traces.append(io.getvalue()) + buf = io.StringIO() + print(*args, file=buf, **kwargs) + self._traces.append(buf.getvalue()) def test_build_fails_helpfully(self): try: diff --git a/lldb/third_party/Python/module/progress/progress.py b/lldb/third_party/Python/module/progress/progress.py --- a/lldb/third_party/Python/module/progress/progress.py +++ b/lldb/third_party/Python/module/progress/progress.py @@ -3,7 +3,6 @@ from __future__ import print_function import use_lldb_suite -import six import sys import time @@ -21,17 +20,17 @@ format Format incremental """ - light_block = six.unichr(0x2591).encode("utf-8") - solid_block = six.unichr(0x2588).encode("utf-8") - solid_right_arrow = six.unichr(0x25BA).encode("utf-8") + light_block = chr(0x2591).encode("utf-8") + solid_block = chr(0x2588).encode("utf-8") + solid_right_arrow = chr(0x25BA).encode("utf-8") def __init__(self, start=0, end=10, width=12, - fill=six.unichr(0x25C9).encode("utf-8"), - blank=six.unichr(0x25CC).encode("utf-8"), - marker=six.unichr(0x25CE).encode("utf-8"), + fill=chr(0x25C9).encode("utf-8"), + blank=chr(0x25CC).encode("utf-8"), + marker=chr(0x25CE).encode("utf-8"), format='[%(fill)s%(marker)s%(blank)s] %(progress)s%%', incremental=True): super(ProgressBar, self).__init__() @@ -91,9 +90,9 @@ start=0, end=10, width=12, - fill=six.unichr(0x25C9).encode("utf-8"), - blank=six.unichr(0x25CC).encode("utf-8"), - marker=six.unichr(0x25CE).encode("utf-8"), + fill=chr(0x25C9).encode("utf-8"), + blank=chr(0x25CC).encode("utf-8"), + marker=chr(0x25CE).encode("utf-8"), format='[%(fill)s%(marker)s%(blank)s] %(progress)s%%', incremental=True, stdout=sys.stdout): @@ -129,9 +128,9 @@ start=0, end=10, width=12, - fill=six.unichr(0x25C9).encode("utf-8"), - blank=six.unichr(0x25CC).encode("utf-8"), - marker=six.unichr(0x25CE).encode("utf-8"), + fill=chr(0x25C9).encode("utf-8"), + blank=chr(0x25CC).encode("utf-8"), + marker=chr(0x25CE).encode("utf-8"), format='[%(fill)s%(marker)s%(blank)s] %(progress)s%%', incremental=True, stdout=sys.stdout): diff --git a/lldb/third_party/Python/module/unittest2/unittest2/case.py b/lldb/third_party/Python/module/unittest2/unittest2/case.py --- a/lldb/third_party/Python/module/unittest2/unittest2/case.py +++ b/lldb/third_party/Python/module/unittest2/unittest2/case.py @@ -7,8 +7,6 @@ import unittest import warnings -import six - from unittest2 import result from unittest2.util import ( safe_repr, safe_str, strclass, @@ -153,7 +151,7 @@ return True expected_regexp = self.expected_regexp - if isinstance(expected_regexp, six.string_types): + if isinstance(expected_regexp, str): expected_regexp = re.compile(expected_regexp) if not expected_regexp.search(str(exc_value)): raise self.failureException( @@ -173,7 +171,7 @@ def __getitem__(self, key): value = self._store[key] - if isinstance(value, six.string_types): + if isinstance(value, str): return getattr(self.testcase, value) return value @@ -251,10 +249,7 @@ self.addTypeEqualityFunc(tuple, 'assertTupleEqual') self.addTypeEqualityFunc(set, 'assertSetEqual') self.addTypeEqualityFunc(frozenset, 'assertSetEqual') - if six.PY2: - self.addTypeEqualityFunc(unicode, 'assertMultiLineEqual') - else: - self.addTypeEqualityFunc(str, 'assertMultiLineEqual') + self.addTypeEqualityFunc(str, 'assertMultiLineEqual') def addTypeEqualityFunc(self, typeobj, function): """Add a type specific assertEqual style function to compare a type. @@ -993,9 +988,9 @@ def assertMultiLineEqual(self, first, second, msg=None): """Assert that two multi-line strings are equal.""" - self.assert_(isinstance(first, six.string_types), ( + self.assert_(isinstance(first, str), ( 'First argument is not a string')) - self.assert_(isinstance(second, six.string_types), ( + self.assert_(isinstance(second, str), ( 'Second argument is not a string')) if first != second: @@ -1076,7 +1071,7 @@ try: callable_obj(*args, **kwargs) except expected_exception as exc_value: - if isinstance(expected_regexp, six.string_types): + if isinstance(expected_regexp, str): expected_regexp = re.compile(expected_regexp) if not expected_regexp.search(str(exc_value)): raise self.failureException( @@ -1091,7 +1086,7 @@ def assertRegexpMatches(self, text, expected_regexp, msg=None): """Fail the test unless the text matches the regular expression.""" - if isinstance(expected_regexp, six.string_types): + if isinstance(expected_regexp, str): expected_regexp = re.compile(expected_regexp) if not expected_regexp.search(text): msg = msg or "Regexp didn't match" @@ -1101,7 +1096,7 @@ def assertNotRegexpMatches(self, text, unexpected_regexp, msg=None): """Fail the test if the text matches the regular expression.""" - if isinstance(unexpected_regexp, six.string_types): + if isinstance(unexpected_regexp, str): unexpected_regexp = re.compile(unexpected_regexp) match = unexpected_regexp.search(text) if match: diff --git a/lldb/third_party/Python/module/unittest2/unittest2/main.py b/lldb/third_party/Python/module/unittest2/unittest2/main.py --- a/lldb/third_party/Python/module/unittest2/unittest2/main.py +++ b/lldb/third_party/Python/module/unittest2/unittest2/main.py @@ -3,7 +3,6 @@ import sys import os import types -import six from unittest2 import loader, runner try: @@ -77,7 +76,7 @@ argv=None, testRunner=None, testLoader=loader.defaultTestLoader, exit=True, verbosity=1, failfast=None, catchbreak=None, buffer=None): - if isinstance(module, six.string_types): + if isinstance(module, str): self.module = __import__(module) for part in module.split('.')[1:]: self.module = getattr(self.module, part) diff --git a/lldb/third_party/Python/module/unittest2/unittest2/result.py b/lldb/third_party/Python/module/unittest2/unittest2/result.py --- a/lldb/third_party/Python/module/unittest2/unittest2/result.py +++ b/lldb/third_party/Python/module/unittest2/unittest2/result.py @@ -2,12 +2,11 @@ import use_lldb_suite +import io import sys import traceback import unittest -from six import StringIO as SixStringIO - from unittest2 import util from unittest2.compatibility import wraps @@ -65,8 +64,8 @@ self._mirrorOutput = False if self.buffer: if self._stderr_buffer is None: - self._stderr_buffer = SixStringIO() - self._stdout_buffer = SixStringIO() + self._stderr_buffer = io.StringIO() + self._stdout_buffer = io.StringIO() sys.stdout = self._stdout_buffer sys.stderr = self._stderr_buffer diff --git a/lldb/third_party/Python/module/unittest2/unittest2/suite.py b/lldb/third_party/Python/module/unittest2/unittest2/suite.py --- a/lldb/third_party/Python/module/unittest2/unittest2/suite.py +++ b/lldb/third_party/Python/module/unittest2/unittest2/suite.py @@ -3,7 +3,6 @@ import sys import unittest from unittest2 import case, util -import six __unittest = True @@ -50,7 +49,7 @@ self._tests.append(test) def addTests(self, tests): - if isinstance(tests, six.string_types): + if isinstance(tests, str): raise TypeError("tests must be an iterable of tests, not a string") for test in tests: self.addTest(test) diff --git a/lldb/third_party/Python/module/unittest2/unittest2/test/test_case.py b/lldb/third_party/Python/module/unittest2/unittest2/test/test_case.py --- a/lldb/third_party/Python/module/unittest2/unittest2/test/test_case.py +++ b/lldb/third_party/Python/module/unittest2/unittest2/test/test_case.py @@ -1,7 +1,6 @@ import difflib import pprint import re -import six from copy import deepcopy @@ -543,7 +542,7 @@ def runTest(self): pass - self.assertIsInstance(Foo().id(), six.string_types) + self.assertIsInstance(Foo().id(), str) # "If result is omitted or None, a temporary result object is created # and used, but is not made available to the caller. As TestCase owns the diff --git a/lldb/third_party/Python/module/unittest2/unittest2/test/test_functiontestcase.py b/lldb/third_party/Python/module/unittest2/unittest2/test/test_functiontestcase.py --- a/lldb/third_party/Python/module/unittest2/unittest2/test/test_functiontestcase.py +++ b/lldb/third_party/Python/module/unittest2/unittest2/test/test_functiontestcase.py @@ -1,5 +1,4 @@ import unittest2 -import six from unittest2.test.support import LoggingResult @@ -125,7 +124,7 @@ def test_id(self): test = unittest2.FunctionTestCase(lambda: None) - self.assertIsInstance(test.id(), six.string_types) + self.assertIsInstance(test.id(), str) # "Returns a one-line description of the test, or None if no description # has been provided. The default implementation of this method returns