davidhalter / jedi-vim

Using the jedi autocompletion library for VIM.
MIT License
5.27k stars 370 forks source link

Discovery of stubs in a different folder #1078

Open Jasha10 opened 2 years ago

Jasha10 commented 2 years ago

I'm having trouble with discovery of .pyi stub files that live in a different folder from the .py source file.

Here is an example that works as expected:

.
├── code
│   ├── foo.py
│   └── foo.pyi
└── main.py

If I set the environment variable PYTHONPATH=code and if main.py contains the line from foo import bar, then jedi#goto_stubs() works as expected (it finds the definition of bar in code/foo.pyi).

Here is an example that is not working:

I am having problems when the file layout looks like this:

.
├── code
│   └── foo.py
├── stubs
│   └── foo.pyi
└── main.py

In this situation, jedi#goto_stubs() does not work. I have tried the following environment variable settings:

I would expect that the .pyi file can be discovered as long as it is discoverable on PYTHONPATH or MYPYPATH, but this seems not to be the case.

davidhalter commented 2 years ago

Jedi does not respect MYPYPATH, because it's fundamentally not mypy ;-)

Jedi follows this: https://peps.python.org/pep-0561/#type-checker-module-resolution-order

I guess just put stubs in front of code in the PYTHONPATH.

Jasha10 commented 2 years ago

Jedi does not respect MYPYPATH, because it's fundamentally not mypy ;-)

Makes sense!

Jedi follows this: https://peps.python.org/pep-0561/#type-checker-module-resolution-order

I guess just put stubs in front of code in the PYTHONPATH.

Using PYTHONPATH=stubs:code I am still getting jedi-vim: Couldn't find any definitions for this when I call jedi#goto_stubs().

davidhalter commented 2 years ago

I'm keeping this open for now, but I feel like this might not be fixed, since currently nobody is actively working on Jedi.

I'm currently working on a Rust replacement for Jedi, but it will still take time (and it will probably support MYPYPATH).

Jasha10 commented 2 years ago

Cool! I can't wait to see the new rust program.