summaryrefslogtreecommitdiff
path: root/sqlparse/compat.py
diff options
context:
space:
mode:
authorAndi Albrecht <albrecht.andi@gmail.com>2015-10-26 07:43:44 +0100
committerAndi Albrecht <albrecht.andi@gmail.com>2015-10-26 07:43:44 +0100
commitfc5251bb05beac290c78a092e782630ed647f025 (patch)
treea6934e18005841144cfe7c3cfd7ccbd26054d900 /sqlparse/compat.py
parent16dd224127bf0f01b053367ff1c0327a0bad7cdb (diff)
downloadsqlparse-fc5251bb05beac290c78a092e782630ed647f025.tar.gz
Add compatibility module from v0.2.0 branch.
Diffstat (limited to 'sqlparse/compat.py')
-rw-r--r--sqlparse/compat.py42
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', (), {})