"""Python 2/3 compatibility definitions. These are used by the rest of Elpy to keep compatibility definitions in one place. """ import sys if sys.version_info >= (3, 0): PYTHON3 = True from io import StringIO def ensure_not_unicode(obj): return obj else: PYTHON3 = False from StringIO import StringIO # noqa def ensure_not_unicode(obj): """Return obj. If it's a unicode string, convert it to str first. Pydoc functions simply don't find anything for unicode strings. No idea why. """ if isinstance(obj, unicode): return obj.encode("utf-8") else: return obj