завершение интерпретатора для свойств джедая - PullRequest
0 голосов
/ 21 ноября 2018

Я хотел бы улучшить автозаполнение в консоли Python, которая является частью проекта, над которым я работаю.Хотя jedi отлично подходит для этого в целом, есть один особый случай, когда он не может найти никаких предложений о завершении: Свойства классов, определенных как методы с декоратором @property.Следующий пример должен объяснить мою проблему:

import jedi

class B:
    def __init(self):
        pass

    def see_me(self):
        pass

class A:
    def __init__(self):
        pass

    @property
    def b(self):
        return B()

    def get_b(self):
        return B()

a = A()

script = jedi.Interpreter('a.b.', [locals()])
comps = script.completions()
print('Interpreter completion (property): ', comps)

script = jedi.Interpreter('a.get_b().', [locals()])
comps = script.completions()
print('Interpreter completion (method): ', comps)

выполнение скрипта возвращает:

Interpreter completion (property):  []
Interpreter completion (method):  [<Completion: see_me>, ...]

Когда вызывается метод с декоратором @property, джедай не находит никакого завершения.«Нормальный» метод работает просто отлично.Использую ли я здесь джедая неправильно или это только один из случаев, который слишком трудно решить для джедая?

Заранее спасибо за вашу помощь!

PS: Я также пытался поставитьвесь код до a = A() в строку и использовал Script вместо Interpreter, чтобы получить завершение.Интересно, что тогда удалось найти правильное завершение и для метода @property.

...