At 01:33 PM 11/9/2005 -0800, Grig Gheorghiu wrote:
>I'm working on a project I called "Cheesecake" which aims to quantify
>the "goodness" of Python packages based on various indicators such as
>presence of special files (README, LICENSE, etc.), special directories
>(tests, doc, etc.), percentage of modules/classes/methods/functions
>with docstrings, etc.
>
>It would be nice if there was a standardized way to get to a download
>URL for a given package listed at the Cheeseshop.

setuptools' "package_index" module has facilities to scan Cheeseshop pages 
and the pages they link to for URLs that are downloadable 
distributions.  Also, the "easy_install" command-line tool can be used to 
fetch and extract editable source (or check out from subversion) the source 
code of a project.  For example:

     $ easy_install -eb~/projects SQLObject
     Searching for SQLObject
     Reading http://www.python.org/pypi/SQLObject/
     Reading http://sqlobject.org
     Best match: SQLObject 0.7.0
     Downloading 
http://cheeseshop.python.org/packages/source/S/SQLObject/SQLObject-0.7.0.tar.gz#md5=dccb921b5df6a15312b56630ac4ac205
     Processing SQLObject-0.7.0.tar.gz

     Extracted editable version of SQLObject to ~/projects/sqlobject

Notice that this works even with projects not hosted at the Cheeseshop, 
even if they are on Sourceforge mirrors:

     $ easy_install -eb~/projects ctypes
     Searching for ctypes
     Reading http://www.python.org/pypi/ctypes/
     Reading http://starship.python.net/crew/theller/ctypes/
     Reading http://sourceforge.net/project/showfiles.php?group_id=71702
     Best match: ctypes 0.9.6
     Downloading 
http://prdownloads.sourceforge.net/ctypes/ctypes-0.9.6.zip?download
     Requesting redirect to (randomly selected) 'surfnet' mirror
     Downloading 
http://surfnet.dl.sourceforge.net/sourceforge/ctypes/ctypes-0.9.6.zip
     Processing ctypes-0.9.6.zip

     Extracted editable version of ctypes to ~/projects/ctypes

As long as a download link is available from one of these three places, it 
can be found:

  1. The cheeseshop page for the package
  2. The page referenced by the cheeseshop "download url" link
  3. The page referenced by the cheeseshop "home page" link

I would say that any project whose download URL(s) can't be found by 
easy_install should get a bad score on your metrics, since it's going to be 
pretty tough for the *user* to find the package!

EasyInstall is not limited to source downloads, however.  It's just that 
the '-e' option tells it you want an "editable" distribution (e.g., a 
Subversion checkout preferably, with a source distribution being second 
best), and the '-b' option tells it the base directory under which the 
project directory should be created.  (Ordinarily, EasyInstall just 
attempts to get binaries or build and install them.)

_______________________________________________
Catalog-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/catalog-sig

Reply via email to