Saturday, June 19, 2010

Iron Web Analyzer and Scripting TIBCO Spotfire

IronPython is a great language for application development, but also provides a readymade scripting engine for adding to .NET applications.

A fresh example of the first, an application written in IronPython, is the open source "Iron Web Analyzer" (Windows only I believe):

Iron Web Analyzer is an open source application for web masters to analyze web sites content. Iron Web analyzer employ Iron Python to analyze server responed data. Iron Web Analyzer downloads data from server and dispatches them between Iron Python Analyzer installed on application and collect analyze results produced by Python applications.
An example of the second use case for IronPython is the recently announced support for IronPython scripting in TIBCO Spotfire:
In TIBCO Spotfire version 3.1, TIBCO introduces the concept of Script Controls. Scripts Controls provide the ability to add IronPython scripts into a Text Area inside a Spotfire Analysis file. The script has access to the full Client API (from the SDK), and its goal is to perform common automation tasks.


SharpDevelop 4 and unittest2

Two weeks ago I reported on the latest news from SharpDevelop, the integration of unittest into SharpDevelop 4 for testing with IronPython. In my report I suggested that supporting unittest2 would be even better and Matt Ward has risen to the challenge.

Matt's latest blog entry shows how to use unittest2 to run IronPython unit tests in the forthcoming SharpDevelop 4 IDE:

SharpDevelop 4 has been updated to support running IronPython unit tests that use the unittest2 library.
Make sure unittest2 is on the Python path before running the unit tests.
Out of the box SharpDevelop will actually use the unittest library's test runner. This seems to work however if you actually need to use the unittest2 test runner then you can modify the following two files in the folder: AddIns\AddIns\BackendBindings\PythonBinding\TestRunner.
  • sdtest.py 
  • sdtestrunner.py

Tuesday, June 15, 2010

IronPython at TechEd

TechEd 2010 has just finished, one of Microsoft's biggest developer conferences. Lisa Feigenbaum, who is program manager for the Visual Studio Languages Community, has posted a blog entry with links to all the Visual Studio Language & IDE Resources from TechEd North America 2010 (C#, VB, F#, IronPython, IronRuby).

Our own inestimable Dino Viehland, the IronPython workhorse and genius, was there and gave two presentations on IronPython:

Abstract: The Dynamic Language Runtime (DLR) brings the power of dynamic languages to Microsoft .NET. It provides the plumbing for IronPython and IronRuby, a shared language hosting API, and also enables interoperability with static languages like C# and Visual Basic. Come hear how you can leverage these technologies in your own applications, and learn why dynamic languages deserve a spot in your toolbox!
 Abstract: IronPython Tools for Visual Studio is an extension for Microsoft Visual Studio which provides Python programmers with a great development experience inside of Visual Studio. It supports all of the usual Visual Studio features such as editing including rich Intellisense, debugging, light weight Python projects, and participating in Visual Studio solutions. In addition to the usual Visual Studio features it also supports a REPL window for a lightweight development experience which Python developers are accustomed to. Come and see IronPython Tools in action and see some new and exciting ways to work in Visual Studio.

Wednesday, June 09, 2010

Finding lyrics and converting Word files to text

Two fun, and possibly useful, recipes using IronPython have surfaced in blog entries recently.

This first recipe is from Mark Bloodworth, a Microsoft architect with a fondness for Python and IronPython:
I was looking some lyrics up online this week, so I wondered how hard to would be to write a simple application to find lyrics to your favourite song.  Or to your least favourite song.  Or, in fact, to any arbritrary song.  Via programmableweb, I found the API to lyricsfly, which looked easy to use.  Another IronPython console app beckoned.
Keeping it simple, I decided to use optparse to parse the command-line options and urllib to make the http calls.  This way the program can be called with the user_id that lyricsfly requires (head to their website and you can get a temporary weekly key to try this out) along with the artist name and song title.  What I decided not to do at this stage was to process the resulting XML.  Or handle any errors.  Or handle cases where the user_id, artist or title is not supplied.  But, although rudimentary, it works. ...
While SaveAs method in Word has Encoding parameter, it wasn’t quite clear, how would I specify it from pywin32.
So, my next attempt was to use IronPython, since it has native .NET interface with Office. The biggest advantage of this approach was the fact that you can do dir() on all objects and methods in IronPython shell.
After some googling on encodings, and IronPython Word scripting, here is the script I came up with. ...

Wednesday, June 02, 2010

Unit Testing with IronPython in SharpDevelop 4

Microsoft may have finally pulled out their collective thumbs and started to support IronPython in Visual Studio, but SharpDevelop has always led the way as far back as 2007 in supporting IronPython.

SharpDevelop 4 is now under development and integrates with the unittest module to support unit testing with IronPython. This feature requires Python 2.6 to be installed, and IronPython debugging is not currently working with SharpDevelop 4, but it looks like it will a great release.

Matt Ward gives us the details in his latest entry on the SharpDevelop community blog:


SharpDevelop 4 has been updated to support unit testing with IronPython.
First you will need to install Python 2.6. SharpDevelop uses the standard Python unit test library (unittest.py) to run the unit tests.
...
Once the project reference is added the unit tests can be run in the normal way by right clicking in the Unit Tests window and selecting Run tests. You can run all the tests in a project, all tests in a class or a single test method.
The output generated when running the unit tests is shown in the Output window.
Test failures are displayed in the Errors window. Clicking an error will open the corresponding code in the editor.

Of course support for unittest2 would be even better...