python IDE and function definition

Chris Friesen cbf123 at mail.usask.ca
Mon Sep 23 13:29:00 EDT 2013


On 09/23/2013 09:32 AM, Fabio Zadrozny wrote:
> On Mon, Sep 23, 2013 at 12:06 PM, Chris Friesen <cbf123 at mail.usask.ca
> <mailto:cbf123 at mail.usask.ca>> wrote:
>
>
>     Hi all,
>
>     I'm looking for a python IDE (for Linux) that can look at code like
>     this:
>
>     class ConductorManager(manager.__Manager):
>          def compute_recover(self, context, instance):
>              self.compute_api.stop(context, instance, do_cast=False)
>
>     where I could highlight the "stop" and ask it to go to the
>     definition. (Where the definition is in a different file.)
>
>     I'm running into issues where my current IDE (I'm playing with
>     Komodo) can't seem to locate the definition, I suspect because it's
>     too ambiguous.
>
>     The fact that python is dynamically typed seems to mean that there
>     could potentially be multiple answers, any class with a stop()
>     method with the right signature could presumably be plausible,
>     right?  So rather than give up, I'd like to have my IDE suggest all
>     possible answers.
>
>
>
> PyDev (http://pydev.org/) is able to do that (i.e.: if the find
> definition doesn't find it directly, it shows a list with possible
> matches for you to choose the most appropriate one:
> http://pydev.org/manual_adv_gotodef.html) -- additionally, you can also
> search for methods/classes/attributes directly:
> http://pydev.org/manual_adv_open_decl_quick.html

I've installed eclipse/pydev and tried it out.  The problem that I'm 
seeing is that it will show me *all* stop() methods that it knows about, 
regardless of function signature.

So in the above case, my function call looks like:
self.compute_api.stop(context, instance, do_cast=False)

but pydev will offer matches that look like:
def stop(self):

This runs into problems with commonly-named functions.  I tried 
searching for the start() method in:

self.compute_api.start(context, instance)

and it complained that there were too many possible results.

Basically, I'm looking for something smart enough to throw out methods 
with the same name but that don't match the signature.

Chris




More information about the Python-list mailing list