ActiveBlog

Python PyPM Index - Author build notification, imports, recipes integration
by Sridhar Ratnakumar

Sridhar Ratnakumar, November 24, 2010

Getting notified of build failures in your Python Packages

We wrote a bit about the PyPM Index build notification feature in the previous blog post (PyPM Index for Python Developers: Nov. 10), and specifically the ability to subscribe to a RSS feed of recent build failures for a particular Python package. This enables one to quickly act on broken releases (eg: missing files in sdist) or platform-specific install regressions. But this is not ideal if you publish and maintain more than one package in PyPI. So we implemented a way to subscribe to all of your Python packages in one feed. In the author page (eg: Ian Bicking - see below), you will find a link to the page (the round red strikethough icon) listing only your recently failing packages. There is an RSS link in the right sidebar that you can use to subscribe.

PyPM Index: Author page

What can I import from this package?

A new "Imports" section shows the list of import-able modules and packages in a distribution. For example, the boto package page shows:

PyPM Index: Imports section

Which Python package provides this import?

Python distribution names and their imports do not always match. For example, although you may know that "import MySQLdb" is the import for a popular MySQL binding, it has a different distribution name (or package name) - "MySQL-python". Maintaining a build farm of all Python packages in PyPI enables us to provide this feature: you can now search for a package by its import namespace, for example - searching for "import:MySQLdb" (case insensitive) will redirect you to the mysql-python package page.

Import conflicts

If more than one Python package provides the same import, PyPM Index will instead show you the list of those packages. This led to some interesting observations of cases of distributions providing the same import leading to install-time conflicts.

  • How many packages, do you think, create a "tests" importable package in your site-packages directory? We counted 87 of them.
  • 19 projects copy ez_setup.py (setuptools' bootstrap module) by accident.
  • 6 include their setup.py script itself.
  • 7 projects provide an "examples" package — feature or bug?
  • And, while we are it, why not include a global __init__.py file as well (even though it is meaningless to do so)?

And there are more of them.

Packages required to run a recipe

PyPM Index: Recipes

Some Python recipes require third-party packages. Using the import data (as explained above), we link to the exact package from such recipes. Take this particular recipe for instance, that imports two third-party modules: MySQLdb and boto. The "Required Modules" section (on the right) which lists the list of imports, now also links to the respective package page on PyPM Index.

Each package in turn links back to the recipes that include them. Try the "MySQL-python recipes" link in the MySQL-python page.

Miscellaneous changes

Other changes include:

  • Gravatar images in author pages: We use the email address from one of the author's latest releases to retrieve their Gravatar image.
  • Package names now preserve case: i.e., we now show M2Crypto instead of the lower-cased m2crypto.
  • Link to reddit posts mentioning the package.

Subscribe to ActiveState Blogs by Email

Share this post:

Category: announcements, python
About the Author: RSS

Sridhar Ratnakumar is a senior Python developer at ActiveState where he works tirelessly to ensure that ActivePython is the world's highest quality Python distribution. He's been developing on Python since 2003 and is the author of various Python modules, including pyrtm and applib. He earned his software development stripes at Amazon and Microsoft.