Неправильные завершения джедаев для многопроцессорного модуля в python3
Работая с autocomplete-python атома, который использует джедай, я обнаружил, что есть неправильные предложения для multiprocessing
модуль в python3
, Вот пример:
>>> import jedi
>>> source = '''
... import multiprocessing as mp
... mp.Pro'''
>>> script = jedi.Script(source, 3, len('mp.Pro'), 'example.py')
>>> script.completions()
[<Completion: process>]
Модуль на самом деле имеет process
пакет, но также имеет Process
класс внутри области видимости модуля:
>>> import multiprocessing as mp
>>> [n for n in mp.__all__ if n.endswith('rocess')]
['Process', 'current_process']
Сравнение python2 и python3 multiprocessing
Модуль Я обнаружил, что они немного отличаются. Современная версия импортирует пространство имен из пространства имен контекста по умолчанию:
globals().update((name, getattr(context._default_context, name))
for name in context._default_context.__all__)
__all__ = context._default_context.__all__
К сожалению, у меня нет идей, как решить эту проблему или обойти ее. У вас есть какие-нибудь предложения?
1 ответ
Джедай не понимает, как писать в глобалы ().
Это явно упоминается в http://jedi.readthedocs.io/en/latest/docs/features.html
В течение очень долгого времени я даже не думал о реализации этого, теперь я открыт для этого. Но это может продолжаться долго. (Это не было бы большим убийцей производительности больше.)
Однако сейчас я думаю, что вы просто должны жить с этим вопросом.