With this change we can now include all parents of the script, which will make
relative imports always work.
Now the whole meta_path is scanned and not just importlib's PathFinder.
Fixes#1183.
Looks like this for `jedi.Script` then:
> <CallSignature: Script index=0 params=[source=None, line=None, column=None, path=None, encoding='utf-8', sys_path=None, environment=None]>
`_params_str` could be made public, and then could be used in jedi-vim,
which currently has this:
params = [p.description.replace('\n', '').replace('param ', '', 1)
for p in signature.params]
08792d3fd7/pythonx/jedi_vim.py (L492-L493)
The issue was that if something changed about the environment (e.g. version
switch) or sys.path change, re-creating the environment was possible, but did
not involve the change. The environments have now a __del__ function that
deletes the subprocess after every time an Environment is garbage collected.
This means that you can now write 'from gi.repository import Gtk' and Gtk completions work.
It also means that other libraries could be used like that for speed or other reasons.
Fixes#531
* Include stderr with "subprocess has crashed" exception
This does not add it to the other similar exception raised from `kill`,
since this should be something like "was killed already" anyway.
* fixup! Include stderr with "subprocess has crashed" exception
The distutils.spawn.find_executable function is not available on stock system
Python 3 in recent Debian-based distributions. Since shutil.which is a better
alternative but not available on Python 2.7, we include a copy of that function
and use it in place of find_executable.
I've noticed that Jedi tries to import numpydoc a lot when using
jedi-vim's goto method in jedi_vim.py itself (via printing in Neovim's
VimPathFinder.find_spec).
This patch uses the cache before trying the import again and again.