pyjamas
build AJAX apps in Python (like Google did for Java)

## About pyjamas

Many people, when first finding out about Google Web Toolkit, wonder "why can't I use Python instead of Java?". pyjamas is designed to make that possible. (Download Pyjamas 0.5).

## What is pyjamas?

pyjamas is a stand-alone python to javascript compiler, an AJAX framework / library and a Widget set API.

## Why should I use it?

You can write web applications in python - a readable programming language - instead of in HTML and Javascript, both of which become quickly unreadable for even medium-sized applications. Your application's design can benefit from encapsulating high level concepts into classes and modules (instead of trying to fit as much HTML as you can stand into one page); you can reuse - and import - classes and modules.

Also, the AJAX library takes care of all the browser interoperability issues on your behalf, leaving you free to focus on application development instead of learning all the "usual" browser incompatibilities.

## Overview

Like GWT, pyjamas involves the translation of the application and libraries (including UI widgets and DOM classes) to Javascript and the packaging up of that Javascript code.

There are two core developer tools included with pyjamas. pyjs translates Python code to Javascript by walking the Python abstract syntax tree and generating Javascript.
In many cases, built-in Python types require a custom Javascript implementation. For example, even though Python lists are similar to Javascript arrays, Python lists are converted to custom objects that implement methods such as append. These custom objects, required for translation by pyjs, are defined in a library called pyjslib.
Like GWT, pyjamas comes with a set of UI widgets as well as a library for DOM manipulation. These libraries are written in Python but are, like everything else, translated to Javascript for deployment.
The overall translation of individual components is managed by build which also creates the necessary boilerplate code. The result is a set of .html and .js files that can be served up by a Web server.
There are other components planned which have not been covered here such as server-side code for communication in client-server applications. The examples do however contain JSONRPC server-side source code (in cgi python, and php) which give an idea of what's involved.

## Getting Started

Pyjamas is slightly different from traditional Web development: it's more like Desktop application development. Emphasising this and helping you to begin developing your first application, is a getting started page. Also, a more comprehensive and direct guide to getting started is in the online Pyjamas Book.

## Building User Interfaces with Pyjamas

The ui module contains all of the main classes you need to create your user interface. At first, this module can be a quite confusing because of the number of classes defined. To become familiar with the user interface side of Pyjamas, you might like to refer to the Pyjamas User Interface Showcase. You might find the ui module class hierarchy useful. Additionally, there is API documentation on pyjd.org, along with a tutorial on how to create your own interactive widget.

## Pyjamas Book

An online version of the Pyjamas Book is available to read, and is in development. Contact lkcl@lkcl.net if there are any issues that you believe should be covered; if you find any errors; or if the book proves useful enough to be worth paying for. The Bookreader itself is a Pyjamas application which uses AJAX to load the contents as text files, and Wiki-like markup is used, on the browser, to generate the HTML displayed.

## Download

Pyjamas can be downloaded from sourceforge, here. The current release is 0.5. Latest source code in development is available from sourceforge subversion, here.

## Useful Links

- The Google Code page has a wiki with several pages you may find useful, as well as the issue tracker we're using to log all the known bugs. Please ignore the subversion repository, it is now out-of-date: we have moved to sourceforge
- The Google Group is the main mailing list for people using or developing pyjamas.
- Pyjamas-Desktop is a tool for running pyjamas applications on the desktop.
- The Sourceforge project page will no doubt also be useful to some folks.
- The Online version of the Pyjamas Book, which is itself a Pyjamas-based AJAX book reader, contains a comprehensive guide to Pyjamas.
- The GWT documentation pages are actually quite useful. pyjamas has reimplemented much of GWT in Python, so you can use the GWT documentation to learn how to build user interfaces in pyjamas.