Python 绝地完成不适用于使用Image.open()方法创建的图像对象
我正在使用deoplete绝地在Neovim内部提供自动完成。我发现,如果在使用时使用方法创建图像对象实例,则自动完成不起作用。但对于使用方法创建的图像实例,自动完成功能可以正常工作 经过多次调试,我终于找到了原因。因为绝地软件包无法为Python 绝地完成不适用于使用Image.open()方法创建的图像对象,python,autocomplete,python-imaging-library,code-completion,python-jedi,Python,Autocomplete,Python Imaging Library,Code Completion,Python Jedi,我正在使用deoplete绝地在Neovim内部提供自动完成。我发现,如果在使用时使用方法创建图像对象实例,则自动完成不起作用。但对于使用方法创建的图像实例,自动完成功能可以正常工作 经过多次调试,我终于找到了原因。因为绝地软件包无法为Image.open()方法创建的映像实例提供补全 下面的代码显示了这些差异: import jedi source1 = ''' from PIL import Image im = Image.new('test.jpg', (128, 128)) im.
Image.open()
方法创建的映像实例提供补全
下面的代码显示了这些差异:
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())
由于这两种方法都返回图像对象,我不知道为什么自动完成的行为不同
版本信息
- Python:Python 3.6.8
- 绝地武士:0.13.3
- 枕头:5.2.0
Image.open()
这样的东西做缓存之类的事情,在缓存中几乎不可能推断出正确的类型
在这个例子中(请看),绝地试图遵循im
->的核心(…)
->其他im
->工厂(…)
->工厂
看起来像工厂,接受=打开[i]
->但什么是打开的
->它被定义为一个空的{/code>
,并填入寄存器
或从外部->寄存器\u open
不在同一文件中调用
这就是绝地停止寻找解决方案的地方。因此,您可以看到,推断类型并不总是可能的。甚至我也不确定返回的类型是什么,我试着看了10分钟。解决方案通常是为此创建存根/类型注释