Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which Python Trove classifiers do I use?

Tags:

The list of Trove classifers is at: http://pypi.python.org/pypi?:action=list_classifiers

When I'm creating a PyPI package, I'm unsure whether I need to include the 'parents' to the trove classifiers that obviously apply to my project.

For example, if I've tested my project on Windows XP, then which of the following should I include:

'Operating System :: Microsoft',
'Operating System :: Microsoft :: Windows',
'Operating System :: Microsoft :: Windows :: Windows NT/2000',

I've only actually tested on Window 7, or sometimes Windows XP. But neither of these are options in the classifier list, so I'm choosing "NT/2000" as the closes match, and including the 'parent' classifiers. Is this the right thing to do?

Similarly, if my project is tested under Python 2.7, then I obviously include the classifier:

'Programming Language :: Python :: 2.7',

Do I need to also include:

'Programming Language :: Python',
'Programming Language :: Python :: 2',

The first is a strict 'parent' if the original classifier, so whether to include this is presumably the same as whether to include the "Windows" parents above.

Note, however, that "Python :: 2" isn't a parent of the "2.7" classifier - it's a sibling. Including it would make sense if it is intended to indicate that my project works under some 2.x Python releases, but not if it's intended to imply that my project works under all 2.x releases.

like image 593
Jonathan Hartley Avatar asked Feb 11 '12 23:02

Jonathan Hartley


1 Answers

Technically, you don't need to include parent tags. For instance lxml lists these tags (but none of their parents):

Topic :: Text Processing :: Markup :: HTML
Topic :: Text Processing :: Markup :: XML 

And browsing to the list of packages classified Topic :: Text Processing :: Markup, lxml is included.

Whether including parent tags makes it any clearer to users, I'm not sure.

I would take Programming Language :: Python :: 2 to mean some Python 2.x releases, not all Python 2.x - and it seems many projects use it like this (e.g. lxml again).

As for operating system, I'd use it to define what the package is expected to work on, not only the environments you've been able to test. So I'd only use a Windows classifier for a Windows-specific tool that couldn't work on other operating systems. It doesn't constitute a support contract.

The Windows and Windows NT/2000 tags are probably about equivalent by now.

like image 87
Thomas K Avatar answered Sep 28 '22 13:09

Thomas K