Skip to content

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

Open
@ilekka

Description

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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