diff options
Diffstat (limited to 'sqlparse/compat.py')
-rw-r--r-- | sqlparse/compat.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/sqlparse/compat.py b/sqlparse/compat.py new file mode 100644 index 0000000..1849c13 --- /dev/null +++ b/sqlparse/compat.py @@ -0,0 +1,39 @@ +"""Python 2/3 compatibility. + +This module only exists to avoid a dependency on six +for very trivial stuff. We only need to take care regarding +string types and buffers. +""" + +import sys + +PY2 = sys.version_info[0] == 2 +PY3 = sys.version_info[0] == 3 + +if PY3: + text_type = str + string_types = (str,) + from io import StringIO + + def u(s): + return s + +elif PY2: + text_type = unicode + string_types = (basestring,) + from StringIO import StringIO # flake8: noqa + + def u(s): + return unicode(s, 'unicode_escape') + + +# Directly copied from six: +def with_metaclass(meta, *bases): + """Create a base class with a metaclass.""" + # This requires a bit of explanation: the basic idea is to make a dummy + # metaclass for one level of class instantiation that replaces itself with + # the actual metaclass. + class metaclass(meta): + def __new__(cls, name, this_bases, d): + return meta(name, bases, d) + return type.__new__(metaclass, 'temporary_class', (), {}) |