Tutorial :Eclipse pydev auto-suggestions don't work in some cases



Question:

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 email  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!


Solution:1

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.


Solution:2

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.


Solution:3

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.


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »