1016
Comment: add info about how to get new trove classifiers into PyPI
|
5091
Fixed typo (thanks WordNet)
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Cheese Shop Development | This page documents the development of the Python Package Index (formerly known as Cheeseshop): |
Line 3: | Line 3: |
This page documents the development of the Python Cheese Shop: | . https://pypi.python.domainunion.de = How to submit packages = This page isn't about submitting packages. You want to see CheeseShopTutorial instead. |
Line 5: | Line 7: |
https://cheeseshop.python.org | = 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. Complementary 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 7: | Line 10: |
The PyPI (packages index, Cheese Shop web interface) code resides in SVN at: | = XML-RPC Interface = The Package Index has an XML-RPC interface which may be used by any 3rd-party application developer. See CheeseShopXmlRpc for details. |
Line 9: | Line 13: |
https://svn.python.org/packages/{trunk,features,branches}. | = Developing the Package Index = This information is for developers working on the PyPI code. The PyPI code resides in SVN at: |
Line 11: | Line 16: |
Requests for new Trove categories: | . https://svn.python.org/packages/ (trunk,features,branches) Developers with access may use this URL: |
Line 13: | Line 19: |
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. |
. svn+ssh://svn.python.org/data/repos/packages/trunk/pypi |
Line 23: | Line 22: |
https://sourceforge.net/tracker/?group_id=66150&atid=513503 | . https://sourceforge.net/tracker/?group_id=66150&atid=513503 Discussion about the Package Index should be had on the Catalog SIG mailing list: |
Line 25: | Line 25: |
Discussion about the Cheese Shop should be had on the Catalog SIG mailing list: | . https://mail.python.org/mailman/listinfo/catalog-sig Package Index API used by easy_install: |
Line 27: | Line 28: |
https://mail.python.org/mailman/listinfo/catalog-sig | . https://peak.telecommunity.com/DevCenter/EasyInstall#package-index-api == TO-DO list == * [[https://python.domainunion.de/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 [[https://python.domainunion.de/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. == Proposals == * [[https://wiki.python.domainunion.de/moin/EnhancedPyPI|EnhancedPyPI]] Enhance multiple package index servers support in Distutils. == Development Environment Hints == PyPI uses postgresql 8.3 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 wsgi, 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, docutils, psycopg2, and M2Crypto. # 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. To integrate it with Apache, we recommend to use WSGI through mod_wsgi. Your configuration should look like this: {{{ WSGIDaemonProcess pypi display-name=wsgi-pypi python-path=/usr/lib/zope2.9/lib/python processes=4 threads=1 WSGIProcessGroup pypi WSGIPassAuthorization On WSGIScriptAlias /pypi /data/pypi/src/pypi/pypi.wsgi WSGIScriptAlias /simple /data/pypi/src/pypi/pypi.wsgi }}} |
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. Complementary 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 Package Index has an XML-RPC interface which may be used by any 3rd-party application developer. See CheeseShopXmlRpc for details.
Developing the Package Index
This information is for developers working on the PyPI code. The PyPI code resides in SVN at:
https://svn.python.org/packages/ (trunk,features,branches)
Developers with access may use this URL:
Patches and bug reports should be submitted to:
Discussion about the Package Index should be had on the Catalog SIG mailing list:
Package Index API used by easy_install:
TO-DO list
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 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.
Proposals
EnhancedPyPI Enhance multiple package index servers support in Distutils.
Development Environment Hints
PyPI uses postgresql 8.3 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 wsgi, 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, docutils, psycopg2, and M2Crypto.
# 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.
To integrate it with Apache, we recommend to use WSGI through mod_wsgi. Your configuration should look like this:
WSGIDaemonProcess pypi display-name=wsgi-pypi python-path=/usr/lib/zope2.9/lib/python processes=4 threads=1 WSGIProcessGroup pypi WSGIPassAuthorization On WSGIScriptAlias /pypi /data/pypi/src/pypi/pypi.wsgi WSGIScriptAlias /simple /data/pypi/src/pypi/pypi.wsgi