[wingide-users] Telling the Wing Analyzer the type of object withina container?

Jonathan March JDM at MarchRay.net
Tue Jan 4 18:32:24 MST 2011


+1 to the overall goal. I prefer magic comments to assertions.

On Tue, Jan 4, 2011 at 4:49 PM, David Taylor <taylor234 at comcast.net> wrote:

>  +1, tho I have no better ideas on how to give the hint to Wing.
>
>  ------------------------------
> *From:* wingide-users-bounces at wingware.com [mailto:
> wingide-users-bounces at wingware.com] *On Behalf Of *Russell Warren
> *Sent:* Tuesday, January 04, 2011 10:34 AM
> *To:* wingide-users at wingware.com
> *Subject:* [wingide-users] Telling the Wing Analyzer the type of object
> withina container?
>
>  I'm sure I know the answer, but is there any way to tell the Wing
> Analyzer the "likely type" of objects within a container?
>
> A small example...
>
> ###
>  class PhoneNumber(object):
>   def __init__(self, Type, Number):
>     self.Type = Type
>     self.Number = Number
>
> class User(object):
>   def __init__(self, Name):
>     self.PhoneNumbers = [] #will be list of PhoneNumber class instances
>
> fred = User("Fred")
> fred.PhoneNumbers = [PhoneNumber("work", "555-1212"),
>                      PhoneNumber("home", "555-9876")]
> ###
>
> It would be nice if the following line brought up the autocompletion for
> the PhoneNumber class...
>
>  fred.PhoneNumbers[0].
>
>  but it does not.
>
> This is clearly hard for Wing to figure out, and I often do the recommended
> coaching like this:
>
>  for pn in fred.PhoneNumbers:
>   if 0:
>     assert isinstance(pn, PhoneNumber)
>   print "%s: %s" % (pn.Type, pn.
>
> which works well as it is supposed to, but I end up having a LOT of these
> throughout my code.  What would be much nicer is if I could inform Wing what
> the likely type is that will be contained in the list (or other container)
> at definition time rather than at access time.
>
> Since I expect that this is not currently possible, I'll suggest two ways
> this might be coachable.  One fits the current "no magic Wing code needed"
> mold and just tells Wing the type of one element in the container, with Wing
> assuming the rest are the same type.  eg:
>
> assert isinstance(self.PhoneNumbers[0], PhoneNumber)
>
> Or maybe by adding magic Wing comments like this (not fully thought out):
>
> #WINGTYPE self.PhoneNumbers:list(PhoneNumber)
>
> Containers obviously don't always have a uniform type in them, but they
> often do and I often desperately want this feature.  Where it happens a lot
> is with an ORM and a one-many relationship where you end up with zillions of
> lists of various complex classes.  Telling Wing what class interface is best
> to display for the autocompletion of a list element would be really great.
>
> Thanks for reading,
> Russ
>
>
>
>
>
>
>
>
> _________________________________________________
> Wing IDE users list
> http://wingware.com/lists/wingide
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: /pipermail/wingide-users/attachments/20110104/a8c3e226/attachment.html


More information about the wingide-users mailing list