From 7704098950e2330122e0933f44f700bca988a307 Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Mon, 9 Oct 2023 21:36:57 -0400 Subject: [PATCH] python3-neovim: patch for 3.12 --- .../python3-neovim/patches/python3.12.patch | 105 ++++++++++++++++++ srcpkgs/python3-neovim/template | 2 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/python3-neovim/patches/python3.12.patch diff --git a/srcpkgs/python3-neovim/patches/python3.12.patch b/srcpkgs/python3-neovim/patches/python3.12.patch new file mode 100644 index 00000000000..1e5c6c43dee --- /dev/null +++ b/srcpkgs/python3-neovim/patches/python3.12.patch @@ -0,0 +1,105 @@ +backport of: +https://github.com/neovim/pynvim/commit/eaa862dec340cad523a691d6441e890b800f8b65 +https://github.com/neovim/pynvim/commit/919217d9211adabd7fd57085657096a5060aece4 +https://github.com/neovim/pynvim/commit/dd540b08e1a13c89557aa91a122ca6fbc9dfe2ef + +--- a/pynvim/compat.py ++++ b/pynvim/compat.py +@@ -2,7 +2,6 @@ + + import sys + import warnings +-from imp import find_module as original_find_module + + + IS_PYTHON3 = sys.version_info >= (3, 0) +@@ -27,6 +26,8 @@ + else: + newpath.append(element) + path = newpath ++ ++ from imp import find_module as original_find_module + return original_find_module(fullname, path) + + # There is no 'long' type in Python3 just int +--- a/pynvim/plugin/script_host.py ++++ b/pynvim/plugin/script_host.py +@@ -1,5 +1,4 @@ + """Legacy python/python3-vim emulation.""" +-import imp + import io + import logging + import os +@@ -214,6 +213,7 @@ + return discover_runtime_directories(nvim) + + def _find_module(fullname, oldtail, path): ++ import imp + idx = oldtail.find('.') + if idx > 0: + name = oldtail[:idx] +@@ -234,6 +234,7 @@ + return sys.modules[fullname] + except KeyError: + pass ++ import imp + return imp.load_module(fullname, *self.module) + + class VimPathFinder(object): +--- a/pynvim/plugin/host.py ++++ b/pynvim/plugin/host.py +@@ -1,5 +1,4 @@ + """Implements a Nvim host for python plugins.""" +-import imp + import inspect + import logging + import os +@@ -9,7 +8,7 @@ + from traceback import format_exc + + from pynvim.api import decode_if_bytes, walk +-from pynvim.compat import IS_PYTHON3, find_module ++from pynvim.compat import IS_PYTHON3 + from pynvim.msgpack_rpc import ErrorResponse + from pynvim.plugin import script_host + from pynvim.util import format_exc_skip, get_client_info +@@ -23,6 +22,26 @@ + host_method_spec = {"poll": {}, "specs": {"nargs": 1}, "shutdown": {}} + + ++def handle_import(directory, name): ++ """Import a python file given a known location. ++ Currently works on both python2 or 3. ++ """ ++ try: # Python3 ++ from importlib.util import module_from_spec, spec_from_file_location ++ except ImportError: # Python2.7 ++ import imp ++ from pynvim.compat import find_module ++ file, pathname, descr = find_module(name, [directory]) ++ module = imp.load_module(name, file, pathname, descr) ++ return module ++ else: ++ spec = spec_from_file_location(name, location=directory) ++ if spec is not None: ++ return module_from_spec(spec) ++ else: ++ raise ImportError ++ ++ + class Host(object): + + """Nvim host for python plugins. +@@ -161,8 +180,10 @@ + has_script = True + else: + directory, name = os.path.split(os.path.splitext(path)[0]) +- file, pathname, descr = find_module(name, [directory]) +- module = imp.load_module(name, file, pathname, descr) ++ try: ++ module = handle_import(directory, name) ++ except ImportError: ++ return + handlers = [] + self._discover_classes(module, handlers, path) + self._discover_functions(module, handlers, path, False) diff --git a/srcpkgs/python3-neovim/template b/srcpkgs/python3-neovim/template index 2904323ea94..cb723c64cd1 100644 --- a/srcpkgs/python3-neovim/template +++ b/srcpkgs/python3-neovim/template @@ -1,7 +1,7 @@ # Template file for 'python3-neovim' pkgname=python3-neovim version=0.4.3 -revision=4 +revision=5 build_style="python3-module" hostmakedepends="python3-setuptools" depends="neovim python3-greenlet python3-msgpack"