[IronPython] [wingide-users] Using Wing IDE with IronPython - autocomplete for .NET objects (PI file generator)

Michael Foord fuzzyman at voidspace.org.uk
Wed Apr 29 07:58:40 PDT 2009


Cenovsky, Lukas wrote:
> Would be nice to have something similar for vim :-)
>
>   

Go for it. :-)

Michael

> --
> -- Lukas
>  
>
>   
>> -----Original Message-----
>> From: users-bounces at lists.ironpython.com 
>> [mailto:users-bounces at lists.ironpython.com] On Behalf Of Michael Foord
>> Sent: Wednesday, April 29, 2009 4:45 PM
>> To: Wing Users
>> Cc: Discussion of IronPython
>> Subject: Re: [IronPython] [wingide-users] Using Wing IDE with 
>> IronPython - autocomplete for .NET objects (PI file generator)
>>
>> Hello all,
>>
>> Attached is an updated script for generating PI files to provide 
>> autocomplete on standard .NET objects.
>>
>> It now handles all the standard .NET member types (including static 
>> properties, enumeration fields, indexers, events and so on).
>>
>> It also recurses into sub-namespaces generating new pi-files 
>> for all of 
>> them.
>>
>> This script is hardcoded to add references to, and then generate PI 
>> files for:
>>
>>     System
>>     System.Data
>>     System.Drawing
>>     System.Windows.Forms
>>
>> It generates 90 pi files (90 namespaces) taking up 24mb! The 
>> autocomplete it provides is awesome though. :-)
>>
>> I had to do a fair bit of violence to the standard 
>> generate_pi.py script 
>> so I *doubt* it is desirable to merge it back in. Obviously 
>> very happy 
>> for this to be included with Wing if you want, or merged if 
>> you think it 
>> is worth it. Is it ok for me to offer this for download from 
>> my site? If 
>> I make further changes I will email this list.
>>
>> The big thing to add is the return type for methods.
>>
>> Is it possible to specify return types for properties? (Currently any 
>> attribute without an obvious parallel in Python I have turned into a 
>> property in the PI files).
>>
>> The only real caveat with the current script (that I am aware 
>> of - bug 
>> reports and contributions welcomed) is that None is a common 
>> enumeration 
>> field member. This is invalid syntax in Python, so I rename 
>> these to None_.
>>
>> There are quite a few minor changes sprinkled through the code - plus 
>> the __main__ part of the script is very different. I have 
>> tried to mark 
>> changes with a # CHANGE: comment, but it should be relatively 
>> amenable 
>> to diffing anyway...
>>
>> For reference I was using IronPython 2.0.1, with .NET 3.5 
>> installed and 
>> Wing 3.2beta 1.
>>
>> All the best,
>>
>> Michael Foord
>>
>> Michael Foord wrote:
>>     
>>> Hello all,
>>>
>>> I've created a modified version of the 'generate_pi.py' which 
>>> generates the interface files for .NET libraries. It is attached.
>>>
>>> At the moment it generates PI files for the following assemblies / 
>>> namespaces (hardwired at the bottom of the code):
>>>
>>>    System
>>>    System.Data
>>>    System.Drawing
>>>    System.Windows.Forms
>>>
>>> To run it, create a new directory and add this to the 
>>>       
>> 'Interface File 
>>     
>>> Path' (File menu -> Preferences -> Source Analysis -> Advanced -> 
>>> Insert).
>>>
>>> Then from the command line switch to this directory (if you are on 
>>> Vista you will need to run cmd with admin privileges due to 
>>>       
>> a defect 
>>     
>>> explained below). Execute the command:
>>>
>>>    ipy generate_pi_for_net.py
>>>
>>> This generates the pi files. It doesn't work *as well* on 64 bit 
>>> windows because the .NET XML help files (or whatever they 
>>>       
>> are called) 
>>     
>>> are in a different location so the docstrings are not 
>>>       
>> always available 
>>     
>>> - which is why I am not just distributing the pi files yet.
>>>
>>> The script doesn't yet understand static properties on 
>>>       
>> classes - so it 
>>     
>>> actually *fetches* static properties rather than looking at the 
>>> descriptor (which is available in the class __dict__ so 
>>>       
>> should be easy 
>>     
>>> to fix). This is what causes inadvertent registry lookups etc and 
>>> therefore requires admin privileges.
>>>
>>> It doesn't yet understand multiple overloads. This may require a 
>>> change to Wing or may not matter.
>>>
>>> It isn't yet able to do anything with the information about return 
>>> types - which would allow Wing to know the type of objects 
>>>       
>> returned by 
>>     
>>> methods. This may be easy to add?
>>>
>>> It is late so I am going to bed. At some point I will explain the 
>>> simple changes I  had to make to the standard generate_pi.py script 
>>> (although they are mostly straightforward). I will also do further 
>>> work on it as it will be very useful to me...
>>>
>>> All the best,
>>>
>>> Michael
>>>
>>>
>>>       
>> --------------------------------------------------------------
>> ----------
>>     
>>> _________________________________________________
>>> Wing IDE users list
>>> http://wingware.com/lists/wingide
>>>       
>> -- 
>> http://www.ironpythoninaction.com/
>>
>>
>>     
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>   


-- 
http://www.ironpythoninaction.com/



More information about the Users mailing list