six is a Python module licensed under MIT which provides a compatibility layer between Python 2 and Python 3. You can read about it at the project's homepage, here. https://pypi.python.org/pypi/six
six consists of only a single python file, so it's very easy to drop into an existing project, works with any Python version >= 2.6, and is permissively licensed under MIT so should present no problem being in our repo.
The immediate need for this is that many modules and functions were either renamed or deleted in Python 3. A few examples of this:
Renamed modules:
StringIO -> io cPickle -> pickle Queue -> queue
Renamed methods, literal syntax, etc:
unichr -> chr u"foo" -> "foo" 0700 -> 0o700 # octal literal
There are other examples as well. If we have to these behind a runtime version check at every usage site, it's going to be ugly, error prone, and cause a maintenance burden. With six this becomes very transparent and should make it easy to have consistent behavior running under both supported versions of Python.
Note that this patch does not do anything to get six into lldb's site-packages folder or hook it up to anything. This CL is only to get approval for "yes you can add this to LLDB". Hooking it up will come later.