Jedi не работает с библиотекой boto3

Я пытаюсь заставить jedi правильно работать с библиотекой boto3 для Amazon Web Services ( https://github.com/boto/boto3 ).

Наверное, проще всего объяснить на примере:

$ python
Python 3.4.3 (default, Jul 16 2015, 13:03:44) 
[GCC 5.1.1 20150618 (Red Hat 5.1.1-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3
>>> sqs = boto3.resource("sqs", region_name="us-west-2")
>>> sqs.<TAB><TAB>
sqs.Message(            sqs.__dict__            sqs.__format__(
sqs.__hash__            sqs.__module__          sqs.__reduce_ex__(
sqs.__str__(            sqs.get_queue_by_name(
...
>>> type(sqs)
<class 'boto3.resources.factory.sqs'>
>>> 

В интерактивном интерпретаторе я получаю правильное завершение класса. Введите джедай:

>>> import jedi
>>> jedi.__version__
'0.9.0'
>>> jedi.Script('import boto3; sqs = boto3.resou').completions()
[<Completion: resource>, <Completion: resources>]
>>>

До сих пор работаю здесь! Но потом...

>>> code = 'import boto3; sqs = boto3.resource("sqs", region_name="us-west-2"); sqs.'
>>> jedi.Script(code).completions()
[]
>>> 

Я не уверен, виноват ли я, библиотека или джедай.

EDIT: Похоже, что у PyCharm та же проблема: PyCharm intellisense для boto3


person dennis    schedule 24.07.2015    source источник


Ответы (1)


Предоставлено jamesls (из вопроса PyCharm https://stackoverflow.com/a/31681988/3236648):

Это происходит потому, что все методы клиентов boto3 и объекты ресурсов генерируются во время выполнения на основе файла JSON, который описывает, какие операции поддерживает служба. Pycharm должен иметь определенные знания об этом процессе, чтобы автоматически заполнять имена методов.

person dennis    schedule 29.07.2015