Revision 6 as of 2005-11-18 19:40:54

Clear message

Anchor(1) #1. Introduction to Pyparsing: An Object-oriented Easy-to-Use Toolkit for Building Recursive Descent Parsers

Paul McGuire / Alan Weber & Associates, Inc.

pyparsing is a pure-Python module, containing a class library for easily creating recursive-descent parsers. pyparsing's syntax provides tools for both simple tokenization and data structuring and interpretation. I will give an overview of the basic features of pyparsing, and a *very quick* overview of the advanced features. I will close with 3 or 4 application examples, time-permitting. (For more detail on the type of information I have to present on pyparsing, you can visit my SourceForge project web page at

Anchor(2) #2. Agile Documentation: using tests as documentation

Grig Gheorghiu

Agile Documentation means having unit tests serve a double role: testing your code and documenting it at the same time. I borrowed the term "Agile Documentation" from an article called "Double Duty" written by Brian Button.

In the talk, I will show how doctest and epydoc make it very easy to automatically generate documentation in the form of Test Lists and Test Maps. To see how it all integrates together, check out

I will also show how the Django project generates API reference Web pages automatically from doctest-based unit tests.

I will finish my talk by mentioning the Wiki functionality of FitNesse as a mechanism for using acceptance tests as documentation.

The talk is based on the following blog entries I posted:

Anchor(4) #4. An Interactive Adventure Game Engine Built Using Pyparsing

Paul McGuire / Alan Weber & Associates, Inc.

A pure-Python command interpreter engine for creating text adventure games. Used as an example of creating a custom "little language", in this case, the domain being a simple text-based adventure game. Provides a complete example of using pyparsing to structure input commands, with an internal Command structure to implement command behavior.

Anchor(5) #5. Desktop Application Programming With PyGTK and Glade

Michael Urban / Lion Research Center

GTK is the standard toolkit used in the Gnome desktop environment. Python, combined with PyGTK and the Glade visual designer is rapidly becoming the Visual Basic of the Gnome world for quickly and easily building fully featured GUI applications. However, applications written in Python and PyGTK are not restricted to Gnome or Linux. In fact, Python PyGTK applications can successfully compete with Java Swing applications in all areas, including cross-platform capability, features, and performance.

In this tutorial presentation, I will show how to use the Glade visual designer plus the PyGTK module to quickly and easily build GTK applications using Python. Since GTK was originally written for programming the GIMP image manipulation program, we get a lot of very powerful image manipulation capability for free in GTK. As such, the tutorial will be focused around a simple image processing program that will give us the ability to preview images in a file window, load images for viewing, and rescale images. I will close the tutorial by giving a demonstration of a significantly complex real world Python PyGTK application that exercises many of the features of PyGTK including image editing, tables with custom table cell renderers, resizable dividers, and complex data entry forms.

Anchor(6) #6. Vertebral Fracture Analysis

Wesley J. Chun / CyberWeb Consulting

Vertebral Fracture Analysis

Several years ago, at PyCon 2003, I presented a general paper on how Synarc, a medical imaging company in San Francisco, developed medical applications using Python. This time, I would like to focus on one specific project which was my primary responsibility as a Senior Software Engineer there.

The VFract application is used as part of a set of radiology services offered by Synarc. In addition to data entry and image digitization, Synarc provides reading services using software such as VFract to obtain critical patient data necessary for pharmaceutical companies participating in clinical trials to determine the effectiveness of developing medicines. The use of such software helps automate and expedite patient assessment during the course of these clinical trials, overall accelerating the time it takes to get new medicines and treatments to market. The use of VFract has consistently resulted in about 60% of the company's annual revenue.

The VFract application is one that has been painstakingly developed for use by doctors (specifically radiologists) to perform vertebral fracture analysis. Spinal fractures are a primary result of osteoporsis, a disease afflicting 50% of all women over age fifty. (Interestingly enough, it also affects one in eight men older than fifty.) There are no "symptoms" of osteoporosis; in other words, "nothing happens" until fractures start showing up. There is also no known cure to oseteoporosis, but many believe it is highly preventable.

VFract can be used to determine whether new medicines are able to either prevent or retard vertebral fracture. (Sadly, once fracture occurs, there is no healing nor reversal.) VFract is used by Synarc staff doctors to analyze patients over time, i.e., during the course of a clinical trial. In actuality, VFract is a suite of applications which perform multiple phases of patient assessment. Each phase uses a different application which contributes a different data set to the overall analysis of a single patient's dataset.

The first phase is vertebral identification. This is where a doctor or trained medical technician determine what the vertebral bodies are (bones of the spinal column) and labels them on-screen with the help of the Label application.

Once the first phase is complete, any of three assessment phases can occur. Which phases are executed is determined by the contract between Synarc and the pharmaceutical drug company. Needlesstosay, each phase has a certain financial obligation, some more expensive than others, so whichever assessment phase(s) are chosen are based on need and budget. One of the phases, Quantitative Morphometry, using the VFract application QM, can be performed by either a doctor or trained medical application while the other two, Semi-Quantitative (VFract SQ application) and Binary Semi-Quantitative (VFract BSQ application) must be performed by a radiologist.

In this talk, we will discuss all four of the VFract applications, the open source components used to build them (specifically the use of Python as the primary development language), as well as what the general system hardware architecture is made up of.

Anchor(8) #8. Scripting .NET with IronPython

Martin Maly / Microsoft

IronPython is a fast implementation of the Python programming language on the .NET Framework. While it stays true to the beauty and simplicity of Python language, IronPython offers Python programmers seamless access to the riches of .NET libraries and applications in a fully dynamic environment.

This talk will focus on practical side of utilizing the power of IronPython beyond the interactive console development and exploration. It will demonstrate how to use IronPython to add rich scripting support to existing .NET applications. This will allow us not only to explore and animate the application but also extend its functionality with custom Python code. We will also demonstrate how IronPython can be used to bring together and orchestrate a wide variety of .NET components and services.

This talk is targeted at both Python programmers looking to take advantage the .NET Framework and at .NET programmers looking to learn how Python can make their jobs easier.

Anchor(11) #11. Effective AJAX with TurboGears

Kevin Dangoor / Blazing Things LLC

Modern web browsers, combined with programming frameworks like TurboGears, allow for a rich interaction model that was not possible previously. This interaction model, which is commonly being referred to as AJAX regardless of whether XML is involved or not, brings new usability challenges. Just as people have gotten used to browser user interface elements that have become de facto standards, AJAX rises up to challenge user expectations.

This talk, and the accompanying paper, will briefly discuss some of the pitfalls and include demonstrations and code that illustrate ways to do AJAX so that users are pleasantly surprised, rather than frustrated.

Each discussion will include an example implementation done with Python and TurboGears with highlights of how the technique is actually implemented.

Though TurboGears will be used as the demonstration framework, previous experience with TurboGears will not be required to understand the talk or the examples.

Anchor(12) #12. Stackless Python in EVE Online

Kristján Valur Jónsson / ccp games inc.

The massively multiplayer online role-playing game Eve Online, developed by CCP games in Reykjavík, Iceland, makes heavy use of Stackless Python to implement game features. This presentation shows how Stackless Python has been used throughout the code to create a seamless environment of cooperative multitasking in the game engine and how Python code and C code interacts in a complex real-world environment.

Anchor(13) #13. Cuaima MetaInstaller. New tool for managing System Installations.

Jesus Rivero / Latinux

The intended use of this timeslot is to introduce "Cuaima" a new Web-Oriented (LGPL) software program we are writing to simplify the installation of custom GNU/Linux Distributions.

Cuaima is a MetaInstaller for GNU/Linux and *BSD Operating Systems that runs on top of a (Python) WebServer to provide local, remote and massive installations of these *NIX flavoured Systems. The installer is capable of installing any kind of Distribution and configuring it properly with preconfigured files or custom parameters such as the Distribution to be installed, user parameters, root's password, network configuration, etc. Cuaima takes the whole process of installation to another level.

Cuaima is written almost entirely in Python. The rest of the code is Javascript for client-side tasks such as field validator's and an implementation of XMLRPC to pro

Unable to edit the page? See the FrontPage for instructions.