Eclipse pydev auto-suggestions don't work in some cases
My question is probably stupid and I hope somebody has succeeded in solving this issue.
Sometimes I cannot see right suggestions in auto-completion box (Eclipse 3.5.2, PyDev 1.5.7). For example:
import em开发者_运维问答ail
fp = open('my.eml', 'rb')
msg = email.message_from_file(fp)
msg
now is a Message object. And functions like get_payload() works fine.
msg.get_payload()
But I don't get get_payload()
in auto-completion list.
I think PyDev has no idea of what msg
is, so it doesn't know what to show.
Maybe I should import something else, not only email
module?
Thanks in advance!
I struggled with this question quite a bit too, until I came across this link. I used the second solution suggested in that link, and it works like a charm.
Basically you need to insert assert isinstance(msg, Message)
after you get msg
from the function call.
Chances are, the current PyDev build hasn't gone to a point to be able to extract from a function (message_from_file()
in your case) to know what kind of object it returns in order to provide auto-completion hinting.
See http://sourceforge.net/projects/pydev/forums/forum/293649/topic/3697707.
Edit: I believe there is interest in PyDev to support the new Python 3 function syntax, PEP 3107
, which will solve some of your problems ... in the future.
I know @type in docstring works. As in:
from collections import deque
def foo(a):
''' code completion sample
@type a: deque
'''
return a.popleft() # Code completion will work here
I have not been able to find a way to do it inline within code (except in ways mentioned elsewhere where you simply pretend to assign the variable an instance of a type) as in:
from collections import deque
def foo(a):
''' code completion sample '''
if false: a = deque()
return a.popleft() # Code completion will also work here
But I'm not fond of this method because it probably imposes some performance / code size penalty. I don't know / haven't checked if Python is smart enough to remove this assignment during compile time.
Thanks to SiSoie, here's a link to page explaining possibilities.
精彩评论