"""
Compatibility layer for Python 3/Python 2 single codebase
"""
import sys
PY3_OR_LATER = sys.version_info[0] >= 3
PY27 = sys.version_info[:2] == (2, 7)
try:
_basestring = basestring
_bytes_or_unicode = (str, unicode)
except NameError:
_basestring = str
_bytes_or_unicode = (bytes, str)
def with_metaclass(meta, *bases):
"""Create a base class with a metaclass."""
return meta("NewBase", bases, {})
# python2.7 error compatibility
if PY27:
class CompatFileExistsError(OSError):
pass
else:
CompatFileExistsError = FileExistsError