views:

105

answers:

1

Hello everyone!

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!

A: 

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.

Xavier Ho
So, I just need to `import __future__`? ;) Ok, we'll wait. Thank you, Xavier!
kishkin
About sourceforge link. I get the thing that PyDev cannot get specifications from compiled files. But there are also source .py files, not only .pyc. And I can actually Ctrl+click from `message_from_file` to the `Message`. But there is ambiguity at the second step: PyDev does not know where this `Parser` class came from. I think this causing the issue with autocompletion.
kishkin
The real issue is from the fact that, PyDev cannot resolve what type of objects any function it's returning. It's a very complicated, possibly costly, operation. It's one of the downsides of using a dynamically typed language. Ah well. || And we basically agree.
Xavier Ho
True. Thanks Xavier!
kishkin