ycm-core / YouCompleteMe

A code-completion engine for Vim
http://ycm-core.github.io/YouCompleteMe/
GNU General Public License v3.0
25.43k stars 2.81k forks source link

Internal server error with Jedi completion #2091

Closed khardix closed 8 years ago

khardix commented 8 years ago

Issue Prelude

Please complete these steps and check these boxes (by putting an x inside the brackets) before filing your issue:

Thank you for adhering to this process! It ensures your issue is resolved quickly and that neither your nor our time is needlessly wasted.

Issue Details

When working with python files, I'm getting HTTPError: 500 Server Error: Internal Server Error for url: http://127.0.0.1:33284/completions after every keystroke. The issue seems to be in the Jedi completer – in the stderr logs of JediHTTP, the traceback states AttributeError: 'ListComprehension' object has no attribute 'parent'.

Command outputs

System (Fedora 23 x86_64 Workstation) and vim versions:

$ uname -srvmo
Linux 4.4.6-300.fc23.x86_64 #1 SMP Wed Mar 16 22:10:37 UTC 2016 x86_64 GNU/Linux

$ vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 20 2015 09:52:05)
Included patches: 1-207, 209-801, 803-808, 810-827
Modified by <bugzilla@redhat.com>
Compiled by <bugzilla@redhat.com>
Huge version with GTK2 GUI.  Features included (+) or not (-):
+acl             +farsi           +mouse_netterm   +syntax
+arabic          +file_in_path    +mouse_sgr       +tag_binary
+autocmd         +find_in_path    -mouse_sysmouse  +tag_old_static
+balloon_eval    +float           +mouse_urxvt     -tag_any_white
+browse          +folding         +mouse_xterm     -tcl
++builtin_terms  -footer          +multi_byte      +terminfo
+byte_offset     +fork()          +multi_lang      +termresponse
+cindent         +gettext         -mzscheme        +textobjects
+clientserver    -hangul_input    +netbeans_intg   +title
+clipboard       +iconv           +path_extra      +toolbar
+cmdline_compl   +insert_expand   +perl            +user_commands
+cmdline_hist    +jumplist        +persistent_undo +vertsplit
+cmdline_info    +keymap          +postscript      +virtualedit
+comments        +langmap         +printer         +visual
+conceal         +libcall         +profile         +visualextra
+cryptv          +linebreak       +python/dyn      +viminfo
+cscope          +lispindent      +python3/dyn     +vreplace
+cursorbind      +listcmds        +quickfix        +wildignore
+cursorshape     +localmap        +reltime         +wildmenu
+dialog_con_gui  +lua/dyn         +rightleft       +windows
+diff            +menu            +ruby/dyn        +writebackup
+digraphs        +mksession       +scrollbind      +X11
+dnd             +modify_fname    +signs           -xfontset
-ebcdic          +mouse           +smartindent     +xim
+emacs_tags      +mouseshape      -sniff           +xsmp_interact
+eval            +mouse_dec       +startuptime     +xterm_clipboard
+ex_extra        +mouse_gpm       +statusline      -xterm_save
+extra_search    -mouse_jsbterm   -sun_workshop    +xpm
   system vimrc file: "/etc/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "/etc/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/etc"
 f-b for $VIMRUNTIME: "/usr/share/vim/vim74"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16    -O2 -g -pipe -Wall -Werror=format-security -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       
Linking: gcc   -L. -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,--enable-new-dtags -Wl,-z,relro   -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -L/usr/local/lib -Wl,--as-needed -o vim   -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig -lfreetype  -lSM -lICE -lXpm -lXt -lX11 -lSM -lICE  -lm -lnsl  -lselinux   -lncurses -lacl -lattr -lgpm -ldl   -Wl,--enable-new-dtags -Wl,-z,relro  -Wl,-z,relro  -fstack-protector-strong -L/usr/local/lib  -L/usr/lib64/perl5/CORE -lperl -lpthread -lresolv -lnsl -ldl -lm -lcrypt -lutil -lc

YCM relevant bits of vimrc:

" ===== YouCompleteMe configuration variables =====

" Path to fallback config for C-family languages
let g:ycm_global_ycm_extra_conf = '~/.vim/plugin/ycm_extra_conf.py'
" Do not ask for extra config files
let g:ycm_confirm_extra_conf = 0

" Show diagnostics
let g:ycm_always_populate_location_list = 1

" Custom error and warning symbols
let g:ycm_warning_symbol = '‼'
let g:ycm_error_symbol   = '⁇'

" Use python3 completion
let g:ycm_path_to_python_interpreter = '/usr/bin/python3'
"let g:ycm_python_binary_path = '/usr/bin/python3'

YcmDebugInfo:

Printing YouCompleteMe debug information...
-- Server has Clang support compiled in: True
-- Clang version: clang version 3.8.0 (tags/RELEASE_380/final)
-- JediHTTP running at 127.0.0.1:41269
--   python binary: /usr/bin/python3
--   stdout log: /tmp/ycm_temp/jedihttp_41269_stdout.log
--   stderr log: /tmp/ycm_temp/jedihttp_41269_stderr.log
-- Server running at: http://127.0.0.1:38501
-- Server process ID: 28155
-- Server logfiles:
--   /tmp/ycm_temp/server_38501_stdout.log
--   /tmp/ycm_temp/server_38501_stderr.log

YCM itself is compiled using -DUSE_PYTHON2=OFF CMAKE flag.

YcmToggleLogs stderr:

160 2016-04-01 14:12:11,755 - INFO - Received health request
161 2016-04-01 14:14:53,679 - INFO - Received event notification
162 2016-04-01 14:14:53,680 - INFO - Adding buffer identifiers for file: /home/jstanek/tmp/report.py
163 2016-04-01 14:14:53,682 - INFO - Received event notification
164 2016-04-01 14:14:53,682 - INFO - Adding ONE buffer identifier for file: /home/jstanek/tmp/report.py
165 2016-04-01 14:14:56,485 - INFO - Received debug info request

Minimal reproducer file:

#!/usr/bin/python3

import requests

response = requests.get('https://httpbin.org/get')

if response.c

The error starts to appear when trying to continue typing the last line.

JediHTTP stderr log:

Traceback (most recent call last):
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/bottle/bottle.py", line 862, in _handle
    return route.call(**args)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/bottle/bottle.py", line 1732, in wrapper
    rv = callback(*a, **ka)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/jedihttp/hmac_plugin.py", line 58, in wrapper
    body = callback( *args, **kwargs )
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/jedihttp/handlers.py", line 63, in completions
    } for completion in script.completions() ]
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/api/__init__.py", line 188, in completions
    completion_names = get_completions(user_stmt, b)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/api/__init__.py", line 174, in get_completions
    completion_names += self._simple_complete(path, dot, like)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/api/__init__.py", line 250, in _simple_complete
    scopes = list(self._prepare_goto(path, True))
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/api/__init__.py", line 294, in _prepare_goto
    scopes = self._evaluator.eval_element(eval_stmt)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 169, in eval_element
    return self._eval_atom(element)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 230, in _eval_atom
    return self.find_types(scope, atom, stmt.start_pos, search_global=True)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 120, in find_types
    return f.find(scopes, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 87, in find
    types = self._names_to_types(names, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 233, in _names_to_types
    new_types = _name_to_types(self._evaluator, name, self.scope)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 278, in _name_to_types
    types += _remove_statements(evaluator, typ, name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 323, in _remove_statements
    types += evaluator.eval_statement(stmt, seek_name=name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 23, in run
    result = func(evaluator, stmt, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 135, in eval_statement
    types = self.eval_element(stmt.get_rhs())
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 259, in eval_trailer
    new_types += self.execute(typ, node, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 299, in execute
    types = func(self, arguments)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 124, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 560, in py__call__
    return FunctionExecution(evaluator, self, params).get_return_types()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 100, in run
    result = func(execution, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 624, in get_return_types
    types += self._evaluator.eval_element(r.children[1])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 259, in eval_trailer
    new_types += self.execute(typ, node, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 299, in execute
    types = func(self, arguments)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 124, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 560, in py__call__
    return FunctionExecution(evaluator, self, params).get_return_types()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 100, in run
    result = func(execution, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 624, in get_return_types
    types += self._evaluator.eval_element(r.children[1])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 259, in eval_trailer
    new_types += self.execute(typ, node, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 299, in execute
    types = func(self, arguments)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 364, in py__call__
    return Function.py__call__(self, evaluator, params)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 122, in <lambda>
    return lambda *args, **kwargs: self.func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 560, in py__call__
    return FunctionExecution(evaluator, self, params).get_return_types()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 100, in run
    result = func(execution, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 624, in get_return_types
    types += self._evaluator.eval_element(r.children[1])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 169, in eval_element
    return self._eval_atom(element)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 230, in _eval_atom
    return self.find_types(scope, atom, stmt.start_pos, search_global=True)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 120, in find_types
    return f.find(scopes, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 87, in find
    types = self._names_to_types(names, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 233, in _names_to_types
    new_types = _name_to_types(self._evaluator, name, self.scope)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 278, in _name_to_types
    types += _remove_statements(evaluator, typ, name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 323, in _remove_statements
    types += evaluator.eval_statement(stmt, seek_name=name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 23, in run
    result = func(evaluator, stmt, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 135, in eval_statement
    types = self.eval_element(stmt.get_rhs())
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 259, in eval_trailer
    new_types += self.execute(typ, node, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 299, in execute
    types = func(self, arguments)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 364, in py__call__
    return Function.py__call__(self, evaluator, params)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 122, in <lambda>
    return lambda *args, **kwargs: self.func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 560, in py__call__
    return FunctionExecution(evaluator, self, params).get_return_types()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 100, in run
    result = func(execution, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 624, in get_return_types
    types += self._evaluator.eval_element(r.children[1])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 169, in eval_element
    return self._eval_atom(element)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 230, in _eval_atom
    return self.find_types(scope, atom, stmt.start_pos, search_global=True)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 120, in find_types
    return f.find(scopes, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 87, in find
    types = self._names_to_types(names, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 233, in _names_to_types
    new_types = _name_to_types(self._evaluator, name, self.scope)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 278, in _name_to_types
    types += _remove_statements(evaluator, typ, name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 323, in _remove_statements
    types += evaluator.eval_statement(stmt, seek_name=name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 23, in run
    result = func(evaluator, stmt, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 135, in eval_statement
    types = self.eval_element(stmt.get_rhs())
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 259, in eval_trailer
    new_types += self.execute(typ, node, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 299, in execute
    types = func(self, arguments)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 364, in py__call__
    return Function.py__call__(self, evaluator, params)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 122, in <lambda>
    return lambda *args, **kwargs: self.func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 560, in py__call__
    return FunctionExecution(evaluator, self, params).get_return_types()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 100, in run
    result = func(execution, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 624, in get_return_types
    types += self._evaluator.eval_element(r.children[1])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 267, in eval_trailer
    new_types += get(self, node)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/iterable.py", line 229, in get_index_types
    types += self.get_exact_index_types(index.obj)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/iterable.py", line 255, in get_exact_index_types
    return self._evaluator.eval_element(self._items()[mixed_index])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 169, in eval_element
    return self._eval_atom(element)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 230, in _eval_atom
    return self.find_types(scope, atom, stmt.start_pos, search_global=True)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 120, in find_types
    return f.find(scopes, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 87, in find
    types = self._names_to_types(names, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 233, in _names_to_types
    new_types = _name_to_types(self._evaluator, name, self.scope)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 269, in _name_to_types
    for_types = iterable.get_iterator_types(for_types)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/iterable.py", line 418, in get_iterator_types
    result += it.iter_content()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/iterable.py", line 575, in iter_content
    module = self.var_args.get_parent_until()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/param.py", line 56, in get_parent_until
    return element.get_parent_until(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 124, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/parser/tree.py", line 123, in get_parent_until
    while scope.parent is not None:
AttributeError: 'ListComprehension' object has no attribute 'parent'
Traceback (most recent call last):
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/bottle/bottle.py", line 862, in _handle
    return route.call(**args)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/bottle/bottle.py", line 1732, in wrapper
    rv = callback(*a, **ka)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/jedihttp/hmac_plugin.py", line 58, in wrapper
    body = callback( *args, **kwargs )
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/jedihttp/handlers.py", line 63, in completions
    } for completion in script.completions() ]
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/api/__init__.py", line 188, in completions
    completion_names = get_completions(user_stmt, b)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/api/__init__.py", line 174, in get_completions
    completion_names += self._simple_complete(path, dot, like)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/api/__init__.py", line 250, in _simple_complete
    scopes = list(self._prepare_goto(path, True))
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/api/__init__.py", line 294, in _prepare_goto
    scopes = self._evaluator.eval_element(eval_stmt)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 169, in eval_element
    return self._eval_atom(element)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 230, in _eval_atom
    return self.find_types(scope, atom, stmt.start_pos, search_global=True)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 120, in find_types
    return f.find(scopes, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 87, in find
    types = self._names_to_types(names, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 233, in _names_to_types
    new_types = _name_to_types(self._evaluator, name, self.scope)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 278, in _name_to_types
    types += _remove_statements(evaluator, typ, name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 323, in _remove_statements
    types += evaluator.eval_statement(stmt, seek_name=name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 23, in run
    result = func(evaluator, stmt, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 135, in eval_statement
    types = self.eval_element(stmt.get_rhs())
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 259, in eval_trailer
    new_types += self.execute(typ, node, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 299, in execute
    types = func(self, arguments)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 124, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 560, in py__call__
    return FunctionExecution(evaluator, self, params).get_return_types()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 100, in run
    result = func(execution, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 624, in get_return_types
    types += self._evaluator.eval_element(r.children[1])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 259, in eval_trailer
    new_types += self.execute(typ, node, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 299, in execute
    types = func(self, arguments)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 124, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 560, in py__call__
    return FunctionExecution(evaluator, self, params).get_return_types()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 100, in run
    result = func(execution, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 624, in get_return_types
    types += self._evaluator.eval_element(r.children[1])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 259, in eval_trailer
    new_types += self.execute(typ, node, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 299, in execute
    types = func(self, arguments)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 364, in py__call__
    return Function.py__call__(self, evaluator, params)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 122, in <lambda>
    return lambda *args, **kwargs: self.func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 560, in py__call__
    return FunctionExecution(evaluator, self, params).get_return_types()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 100, in run
    result = func(execution, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 624, in get_return_types
    types += self._evaluator.eval_element(r.children[1])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 169, in eval_element
    return self._eval_atom(element)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 230, in _eval_atom
    return self.find_types(scope, atom, stmt.start_pos, search_global=True)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 120, in find_types
    return f.find(scopes, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 87, in find
    types = self._names_to_types(names, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 233, in _names_to_types
    new_types = _name_to_types(self._evaluator, name, self.scope)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 278, in _name_to_types
    types += _remove_statements(evaluator, typ, name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 323, in _remove_statements
    types += evaluator.eval_statement(stmt, seek_name=name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 23, in run
    result = func(evaluator, stmt, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 135, in eval_statement
    types = self.eval_element(stmt.get_rhs())
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 259, in eval_trailer
    new_types += self.execute(typ, node, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 299, in execute
    types = func(self, arguments)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 364, in py__call__
    return Function.py__call__(self, evaluator, params)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 122, in <lambda>
    return lambda *args, **kwargs: self.func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 560, in py__call__
    return FunctionExecution(evaluator, self, params).get_return_types()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 100, in run
    result = func(execution, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 624, in get_return_types
    types += self._evaluator.eval_element(r.children[1])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 169, in eval_element
    return self._eval_atom(element)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 230, in _eval_atom
    return self.find_types(scope, atom, stmt.start_pos, search_global=True)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 120, in find_types
    return f.find(scopes, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 87, in find
    types = self._names_to_types(names, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 233, in _names_to_types
    new_types = _name_to_types(self._evaluator, name, self.scope)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 278, in _name_to_types
    types += _remove_statements(evaluator, typ, name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 323, in _remove_statements
    types += evaluator.eval_statement(stmt, seek_name=name)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 23, in run
    result = func(evaluator, stmt, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 135, in eval_statement
    types = self.eval_element(stmt.get_rhs())
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 259, in eval_trailer
    new_types += self.execute(typ, node, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 299, in execute
    types = func(self, arguments)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 364, in py__call__
    return Function.py__call__(self, evaluator, params)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 122, in <lambda>
    return lambda *args, **kwargs: self.func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 560, in py__call__
    return FunctionExecution(evaluator, self, params).get_return_types()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/recursion.py", line 100, in run
    result = func(execution, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/representation.py", line 624, in get_return_types
    types += self._evaluator.eval_element(r.children[1])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 187, in eval_element
    types = self.eval_trailer(types, trailer)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 267, in eval_trailer
    new_types += get(self, node)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/iterable.py", line 229, in get_index_types
    types += self.get_exact_index_types(index.obj)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/iterable.py", line 255, in get_exact_index_types
    return self._evaluator.eval_element(self._items()[mixed_index])
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 169, in eval_element
    return self._eval_atom(element)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 230, in _eval_atom
    return self.find_types(scope, atom, stmt.start_pos, search_global=True)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/__init__.py", line 120, in find_types
    return f.find(scopes, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/debug.py", line 52, in wrapper
    result = func(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 87, in find
    types = self._names_to_types(names, search_global)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 233, in _names_to_types
    new_types = _name_to_types(self._evaluator, name, self.scope)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/finder.py", line 269, in _name_to_types
    for_types = iterable.get_iterator_types(for_types)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/iterable.py", line 418, in get_iterator_types
    result += it.iter_content()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/iterable.py", line 575, in iter_content
    module = self.var_args.get_parent_until()
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/evaluate/param.py", line 56, in get_parent_until
    return element.get_parent_until(*args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/_compatibility.py", line 124, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "/home/jstanek/system/dotfiles/vim/bundle/YouCompleteMe/third_party/ycmd/third_party/JediHTTP/vendor/jedi/jedi/parser/tree.py", line 123, in get_parent_until
    while scope.parent is not None:
AttributeError: 'ListComprehension' object has no attribute 'parent'
vheon commented 8 years ago

The AttributeError: 'ListComprehension' object has no attribute 'parent' is a jedi problem and should be reported upstream /cc @davidhalter. The fact that it brings down the server is strange and I will look into it this weekend. Thanks for the report :+1:

vheon commented 8 years ago

The fact that it brings down the server is strange

Actually the server do not crash. In fact if you remove the if response. part and type again requests. you will get the completion so the only problem here is the bug in jedi itself. That being said I will close this bug since there is nothing I can do here. If I misunderstood something we can always re-open this. Thanks again :)

afiodorov commented 8 years ago

This bug is blocking my workflow with vim as I am unable to type - ycm dialog keeps showing up. Is there a quick workaround for ycm to keep trying to work, but not blocking my input?

vheon commented 8 years ago

@afiodorov what do you mean by "is blocking my input"? When I try it, I get the error at every keystroke, yes, but since the semantic completion is failing it falls back to identifier completion.

nhynes commented 8 years ago

While the error is occurring, the b, g, k, and u keys are ignored. Do you have any hints on what might be causing this bug? It's stifling my productivity enough to motivate my fixing it.

thefzsalam commented 8 years ago

It happens for me too. Relevant piece of code:

import requests
resp = requests.post('http://www.google.com')
resp.[cursor-here]  
wenjuno commented 8 years ago

I'm aware this issue is closed but I would like to share what I found today for those who are bothered by this issue.

The bug associated with Jedi can be found here: https://github.com/davidhalter/jedi/issues/592, and very unfortunately it is not fixed yet and there is no clue about any schedule of fixing it.

However, the odd about this issue is that while YCM relies on Jedi as a backend for python completion and triggers the aforementioned bug, Jedi-vim is surprisingly unaffected, i.e. it gives the completion options without error.

I have looked at the codes of Jedi and Jedi-vim, and I think that Jedi-vim doesn't use Jedi for the completion but use vim's built-in omni-completion instead, but Jedi-vim does use Jedi for looking up the function signature and, of course, display the signature in vim. The function signature look-up functionality is kind of independent of the completion functionality so Jedi-vim won't trigger the bug. BUT my knowledge about vim-script and how vim works with python code is very limited, so I can be totally wrong about this explanation.

My suggestion as a workaround for this issue is just disable YCM for python file and use Jedi-vim instead. That being said, I would like to propose a feature request that YCM could follow the way Jedi-vim works so this issue can be solved temporarily before Jedi's bug is fixed.

As for the issue of "blocking the input", here is my explanation based on my experience and the suggestions. The reason why the error message blocks the input (typing) and requires user to press Enter key is that the error message cannot fit into vim's command line (the bottom space where user type in commands). If you make your window (probably terminal window) wide enough (a minimum of 95 columns for me), the error message won't appear at all (probably overwritten by the "-- INSERT --" indicator, the error itself will still be there and can be found in the YCM debug stderr output). Anther way around will be to set cmdheight=2 to avoid "hit-enter" prompt (:help cmdheight). That being said, if you switch to Jedi-vim for python files, there will be no such error message in the first place.

micbou commented 8 years ago

However, the odd about this issue is that while YCM relies on Jedi as a backend for python completion and triggers the aforementioned bug, Jedi-vim is surprisingly unaffected, i.e. it gives the completion options without error.

I have looked at the codes of Jedi and Jedi-vim, and I think that Jedi-vim doesn't use Jedi for the completion but use vim's built-in omni-completion instead, but Jedi-vim does use Jedi for looking up the function signature and, of course, display the signature in vim. The function signature look-up functionality is kind of independent of the completion functionality so Jedi-vim won't trigger the bug. BUT my knowledge about vim-script and how vim works with python code is very limited, so I can be totally wrong about this explanation.

I can reproduce the same issue with jedi-vim. The plugin automatically sets the omnifunc to jedi#completions. You can check this by running :set omnifunc? in Vim. In your case, you are probably loading the plugin in an unexpected way and the default omnifunc is used: pythoncomplete#Complete, which does not have the issue.

wenjuno commented 8 years ago

Thanks for your reply @micbou ! It's all my bad that I forgot the after/ directory. You are totally correct and once using jedi#completions the same bug will be triggered.