Differences between revisions 44 and 45
Revision 44 as of 2007-07-25 18:33:40
Size: 5121
Comment: cheeseshop.python.org -> pypi.python.org
Revision 45 as of 2007-12-27 13:59:05
Size: 5101
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
This page documents the development of the Python Cheese Shop: This page documents the development of the Python Package Index (formerly known as Cheeseshop):
Line 3: Line 3:
  http://pypi.python.org
 . http://pypi.python.org
Line 6: Line 5:
Line 9: Line 7:
Line 11: Line 8:

Python frameworks with plugins or packages that target the framework
can get their own category. The category should only be added *after*
such packages exist. Complimentary packages can link to each other
from their descriptions, they do not need a category to link them
together; only when packages are provided by different people does a
category need to be created. To ask for a category email
catalog-sig@python.org.
Python frameworks with plugins or packages that target the framework  can get their own category. The category should only be added *after*  such packages exist. Complimentary packages can link to each other  from their descriptions, they do not need a category to link them  together; only when packages are provided by different people does a  category need to be created. To ask for a category email  catalog-sig@python.org .
Line 21: Line 11:
Line 25: Line 14:
Line 28: Line 16:
  https://svn.python.org/packages/ (trunk,features,branches)
 . https://svn.python.org/packages/ (trunk,features,branches)
Line 32: Line 19:
  svn+ssh://svn.python.org/data/repos/packages/trunk/pypi
 . svn+ssh://svn.python.org/data/repos/packages/trunk/pypi
Line 36: Line 22:
  http://sourceforge.net/tracker/?group_id=66150&atid=513503
 . http://sourceforge.net/tracker/?group_id=66150&atid=513503
Line 40: Line 25:
  http://mail.python.org/mailman/listinfo/catalog-sig
 . http://mail.python.org/mailman/listinfo/catalog-sig
Line 44: Line 28:
  http://peak.telecommunity.com/DevCenter/EasyInstall#package-index-api
 . http://peak.telecommunity.com/DevCenter/EasyInstall#package-index-api
Line 47: Line 30:
Line 56: Line 38:

Something that's been requested, but needs much more thought and analysis to see whether it causes any problems: the ability to treat project names and versions as case-insensitive, while removing extraneous characters (as in pkg_resources.safe_name()) for
purposes both of searching and determining name uniqueness when registering.
Something that's been requested, but needs much more thought and analysis to see whether it causes any problems: the ability to treat project names and versions as case-insensitive, while removing extraneous characters (as in pkg_resources.safe_name()) for  purposes both of searching and determining name uniqueness when registering.
Line 61: Line 41:
Line 63: Line 42:
Line 65: Line 43:
Line 75: Line 52:
Line 83: Line 59:
Line 95: Line 70:

Line 99: Line 72:

# For debian, this should get you most of the dependencies.
apt-get install zope3 python-celementtree python-psycopg
# For debian, this should get you most of the dependencies. apt-get install zope3 python-celementtree python-psycopg
Line 109: Line 79:
Line 118: Line 87:
Line 121: Line 89:
Line 126: Line 93:

This page documents the development of the Python Package Index (formerly known as Cheeseshop):

How to submit packages

This page isn't about submitting packages. You want to see CheeseShopTutorial instead.

Requests for new Trove categories

Python frameworks with plugins or packages that target the framework can get their own category. The category should only be added *after* such packages exist. Complimentary packages can link to each other from their descriptions, they do not need a category to link them together; only when packages are provided by different people does a category need to be created. To ask for a category email catalog-sig@python.org .

XML-RPC Interface

The Cheese Shop has an XML-RPC interface which may be used by any 3rd-party application developer. See CheeseShopXmlRpc for details.

Developing the Cheese Shop

This information is for developers working on the PyPI code. The PyPI (packages index, Cheese Shop web interface) code resides in SVN at:

Developers with access may use this URL:

Patches and bug reports should be submitted to:

Discussion about the Cheese Shop should be had on the Catalog SIG mailing list:

Package Index API used by easy_install:

TO-DO list

  • [http://www.python.org/peps/pep-0345.html PEP for metadata 1.2] -- not finished and needs more catalog-sig discussion)

  • command-line tool to query pypi and fetch entries
  • documented procedures for "taking over" entries should the original owner of the entry go away (and any required system support)
  • tooltips for field labels
  • change notification emails
  • moderated user reviews and ratings (this would require quite a lot of support from volunteers though)
  • per-classifier "wiki" content to allow description and discussion around each classifier (perhaps what packages are available and how they relate to one another)
  • screenshot images (with thumbnailing and a "latest screenshot" on the front page?) - or perhaps icons instead of thumbnails for some packages?

Something that's been requested, but needs much more thought and analysis to see whether it causes any problems: the ability to treat project names and versions as case-insensitive, while removing extraneous characters (as in pkg_resources.safe_name()) for purposes both of searching and determining name uniqueness when registering.

Not Going TO-DO

  • Edit [http://www.python.org/peps/pep-0243.html PEP 243] to reflect reality. The interface is implemented in the distutils register and upload commands. This code is good enough for documentation, especially because it's the only implementation necessary.

Development Environment Hints

Cheeseshop uses postgresql as a database, with a roll it yourself web framework based on different python modules. It uses apache2 as the web server.

It can run using cgi, fcgi and mod_python.

Before restoring database, "pypi" role must exists:

  createuser pypi

These are notes so we can remember how to dump / restore the packages database:

  pg_dump -Fc -b packages >packages-20060706.dump
  createdb packages
  pg_restore -O -d packages -Fc packages-20060706.dump

Ask RichardJones if you need a database dump.

PageTemplates are obtained from:

  svn co svn://svn.zope.org/repos/main/zope.pagetemplate/trunk zope.pagetemplate
  svn co svn://svn.zope.org/repos/main/zope.tal/trunk zope.tal
  svn co svn://svn.zope.org/repos/main/zope.interface/trunk zope.interface
  svn co svn://svn.zope.org/repos/main/zope.i18nmessageid/trunk zope.i18nmessageid
  svn co svn://svn.zope.org/repos/main/zope.tales/trunk zope.tales

We also need to install ez_setup, celementtree and docutils.

# For debian, this should get you most of the dependencies. apt-get install zope3 python-celementtree python-psycopg

Then go ahead and edit pypi.ini and this line in pypi.cgi:

  cfg = config.Config('/tmp/pypi.ini', 'webui')

if your config.ini isn't in /tmp/pypi.ini. You can leave it as 'config.ini' if it's in the same directory as pypi.py.

You will need to add cheesecake_password=yourpasshere into the config.ini in the webui section.

If you wish to test functionality that requires login, then you will need to configure your apache to pass through basic auth. You do this by adding lines similar to the following to your apache2 conf file:

  RewriteCond %{HTTP:Authorization}  ^(.+)$
  RewriteRule ^/cgi-bin/pypi.cgi(.*) /Library/WebServer/CGI-Executables/pypi.cgi$1 [e=HTTP_CGI_AUTHORIZATION:%1,t=application/x-httpd-cgi,l]

If this doesn't work, then you can use these lines to debug:

  RewriteLog /var/log/httpd/rewrite.log
  RewriteLogLevel 9

CheeseShopDev (last edited 2019-08-23 10:57:11 by SumanaHarihareswara)

Unable to edit the page? See the FrontPage for instructions.