mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
python: path_hook: properly implement PEP302
The path hook used to load the module already in the `find_module` hook. This caused different behaviour between Python 2.7 and 3.3, where the former would call the `VimModuleLoader`, while Python 3.3 appears to short-circuited this (because the module was loaded already). This patch will now only find the module, but not load it in the `find_module` hook.
This commit is contained in:
parent
ad6dfa6669
commit
5e32120236
@ -201,11 +201,10 @@ def path_hook(nvim):
|
|||||||
name = oldtail[:idx]
|
name = oldtail[:idx]
|
||||||
tail = oldtail[idx+1:]
|
tail = oldtail[idx+1:]
|
||||||
fmr = imp.find_module(name, path)
|
fmr = imp.find_module(name, path)
|
||||||
module = imp.load_module(fullname[:-len(oldtail)] + name, *fmr)
|
module = imp.find_module(fullname[:-len(oldtail)] + name, *fmr)
|
||||||
return _find_module(fullname, tail, module.__path__)
|
return _find_module(fullname, tail, module.__path__)
|
||||||
else:
|
else:
|
||||||
fmr = imp.find_module(fullname, path)
|
return imp.find_module(fullname, path)
|
||||||
return imp.load_module(fullname, *fmr)
|
|
||||||
|
|
||||||
class VimModuleLoader(object):
|
class VimModuleLoader(object):
|
||||||
def __init__(self, module):
|
def __init__(self, module):
|
||||||
@ -215,7 +214,7 @@ def path_hook(nvim):
|
|||||||
# Check sys.modules, required for reload (see PEP302).
|
# Check sys.modules, required for reload (see PEP302).
|
||||||
if fullname in sys.modules:
|
if fullname in sys.modules:
|
||||||
return sys.modules[fullname]
|
return sys.modules[fullname]
|
||||||
return self.module
|
return imp.load_module(fullname, *self.module)
|
||||||
|
|
||||||
class VimPathFinder(object):
|
class VimPathFinder(object):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
Loading…
Reference in New Issue
Block a user