Cleanup for stow ---STOW
[dotfiles/.git] / .local / lib / python2.7 / site-packages / pynvim / compat.py
diff --git a/.local/lib/python2.7/site-packages/pynvim/compat.py b/.local/lib/python2.7/site-packages/pynvim/compat.py
new file mode 100644 (file)
index 0000000..01e45db
--- /dev/null
@@ -0,0 +1,57 @@
+"""Code for compatibility across Python versions."""
+
+import sys
+import warnings
+from imp import find_module as original_find_module
+
+
+IS_PYTHON3 = sys.version_info >= (3, 0)
+
+
+if IS_PYTHON3:
+    def find_module(fullname, path):
+        """Compatibility wrapper for imp.find_module.
+
+        Automatically decodes arguments of find_module, in Python3
+        they must be Unicode
+        """
+        if isinstance(fullname, bytes):
+            fullname = fullname.decode()
+        if isinstance(path, bytes):
+            path = path.decode()
+        elif isinstance(path, list):
+            newpath = []
+            for element in path:
+                if isinstance(element, bytes):
+                    newpath.append(element.decode())
+                else:
+                    newpath.append(element)
+            path = newpath
+        return original_find_module(fullname, path)
+
+    # There is no 'long' type in Python3 just int
+    long = int
+    unicode_errors_default = 'surrogateescape'
+else:
+    find_module = original_find_module
+    unicode_errors_default = 'ignore'
+
+NUM_TYPES = (int, long, float)
+
+
+def check_async(async_, kwargs, default):
+    """Return a value of 'async' in kwargs or default when async_ is None.
+
+    This helper function exists for backward compatibility (See #274).
+    It shows a warning message when 'async' in kwargs is used to note users.
+    """
+    if async_ is not None:
+        return async_
+    elif 'async' in kwargs:
+        warnings.warn(
+            '"async" attribute is deprecated. Use "async_" instead.',
+            DeprecationWarning,
+        )
+        return kwargs.pop('async')
+    else:
+        return default