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(), @@ -1999,14 +1994,14 @@ def match( self, - str, + string, patterns, msg=None, trace=False, error=False, matching=True, exe=True): - """run command in str, and match the result against regexp in patterns returning the match object for the first matching pattern + """run command in string, and match the result against regexp in patterns returning the match object for the first matching pattern Otherwise, all the arguments have the same meanings as for the expect function""" @@ -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