Visit Mozilla.org

Python

From MDC

Python is an interpreted scripting language available on a wide variety of platforms, including Linux, Mac OS X, and Microsoft Windows.

Contents

[edit] Learning Python

Dive Into Python is the best introduction available. It provides good coverage on all the language basics, and common tasks such as web requests and file operations. For more advanced topics, Text Processing In Python is an excellent reference and tutorial.

[edit] Python in Mozilla

Mozilla is (largely) built on top of XPCOM. Similarly, the Python XPCOM package is the low-level glue that ties Python and Mozilla together.

Python is also bound to the DOM (starting with Mozilla 1.9). Mozilla chrome (e.g., XUL or trusted HTML) can use Python. The PyDOM page has more information. More information is available on the Python XPCOM page.

Python is also beginning to be used more for scripts that do various things with Mozilla apps. It would be useful to have a document on Python Environment and Tools for Mozilla.

[edit] Python Web Software

Pylons is one recommended Web framework (there are many). The Socorro Breakpad server uses it. Pylons is based on WSGI, a common Python web interface, so many libraries work with it.

Pylons provides a very productive development environment, similar to Ruby On Rails, by providing its own HTTP server. This means all development dependencies can be downloaded with a few commands, pages are automatically reloaded after editing Python files or templates, and there's even an AJAX debugger on the 500 screens. When an error occurs, you see a traceback like this:


Image:Pylons.gif


By expanding one of the '+' symbols, a text box appears that functions as a Python console.


Image:Pylons-debugger1.gif


This feature allows you to inspect each frame of the Python backtrace, and even modify your application's state.


Image:Pylons-debugger2.gif

[edit] Useful Web Libraries

AuthKit is a plugin useful for authentication.

SQLAlchemy is an excellent SQL/ORM library.

Genshi is a powerful templating language that provides an XML-based template syntax as well as one geared toward plain text. It can generate HTML4 from XML, resulting in maximum compatibility for clients, while maintaining a tight XML pipeline on the server.