Saturday, November 6, 2010

Release classifiers in distutils/pypi

Thanks to Doug Napoleone I'm now aware there is already a convention followed for the python and framework versions, but it appears that not enough people are aware of it. This post is pretty much a reposting of the second comment of the post immediately preceding this one and Doug gets full credit for this post. I'm just repeating his message:

The release classifiers in this post should be included in the standard distutils documentation. For the moment, you can see the full list of classifiers here:
http://pypi.python.org/pypi?%3Aaction=list_classifiers

For the python language version the classifier is:

Programming Language :: Python :: x.y.z

With each version on it's own line. That way you can browse the repository by python version (see the bottom of the page):

http://pypi.python.org/pypi?:action=browse&c=214

There is also support for frameworks which you can see on that page as well. There it is done with:

Framework :: Django :: x.y.z

There is Zope, Plone, and a number of other frameworks already there.

In the example you gave the proper, and supported way of writing the metadata is:

Programming Language :: Python
Programming Language :: Python :: 2.4
Programming Language :: Python :: 2.5
Programming Language :: Python :: 2.6
Programming Language :: Python :: 2.7
Framework :: Django
Framework :: Django :: 0.96
Framework :: Django :: 1.0
Framework :: Django :: 1.1
Framework :: Django :: 1.2.1
Framework :: Django :: 1.3

Now it becomes a matter of education and illumination. This should be in the standard distutils documentation and arguably the home page of PyPI (or easily found there). And Django Packages will be supporting this functionality in the near future.

4 comments:

Alexis Metaireau said...

I can't see the classifiers about Django versions here: http://pypi.python.org/pypi?%3Aaction=list_classifiers.

Am I missing something ?

pydanny said...

@Alexis - You are right, they aren't there. Can you make up your own classifications with this list or are we stuck with what classifiers are provided in the formal PyPI list?

Doug Napoleone said...

I was going to post a followup stating that I was wrong about the framework version, but then life got in the way. then I noticed this post and realized I had better, but someone else had beaten me to it. The internets: the fastest way to make me feel like a fool ;-)

I am sure the PyPi folks will have no problems adding framework version classifiers.

Alexis Metaireau said...

@Danny

I think the best thing is to use the existing classifiers, otherwise it will be useless, for now at least.

It's possible to ask about that on the catalog-sig mailing list, BTW (adding new classifiers), but I'm not sure it's good to support each different version os each frameworks this way, it will be hell for the classifiers maintainers.