GSoC/GCI Archive
Google Summer of Code 2009

Python Software Foundation

Web Page:

Mailing List:

The Python Software Foundation (PSF) is a 501(c)(3) non-profit corporation that holds the intellectual property rights behind the Python programming language.


  • 3to2 tool for backporting Py3 code This proposal focuses on implementing a set of fixers "lib3to2" for code currently written for Python 3.x to convert that code into a format that can be run in a Python 2.x environment. 3to2 will be a tool that will encourage developers programming in Python to go forward confidently with developing in 3.x without worrying about backwards compatibility. Possible future improvements will backport code to earlier versions, as many third-party packages are supported as far back as version 2.3.
  • Accelerating NumPy's Ufuncs With CorePy Today, most x86 processors contain multiple cores and support SSE vector instructions. However, few open source libraries leverage these features. In this project, I propose optimizing NumPy's ufunc operations by using SSE and multi-core execution via the CorePy library.
  • Adding support for server-side history and roster versioning in Gajim Gajim is an instant messaging client for the xmpp protocol, written in Python and PyGTK. I will develop a server-side history and a roster versioning for Gajim so there won't be anymore problems with the logs dispersed over several computers and you won't have to wait long time to be able to talk with your contacts when you have a big roster.
  • An architecture independent SIMD library for Python We propose development of a library that provides Python programmers with processor level SIMD instructions and consequently the possibility of writing high performance programs in Python. This module will be architecture independent and so users will not need to know details required for assembly programming. An important part of this module is a register allocation component. This module will be built on top of CorePy, a module that allows programmers to write assembly within Python.
  • Apache Axis2 extension for Jython Jython is an implementation of the high-level, dynamic, object-oriented language Python seamlessly integrated with the Java platform. Apache Axis2 is a core engine for Web services. It is a complete re-design and re-write of the widely used Apache Axis SOAP stack.This project will provide an extension to Jython to support Web services using Apache Axis2 middleware engine.
  • Clean up and enhancements to SciPy.signal This project will focus on making SciPy.signal more maintainable and filling in the gaps between Matlab's signal processing toolkit and SciPy.signal
  • Code coverage analysis of and improvements to Python3k Core's testing framework This project proposes improvements to and extension of the Python3k testing framework by adding more test cases for increased code coverage, integration of the C code with the Python code coverage, and easy to generate integrated report.
  • Enhancing the Statistical Functionality of Scipy I will introduce a unified development framework and consistent user interface for statistical models in Scipy. This goal serves two purposes: to make Scipy more user-friendly and to provide direction for future development of the statistical capabilities of Scipy.
  • Extending Camera support for PyGame to Mac OSX Nirav Patel has recently implemented camera support into pygame as a way to interact with a game. However, this camera module is limited to the Linux platform. The goal of my project is to extend this camera module to the Mac OSX platform, and thus extending the portability of games written in pygame that use a webcam as mean to interact with the player.
  • Externalising the TeX rendering in Matplotlib As of 2009 LaTeX is the de facto standard for equation output, with nearly all computer algebra systems being able to output expressions in the form of a LaTeX equation. However, currently the only way to transform a LaTeX equation into a format that is suitable for general consumption is to invoke `latex`. This process is both slow and requires a full-blow latex install. This proposal makes the case for externalising the LaTeX parser that exists within Matplotlib.
  • Gajim: Whiteboard Implementation I hope to implement a whiteboard into the jabber client Gajim.
  • Hollywood drama missing in Python I will be working over the summer to write a proper wrapper around either ffmpeg or sdl_ffmpeg for use as a python module, to replace a currently unstable movie playing module. This would allow for tasks like a media player, a movie editor, or to show cutscenes in Pygame to be written.
  • IDLE & Tkinter Maintenance I propose to take on the role of a maintainer for both the idlelib package as well Tkinter (the later includes and _tkinter). With this project I expect to put IDLE, in special, in a better state. This means the user would be more confident in IDLE, and developers would have an easier time maintaining it. I also intend to study and incorporate, as appropriate, the bug fixes applied in a temporary IDLE fork called VIDLE.
  • Implementation of a Date/Time type for the NumPy Module Dates and times are an integral part of scientific computing. As the fundamental scientific computing package for Python, NumPy needs to handle dates and times. I propose to implement datetime types by creating two datetime types for both absolute dates and relative dates. Both types will be compatible with each other and the existing Python datetime. The existing scikits.timeseries module contains a similar implementation which I will analyze and articulate for numerical purposes.
  • Improve C++ Support for Cython The mainly objective of this proposal, is to improve C++ Support for Cython (as the tittle says). I'll work on STL and polymorphism on Cython, and so, turning it more powerful. And with a little more work, improve C++ classes and functions wrapping.
  • Improve Unit Testing Framework for Core Python3k In this project, I will make py.test compatible to Core Python3k test files and introduce some features to py.test, such that Python developers can run unit testing easier. Besides, regression test suite will be run over multiple platforms regularly on Snakebite, integrated with build-bot or other facilities.
  • Improved Fortran support in Cython Currently, calling a Fortran routine from Cython is difficult and error-prone if one desires: 1) speed, 2) portable wrapping, 3) seamless passing of numpy array objects, and 4) Fortran 90 code that uses assumed-shape arrays. Our project will address the above shortcomings by improving f2py-Cython integration. There are 2 aspects to the project: enhancing f2py to generate updated Fortran wrappers callable from C, and enhancing Cython to enable passing python buffers to external code.
  • Improving font support on pgreloaded and PyGame The goal of this project is to improve the Font support on pgreloaded, the Python 3000 branch of PyGame. The project attempts to redesign the interface of the pgreloaded Font module, making it more pythonic, higher level and extending its core with more complex text-drawing functionality and support for other font formats, such as BDF. Additionally, all the key features of the project which don't break API/ABI compatibility will be backported into the original PyGame.
  • Interfacing PYGR with common external alignment programs PYGR is a python based Graph Database Framework developed for bioinformatic applications. Currently, the only external alignment program that has a proper interface with PYGR is blastall. Since, there are a host of other external alignment programs, it will be highly beneficial to have an interface for these external programs.In this project, I plan to implement the required interfaces to the following external programs: blat, clustal, lagan and m-lagan, and blastz.
  • JDK 7 adaptation of Jython The next generation of the JDK will contain a number of updates to better host dynamic languages. These updates aim at improving the performance of dynamic languages as well as the interoperability in between languages. These do not come for free. Invokedynamic is implemented as a new opcode and a new set of APIs to manage method handles and call sites. Interface injection is a new set of APIs. To be able to benefit from these additions, Jython needs to be adapted.
  • Porting Crunchy to Python 3.0 Crunchy, with lineage in the 2006 GSOC, is educational software written in Python designed to teach Python through web page tutorials that allow users to interact with the interpreter. This project will create a working Python 3 branch of Crunchy in preparation for increased interest in learning Python 3, both for new and old programmers. Along the way, I hope to also increase regression and functional testing in the existing code as a secondary goal.
  • Proposal of building a keyring library for Python As the Python desktop applications grew very fast, the need for a general, platform independent keyring API ,becomes important for development. Many services require authentication before they can be used. Application always needs to store these authentications safely. This lib is aimed to address this problem. By making a single call to this library, an application can store login information on a keyring where the application can retrieve the information—also with a single call—when needed.
  • PyMW BOINC Interface Enhancement The PyMW project attempts to bring the simplicity and beauty of Python to parallel and grid computing by providing a common interface for any parallel processing architecture. This proposal is to enhance the capabilities of the PyMW BOINC interface in three ways: 1) by simplifying project setup; 2) by adding support for custom validation, assimilation, and replication; and 3) by adding checkpointing systems for client and server.
  • Sphinx's interactive documentation: a support for per-paragraph comments and user/developer interface for submitting/committing fixes Users spend significant amount of time reading the documentation. Providing some ways of interaction on this background is in the best interest of the user and wider community. Instead of adding a simple commenting framework to Sphinx, I will create a platform of discussion as well as documentation enhancement. The benefits of this addition would be: better reviewed, more up to date, extended documentation, tighter community ties and eased procedures of submitting the documentation fixes.
  • Subprocess Patches and Testing Handling of subprocess async io issues, testing and reimplementing the commands module in terms of subprocess.