Skip to content

Slow completion for python-igraph depending on current working directory #1118

@ilekka

Description

@ilekka

Issue

Completions for python-igraph are typically very slow, but the speed depends drastically on the current working directory.

If vim is run in ~, the code

from igraph import Graph
g = Graph()
g.

takes over 30 seconds to complete. The completion becomes faster if the current working directory is better isolated from other directories. (The examples below will hopefully help to clarify what I mean by this; unfortunately I don't know how to give a precise characterization of "isolated".)

Steps to reproduce

After cd'ing into the following directories:

  1. ~
  2. ~/Python/empty (an empty directory, but ~/Python contains all my Python projects and scripts)
  3. ~/empty/directory/with/no/python/anywhere/in/sight

I start vim and type the code

from igraph import Graph
g = Graph()
g.

In case 1, the completion takes over 30 seconds, in case 2 it takes about 3 seconds, and in case 3 it happens basically instantaneously.

Tab completion in ipython is instantaneous in all three cases.

Vim is run with a minimal .vimrc that uses vim-plug to load only jedi-vim:

set nocompatible

call plug#begin()
Plug 'davidhalter/jedi-vim'
call plug#end()

Output of “:verbose JediDebugInfo”

Jedi-vim debug information

jedi-vim version
  • jedi-vim git version: b82da7d
  • jedi git submodule status: 4e175ca82bbd680cb90f462545c10a8b1c0b5f2e pythonx/jedi (v0.19.1)
  • parso git submodule status: ee5edaf22ff3941cbdfa4efd8cb3e8f69779fd56 pythonx/parso (v0.8.3)
Global Python

Using Python version 3 to access Jedi.

  • global sys.executable: /home/ilkka/mambaforge/envs/3.11/bin/python3
  • global sys.version: 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
  • global site module: /home/ilkka/mambaforge/lib/python3.10/site.py
Jedi
  • path: /home/ilkka/.vim/plugged/jedi-vim/pythonx/jedi/jedi/__init__.py
  • version: 0.19.1
Jedi environment: <Environment: 3.11.7 in /home/ilkka/mambaforge/envs/3.11>
  • executable: /home/ilkka/mambaforge/envs/3.11/bin/python
  • sys_path:
    • /home/ilkka/mambaforge/envs/3.11/lib/python311.zip
    • /home/ilkka/mambaforge/envs/3.11/lib/python3.11
    • /home/ilkka/mambaforge/envs/3.11/lib/python3.11/lib-dynload
    • /home/ilkka/mambaforge/envs/3.11/lib/python3.11/site-packages
Known environments
  • <Environment: 3.11.7 in /home/ilkka/mambaforge/envs/3.11> (/home/ilkka/mambaforge/envs/3.11/bin/python)

  • <Environment: 3.11.7 in /home/ilkka/mambaforge/envs/3.11> (/home/ilkka/mambaforge/envs/3.11/bin/python3.11)

  • <Environment: 3.10.12 in /usr> (/usr/bin/python3.10)

Settings
  omnifunc=jedi#completions
	Last set from ~/.vim/plugged/jedi-vim/autoload/jedi.vim line 723
  completeopt=menuone,longest,popup
	Last set from ~/.vim/plugged/jedi-vim/autoload/jedi.vim line 701

:version


VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Dec 05 2023 17:58:57)
Included patches: 1-579, 1969, 580-1848, 4975, 5016, 5023, 5072, 2068, 1849-1854, 1857, 1855-1857, 1331, 1858, 1858-1859, 1873, 1860-1969, 1992, 1970-1992, 2010, 1993-2068, 2106, 2069-2106, 2108, 2107-2109, 2109-3995, 4563, 4646, 4774, 4895, 4899, 4901, 4919, 213, 1840, 1846-1847, 2110-2112, 2121
Modified by team+vim@tracker.debian.org
Compiled by team+vim@tracker.debian.org
Huge version with GTK3 GUI.  Features included (+) or not (-):
+acl               +dnd               +listcmds          +postscript        +termresponse
+arabic            -ebcdic            +localmap          +printer           +textobjects
+autocmd           +emacs_tags        +lua               +profile           +textprop
+autochdir         +eval              +menu              -python            +timers
-autoservername    +ex_extra          +mksession         +python3           +title
+balloon_eval      +extra_search      +modify_fname      +quickfix          +toolbar
+balloon_eval_term -farsi             +mouse             +reltime           +user_commands
+browse            +file_in_path      +mouseshape        +rightleft         +vartabs
++builtin_terms    +find_in_path      +mouse_dec         +ruby              +vertsplit
+byte_offset       +float             +mouse_gpm         +scrollbind        +vim9script
+channel           +folding           -mouse_jsbterm     +signs             +viminfo
+cindent           -footer            +mouse_netterm     +smartindent       +virtualedit
+clientserver      +fork()            +mouse_sgr         +sodium            +visual
+clipboard         +gettext           -mouse_sysmouse    +sound             +visualextra
+cmdline_compl     -hangul_input      +mouse_urxvt       +spell             +vreplace
+cmdline_hist      +iconv             +mouse_xterm       +startuptime       +wildignore
+cmdline_info      +insert_expand     +multi_byte        +statusline        +wildmenu
+comments          +ipv6              +multi_lang        -sun_workshop      +windows
+conceal           +job               -mzscheme          +syntax            +writebackup
+cryptv            +jumplist          +netbeans_intg     +tag_binary        +X11
+cscope            +keymap            +num64             -tag_old_static    -xfontset
+cursorbind        +lambda            +packages          -tag_any_white     +xim
+cursorshape       +langmap           +path_extra        +tcl               +xpm
+dialog_con_gui    +libcall           +perl              +termguicolors     +xsmp_interact
+diff              +linebreak         +persistent_undo   +terminal          +xterm_clipboard
+digraphs          +lispindent        +popupwin          +terminfo          -xterm_save
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/x86_64-linux-gnu -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -Wdate-time -g -O2 -ffile-prefix-map=/build/vim-gVT2fw/vim-8.2.3995=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -D_REENTRANT -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 
Linking: gcc -L. -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,-E -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -o vim -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE -lm -ltinfo -lselinux -lcanberra -lsodium -lacl -lattr -lgpm -L/usr/lib -llua5.2 -Wl,-E -fstack-protector-strong -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu/perl/5.34/CORE -lperl -ldl -lm -lpthread -lcrypt -L/usr/lib/python3.10/config-3.10-x86_64-linux-gnu -lpython3.10 -lcrypt -ldl -lm -lm -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lm -lruby-3.0 -lm -L/usr/lib 

:messages

Messages maintainer: Bram Moolenaar <Bram@vim.org>

:scriptnames
  1: ~/jedi.vimrc
  2: ~/.vim/autoload/plug.vim
  3: /usr/share/vim/vim82/filetype.vim
  4: /usr/share/vim/vim82/ftplugin.vim
  5: /usr/share/vim/vim82/indent.vim
  6: /usr/share/vim/vim82/syntax/syntax.vim
  7: /usr/share/vim/vim82/syntax/synload.vim
  8: /usr/share/vim/vim82/syntax/syncolor.vim
  9: /usr/share/vim/vim82/colors/lists/default.vim
 10: ~/.vim/plugged/jedi-vim/plugin/jedi.vim
 11: /usr/share/vim/vim82/plugin/getscriptPlugin.vim
 12: /usr/share/vim/vim82/plugin/gzip.vim
 13: /usr/share/vim/vim82/plugin/logiPat.vim
 14: /usr/share/vim/vim82/plugin/manpager.vim
 15: /usr/share/vim/vim82/plugin/matchparen.vim
 16: /usr/share/vim/vim82/plugin/netrwPlugin.vim
 17: /usr/share/vim/vim82/plugin/rrhelper.vim
 18: /usr/share/vim/vim82/plugin/spellfile.vim
 19: /usr/share/vim/vim82/plugin/tarPlugin.vim
 20: /usr/share/vim/vim82/plugin/tohtml.vim
 21: /usr/share/vim/vim82/plugin/vimballPlugin.vim
 22: /usr/share/vim/vim82/plugin/zipPlugin.vim
 23: ~/.vim/plugged/jedi-vim/ftplugin/python/jedi.vim
 24: ~/.vim/plugged/jedi-vim/autoload/jedi.vim
 25: /usr/share/vim/vim82/ftplugin/python.vim
 26: ~/.vim/plugged/jedi-vim/after/ftplugin/python/jedi.vim
 27: /usr/share/vim/vim82/indent/python.vim
 28: ~/.vim/syntax/python.vim
 29: /usr/share/vim/vim82/syntax/python.vim
 30: ~/.vim/plugged/jedi-vim/after/syntax/python.vim

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions