Wing IDE Professional 3.1.1: An IDE for Python

Serious Python developers should take a serious look at the Wing IDE


June 09, 2008
URL:http://www.drdobbs.com/architecture-and-design/wing-ide-professional-311-an-ide-for-pyt/208402843

Mike Riley is a Dr. Dobb's contributing editor. He can be contacted at [email protected].


Before seeing Wingware's Wing IDE in action at PyCon 2008, I was familiar with it in name only. However, the demonstration I saw was so much more than I expected that I asked Stephan Deibel, one of the company's co-founders, to contact me once the latest version was available -- which he did with the recent release of Wing IDE 3.1.1.

I suspect my initial take on software like Wing IDE is similar to that of other Python developers: Why would I need an IDE for Python development? Hardcore Python coders already use text editors like vi or emacs, and most Python distributions ship with IDLE for those who prefer GUI-based development. Still others have bolted on features to the Eclipse IDE to work with Python and other commercial alternatives (like ActiveState's Komodo IDE) offer superb scripting language support for languages like Python.

So what does Wing IDE have that these others do not? Perhaps the most obvious answer to this question is also the best -- the Wing IDE was made for Python developers by Python developers. Anyone who has coded in Python beyond a couple simple utility or sysadmin scripts and has run the demo version of Wing IDE will quickly identify the product's well-tailored fit. Just as Perl and Ruby on Rails developers gravitate toward a particular authoring tool due to some indescribable essence that is woven into the preferred editor's execution, the Wing IDE just feels right from a Python perspective.

[Click image to view at full size]
Figure 1: The Wing IDE shown here running the Linux version with its default interface configuration.

Beyond the subjective comfort level, Wingware has all the bells-and-whistles you'd expect from a polished commercial IDE, especially with one with as long and solid as Wing IDE (Wingware has been in business for nearly 10 years). Given the lengthy list of capabilities, Wingware did a terrific job of keeping them from getting in the way of doing real work. Not once did I feel I was fighting against the IDE, nor did I have any difficulty finding, figuring out, and employing the multitude of features in the software.

Like most modern IDEs, Wing IDE features code intelligence in the form of auto-completion, a class/module browser, function/keyword source assistance, and the expected bracket matching, auto-indenting, syntax auto-checking, and bookmarking. The IDE's gold lies in its extensive local and remote debugging capabilities, including it's ability to set probes and watch values, display stack, and exception data and hooks to debug I/O including live keyboard input during the debug process. This feature alone made my life much easier while developing what was supposed to be a simple Django application. Speaking of web development, the Wing IDE is well-suited for Django, Turbogears, and Zope/Plone-based web development, and the Wingware site provides documented Howto's for those developers seeking optimal code environment configuration for those frameworks.

Other features such as an entirely flexible UI allows placement of window panes and toolbars. Text searches can spider currently open, associated project and anywhere on the disk for basic and Regex-style query string identification. Source version control support for both CVS and Subversion-based repositories help you rest easier, as does the product's unit testing capabilities in the form of unittest, doctest, and nose-style test support.

Wingware publishes the clearly written Wing IDE manual on its website in HTML format for both existing and future customers to reference. The site also points to a handful of Flash-based video demonstrations recorded and hosted by the online tutorial/demo site showmedo.com. The IDE clearly has numerous strengths, but like any commercial offering, it has a few irritations as well. The first is the company's choice to employ the still somewhat controversial approach to licensing, limiting licensed customers the ability to activate the product a maximum of three times. While I can rationalize the company's reasons and certainly their prerogative to do so, it nevertheless comes across as a bit heavy-handed. While Wingware insists it is not collecting any privacy-sensitive information during its online activation process, I can't help but feel uneasy when they a product is not completely transparent in showing exactly what meaningful data is being transacted with their servers during the activation process.

Installation

While the software installs effortlessly on its three target platforms -- Windows, Linux, and OSX -- 64-bit Linux users will need to apply a bit more effort by installing the ia32-libs 32-bit compatibility library dependencies along with forcing the installation (dpkg -i --force-architecture wingide3.1-3.1.1-1.i386.deb on Debian-based distributions, for example) to get the package to install and the program to execute. Even then, calling the getaddrinfo() 32-bit Python function fails on certain distributions; this problem manifests itself when the Wing IDE attempts to activate or submit a bug report. In addition to addressing this limitation, Wingware has announced its intent on compiling a 64-bit edition but is short of disclosing a delivery date for such.

Users of the Mac OSX version should be aware of the product's reliance on Apple's X11 presentation layer (see Figure 2). This dependency makes the IDE look rather ugly and slow, yet identically functional compared to its Windows and Linux counterparts. Like activation, you can rationalize the reason for this using this approach, but it still does not help make the program look any prettier on that platform.

[Click image to view at full size]
Figure 2: Running the Wing IDE on the Mac OSX platform under X11 isn't very attractive, but it is just as functional compared to it's Linux and Windows versions.

Additionally, the X11 server needs to be configured to allow Command key processing such that the expected keypresses work in the IDE (see the alert dialog in Figure 3).

[Click image to view at full size]
Figure 3: Mac OSX users will need to configure X11 to work with Wing IDE's key bindings.

One feature that could have elevated Wing IDE to a position vastly superior to its closest commercial competitors would have been a fully integrated GUI-building tool capable of consuming, displaying, positioning and debugging the various Python GUI libraries such as Tkinter, wxPython, PyGTK, and PyQt. Granted, the before-market functional and integration testing effort alone would have been a considerable challenge for a large team of developers much less the concentrated braintrust behind Wing IDE, but the results would have been a stunning achievement for any Python-centric development environment.

Finally, there are a couple desirable additions that will hopefully make their debut in the next major release. Such welcome enhancements might include refactoring capabilities, Python 3.0, and support for other Python distributions like Jython or IronPython. In the meantime, the 3.1.1 release certainly delivers a wealth of Python goodness.

Conclusion

For 32-bit Linux and Windows Python developers, Wingware's Wing IDE is an excellent, highly productive environment that will no doubt accelerate development time while further stimulating appreciation for the Python language. The product's extensive debugging capabilities coupled with its non-obtrusive code intelligence bundle make it a compelling tool at a reasonable price. Mac OSX and 64-bit Linux users will still benefit from these features but need to accept UI and minor functional annoyances. Regardless of platform, serious Python developers should take a serious look at Wing IDE.

Terms of Service | Privacy Statement | Copyright © 2024 UBM Tech, All rights reserved.