Closed WhyNotHugo closed 3 years ago
Please upgrade Jedi to 0.16.0. I'm pretty sure that that's the underlying issue.
Huh, for some odd reason my distro still hasn't packaged v0.16.0 (it's been flagged out of date almost two months ago!).
I tried to set it up myself, but tests seem to be failing on it.
================================================================== FAILURES ==================================================================
_________________________________________________________ test_completion[basic:212] _________________________________________________________
case = <IntegrationTestCase: /home/hugo/tmp/jedi/src/jedi/test/completion/basic.py:212 'deleted_var'>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6ce5f082e0>, environment = <Environment: 3.8.2 in /usr>, has_typing = True
def test_completion(case, monkeypatch, environment, has_typing):
skip_reason = case.get_skip_reason(environment)
if skip_reason is not None:
pytest.skip(skip_reason)
_CONTAINS_TYPING = ('pep0484_typing', 'pep0484_comments', 'pep0526_variables')
if not has_typing and any(x in case.path for x in _CONTAINS_TYPING):
pytest.skip('Needs the typing module installed to run this test.')
repo_root = helpers.root_dir
monkeypatch.chdir(os.path.join(repo_root, 'jedi'))
> case.run(assert_case_equal, environment)
../test/test_integration.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../test/run.py:215: in run
return testers[self.test_type](compare_cb, environment)
../test/run.py:257: in run_inference
return compare_cb(self, is_str, should)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
case = <IntegrationTestCase: /home/hugo/tmp/jedi/src/jedi/test/completion/basic.py:212 'deleted_var'>, actual = set()
desired = {'builtins:instance int()'}
def assert_case_equal(case, actual, desired):
"""
Assert ``actual == desired`` with formatted message.
This is not needed for typical pytest use case, but as we need
``--assert=plain`` (see ../pytest.ini) to workaround some issue
due to pytest magic, let's format the message by hand.
"""
> assert actual == desired, """
Test %r failed.
actual = %s
desired = %s
""" % (case, actual, desired)
E AssertionError:
E Test <IntegrationTestCase: /home/hugo/tmp/jedi/src/jedi/test/completion/basic.py:212 'deleted_var'> failed.
E actual = set()
E desired = {'builtins:instance int()'}
E
E assert set() == {'builtins:instance int()'}
E Extra items in the right set:
E 'builtins:instance int()'
E Use -v to get the full diff
../test/test_integration.py:16: AssertionError
_________________________________________________________ test_completion[basic:214] _________________________________________________________
case = <IntegrationTestCase: /home/hugo/tmp/jedi/src/jedi/test/completion/basic.py:214 'deleted_var'>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6ce5f6ae50>, environment = <Environment: 3.8.2 in /usr>, has_typing = True
def test_completion(case, monkeypatch, environment, has_typing):
skip_reason = case.get_skip_reason(environment)
if skip_reason is not None:
pytest.skip(skip_reason)
_CONTAINS_TYPING = ('pep0484_typing', 'pep0484_comments', 'pep0526_variables')
if not has_typing and any(x in case.path for x in _CONTAINS_TYPING):
pytest.skip('Needs the typing module installed to run this test.')
repo_root = helpers.root_dir
monkeypatch.chdir(os.path.join(repo_root, 'jedi'))
> case.run(assert_case_equal, environment)
../test/test_integration.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../test/run.py:215: in run
return testers[self.test_type](compare_cb, environment)
../test/run.py:222: in run_completion
return compare_cb(self, comp_str, set(literal_eval(self.correct)))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
case = <IntegrationTestCase: /home/hugo/tmp/jedi/src/jedi/test/completion/basic.py:214 'deleted_var'>, actual = set()
desired = {'deleted_var'}
def assert_case_equal(case, actual, desired):
"""
Assert ``actual == desired`` with formatted message.
This is not needed for typical pytest use case, but as we need
``--assert=plain`` (see ../pytest.ini) to workaround some issue
due to pytest magic, let's format the message by hand.
"""
> assert actual == desired, """
Test %r failed.
actual = %s
desired = %s
""" % (case, actual, desired)
E AssertionError:
E Test <IntegrationTestCase: /home/hugo/tmp/jedi/src/jedi/test/completion/basic.py:214 'deleted_var'> failed.
E actual = set()
E desired = {'deleted_var'}
E
E assert set() == {'deleted_var'}
E Extra items in the right set:
E 'deleted_var'
E Use -v to get the full diff
../test/test_integration.py:16: AssertionError
_________________________________________________________ test_completion[basic:216] _________________________________________________________
case = <IntegrationTestCase: /home/hugo/tmp/jedi/src/jedi/test/completion/basic.py:216 'deleted_var'>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6ce5fbf580>, environment = <Environment: 3.8.2 in /usr>, has_typing = True
def test_completion(case, monkeypatch, environment, has_typing):
skip_reason = case.get_skip_reason(environment)
if skip_reason is not None:
pytest.skip(skip_reason)
_CONTAINS_TYPING = ('pep0484_typing', 'pep0484_comments', 'pep0526_variables')
if not has_typing and any(x in case.path for x in _CONTAINS_TYPING):
pytest.skip('Needs the typing module installed to run this test.')
repo_root = helpers.root_dir
monkeypatch.chdir(os.path.join(repo_root, 'jedi'))
> case.run(assert_case_equal, environment)
../test/test_integration.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../test/run.py:215: in run
return testers[self.test_type](compare_cb, environment)
../test/run.py:262: in run_goto
return compare_cb(self, comp_str, self.correct)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
case = <IntegrationTestCase: /home/hugo/tmp/jedi/src/jedi/test/completion/basic.py:216 'deleted_var'>, actual = '[]'
desired = "['deleted_var = 3']"
def assert_case_equal(case, actual, desired):
"""
Assert ``actual == desired`` with formatted message.
This is not needed for typical pytest use case, but as we need
``--assert=plain`` (see ../pytest.ini) to workaround some issue
due to pytest magic, let's format the message by hand.
"""
> assert actual == desired, """
Test %r failed.
actual = %s
desired = %s
""" % (case, actual, desired)
E AssertionError:
E Test <IntegrationTestCase: /home/hugo/tmp/jedi/src/jedi/test/completion/basic.py:216 'deleted_var'> failed.
E actual = []
E desired = ['deleted_var = 3']
E
E assert '[]' == "['deleted_var = 3']"
E - []
E + ['deleted_var = 3']
../test/test_integration.py:16: AssertionError
_______________________________________________________________ test_os_issues _______________________________________________________________
Script = functools.partial(<class 'jedi.api.Script'>, environment=<Environment: 3.8.2 in /usr>)
def test_os_issues(Script):
"""Issue #873"""
> assert [c.name for c in Script('import os\nos.nt''').complete()] == ['nt']
E AssertionError: assert [] == ['nt']
E Right contains one more item: 'nt'
E Use -v to get the full diff
test/test_api/test_full_name.py:115: AssertionError
====================================== 4 failed, 3051 passed, 22 skipped, 5 xfailed in 71.34s (0:01:11) ======================================
==> ERROR: A failure occurred in check().
Aborting...
Oh, managed to update it by just using submodules:
:python3 import jedi; print(jedi.__version__)
now yields 0.16.1
Still having the same issue though.
The tests might be failing for whatever reason, really no idea :) But it probably doesn't really matter, because it's very few. On CI the should be passing.
You can try using Jedi directly and use jedi.set_debug_function()
and send me that output. My guess is that you're hitting _OPENED_FILE_LIMIT = 2000
or _PARSED_FILE_LIMIT = 30
(both defined in `jedi.inference.references), because there's only so much Jedi can do.
For bigger guns there's https://github.com/davidhalter/jedi/issues/1059. Which I hope to tackle some time. But that's a way bigger one and I might rewrite a lot of code.
So if you can reproduce this issue with a smaller code base (that doesn't hit the amount of files above), it might be interesting to debug this one. Otherwise I'm inclined to clone. These are just limits to make Jedi somewhat fast (and not borderline slow in many edge cases).
Since this has been improved by a lot in Jedi, I'm closing. If there's still an issue, please report it against Jedi, but as I wrote above there's a limit in what Jedi can do. It's however definitely not the case anymore that only the current file is searched.
Issue
Pressing Leader+n shows a popup with all the references in the current file, but not in other files in the same directory (this is part of a larger project).
The "opposite" (gotodefinition), however, does traverse the whole project.
Output of “:verbose JediDebugInfo”
Jedi-vim debug information
jedi-vim version
Global Python
Using Python version 3 to access Jedi.
/usr/bin/python3
3.8.1 (default, Jan 22 2020, 06:38:00), [GCC 9.2.0]
/usr/lib/python3.8/site.py
Jedi
/home/hugo/.config/nvim/plugged/jedi-vim/pythonx/jedi/jedi/__init__.py
Jedi environment: <SameEnvironment: 3.8.1 in /usr>
/usr/lib/python38.zip
/usr/lib/python3.8
/usr/lib/python3.8/lib-dynload
/usr/lib/python3.8/site-packages
Known environments
Settings
:version
:messages
:scriptnames
``` 1: /etc/xdg/nvim/sysinit.vim 2: /usr/share/nvim/archlinux.vim 3: ~/.homesick/repos/dotfiles/home/.config/nvim/init.vim 4: ~/.homesick/repos/dotfiles/home/.config/nvim/plugins.vim 5: ~/.homesick/repos/dotfiles/home/.config/nvim/autoload/plug.vim 6: /usr/share/nvim/runtime/filetype.vim 7: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-coffee-script/ftdetect/coffee.vim 8: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-coffee-script/ftdetect/vim-literate-coffeescript.vim 9: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-jade/ftdetect/pug.vim 10: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-less/ftdetect/less.vim 11: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-markdown/ftdetect/markdown.vim 12: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/rust.vim/ftdetect/rust.vim 13: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-toml/ftdetect/toml.vim 14: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/icalendar.vim/ftdetect/icalendar.vim 15: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/i3config.vim/ftdetect/i3config.vim 16: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/typescript-vim/ftdetect/typescript.vim 17: /usr/share/vim/vimfiles/ftdetect/PKGBUILD.vim 18: /usr/share/vim/vimfiles/ftdetect/dockerfile.vim 19: /usr/share/nvim/runtime/ftplugin.vim 20: /usr/share/nvim/runtime/indent.vim 21: /usr/share/nvim/runtime/syntax/syntax.vim 22: /usr/share/nvim/runtime/syntax/synload.vim 23: /usr/share/nvim/runtime/syntax/syncolor.vim 24: ~/.homesick/repos/dotfiles/home/.config/nvim/lightline.vim 25: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/jellybeans.vim/colors/jellybeans.vim 26: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/deoplete.nvim/autoload/deoplete/custom.vim 27: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/deoplete.nvim/autoload/deoplete/util.vim 28: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/deoplete.nvim/autoload/deoplete/init.vim 29: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/ctrlp.vim/plugin/ctrlp.vim 30: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/ctrlp.vim/autoload/ctrlp/mrufiles.vim 31: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/ale/plugin/ale.vim 32: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/ale/autoload/ale/events.vim 33: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-sensible/plugin/sensible.vim 34: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/ack.vim/plugin/ack.vim 35: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/deoplete.nvim/plugin/deoplete.vim 36: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/deoplete.nvim/autoload/deoplete.vim 37: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-endwise/plugin/endwise.vim 38: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/rust.vim/plugin/cargo.vim 39: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/rust.vim/plugin/rust.vim 40: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/jedi-vim/plugin/jedi.vim 41: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/lightline.vim/plugin/lightline.vim 42: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/lightline-ale/plugin/lightline/ale.vim 43: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-gitgutter/plugin/gitgutter.vim 44: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-gitgutter/autoload/gitgutter/utility.vim 45: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-gitgutter/autoload/gitgutter/highlight.vim 46: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-lastplace/plugin/vim-lastplace.vim 47: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-devicons/plugin/webdevicons.vim 48: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-devicons/autoload/devicons/plugins/ctrlp.vim 49: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/tagbar/plugin/tagbar.vim 50: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/tcomment_vim/plugin/tcomment.vim 51: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/tcomment_vim/autoload/tcomment/deprecated.vim 52: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-sneak/plugin/sneak.vim 53: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/editorconfig-vim/plugin/editorconfig.vim 54: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-multiple-cursors/plugin/multiple_cursors.vim 55: /usr/share/nvim/runtime/plugin/gzip.vim 56: /usr/share/nvim/runtime/plugin/health.vim 57: /usr/share/nvim/runtime/plugin/man.vim 58: /usr/share/nvim/runtime/plugin/matchit.vim 59: /usr/share/nvim/runtime/pack/dist/opt/matchit/plugin/matchit.vim 60: /usr/share/nvim/runtime/plugin/matchparen.vim 61: /usr/share/nvim/runtime/plugin/netrwPlugin.vim 62: /usr/share/nvim/runtime/plugin/rplugin.vim 63: ~/.local/share/nvim/rplugin.vim 64: /usr/share/nvim/runtime/autoload/remote/host.vim 65: /usr/share/nvim/runtime/autoload/remote/define.vim 66: /usr/share/nvim/runtime/plugin/shada.vim 67: /usr/share/nvim/runtime/plugin/spellfile.vim 68: /usr/share/nvim/runtime/plugin/tarPlugin.vim 69: /usr/share/nvim/runtime/plugin/tohtml.vim 70: /usr/share/nvim/runtime/plugin/tutor.vim 71: /usr/share/nvim/runtime/plugin/zipPlugin.vim 72: /usr/share/vim/vimfiles/plugin/fzf.vim 73: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/indentLine/after/plugin/indentLine.vim 74: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/ale/autoload/ale.vim 75: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/lightline.vim/autoload/lightline.vim 76: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/lightline.vim/autoload/lightline/tab.vim 77: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/lightline.vim/autoload/lightline/colorscheme/jellybeans.vim 78: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/lightline.vim/autoload/lightline/colorscheme.vim 79: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/lightline-ale/autoload/lightline/ale.vim 80: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-gitgutter/autoload/gitgutter.vim 81: /usr/share/nvim/runtime/autoload/provider/pythonx.vim 82: /usr/share/nvim/runtime/autoload/provider/python3.vim 83: /usr/share/nvim/runtime/autoload/provider.vim 84: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/deoplete.nvim/autoload/deoplete/mapping.vim 85: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/deoplete.nvim/autoload/deoplete/handler.vim 86: /usr/share/nvim/runtime/autoload/provider/clipboard.vim 87: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/ctrlp.vim/autoload/ctrlp.vim 88: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/ctrlp.vim/autoload/ctrlp/utils.vim 89: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/ale/autoload/ale/util.vim 90: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/ale/autoload/ale/linter.vim 91: ~/.homesick/repos/dotfiles/home/.config/nvim/ftplugin/python.vim 92: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/jedi-vim/ftplugin/python/jedi.vim 93: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/jedi-vim/autoload/jedi.vim 94: /usr/share/nvim/runtime/ftplugin/python.vim 95: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/jedi-vim/after/ftplugin/python/jedi.vim 96: /usr/share/nvim/runtime/indent/python.vim 97: /usr/share/nvim/runtime/syntax/python.vim 98: ~/.homesick/repos/dotfiles/home/.config/nvim/after/syntax/python.vim 99: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/jedi-vim/after/syntax/python.vim 100: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/editorconfig-vim/autoload/editorconfig_core.vim 101: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/editorconfig-vim/autoload/editorconfig_core/handler.vim 102: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/editorconfig-vim/autoload/editorconfig_core/util.vim 103: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/editorconfig-vim/autoload/editorconfig_core/ini.vim 104: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/editorconfig-vim/autoload/editorconfig_core/fnmatch.vim 105: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/editorconfig-vim/autoload/editorconfig.vim 106: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-gitgutter/autoload/gitgutter/async.vim 107: ~/.homesick/repos/dotfiles/home/.config/nvim/plugged/vim-gitgutter/autoload/gitgutter/debug.vim (I had to run `:redir @*> | silent verb JediDebugInfo | redir END` for this to work, with `+` it copied nothing).