我正在使用 deoplete-jedi 在 Neovim 中提供自动完成功能。我发现如果在使用Pillow时使用Image.open()方法创建 Image 对象实例,则自动完成功能不起作用。但是对于使用Image.new()方法创建的 Image 实例,自动完成工作正常。
经过大量调试,我终于找到了原因。因为 Jedi 包无法为Image.open()
方法创建的 Image 实例提供补全。
下面的代码显示了差异:
import jedi
source1 = '''
from PIL import Image
im = Image.new('test.jpg', (128, 128))
im.
'''
script1 = jedi.Script(source1, 4, len('im.'), 'example1.py')
print(script1.completions())
source2 = '''
from PIL import Image
im = Image.open('test.jpg')
im.
'''
script2 = jedi.Script(source2, 4, len('im.'), 'example2.py')
print(script2.completions())
由于这两种方法都返回一个 Image 对象,我不知道为什么自动完成的行为不同。
版本信息
- Python:Python 3.6.8
- 绝地:0.13.3
- 枕头:5.2.0