summaryrefslogtreecommitdiff
path: root/sqlparse/compat.py
diff options
context:
space:
mode:
Diffstat (limited to 'sqlparse/compat.py')
-rw-r--r--sqlparse/compat.py39
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', (), {})