diff options
author | Andi Albrecht <albrecht.andi@gmail.com> | 2015-10-26 07:43:44 +0100 |
---|---|---|
committer | Andi Albrecht <albrecht.andi@gmail.com> | 2015-10-26 07:43:44 +0100 |
commit | fc5251bb05beac290c78a092e782630ed647f025 (patch) | |
tree | a6934e18005841144cfe7c3cfd7ccbd26054d900 /sqlparse/compat.py | |
parent | 16dd224127bf0f01b053367ff1c0327a0bad7cdb (diff) | |
download | sqlparse-fc5251bb05beac290c78a092e782630ed647f025.tar.gz |
Add compatibility module from v0.2.0 branch.
Diffstat (limited to 'sqlparse/compat.py')
-rw-r--r-- | sqlparse/compat.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/sqlparse/compat.py b/sqlparse/compat.py new file mode 100644 index 0000000..9efae26 --- /dev/null +++ b/sqlparse/compat.py @@ -0,0 +1,42 @@ +"""Python 2/3 compatibility. + +This module only exists to avoid a dependency on six +for very trivial stuff. We only need to take care of +string types, buffers and metaclasses. + +Parts of the code is copied directly from six: +https://bitbucket.org/gutworth/six +""" + +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', (), {}) |