Какие классы классификаторов Python я использую?

Список классификаторов Trove: http://pypi.python.org/pypi?:action=list_classifiers

Когда я создаю пакет PyPI, я не уверен, нужно ли включать "родителей" в кластеры, которые, очевидно, применяются к моему проекту.

Например, если я протестировал свой проект в Windows XP, то какое из следующих я должен включить:

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

Я тестировал только на Windows 7, а иногда и на Windows XP. Но ни один из них не является параметрами в списке классификаторов, поэтому я выбираю "NT/2000" как совпадение с совпадением, включая "родительские" классификаторы. Правильно ли это делать?

Аналогично, если мой проект проверен под Python 2.7, то я, очевидно, включаю классификатор:

'Programming Language :: Python :: 2.7',

Нужно ли также включать:

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

Первый - строгий "родительский", если исходный классификатор, поэтому включить его это, по-видимому, так же, как включать родительских "Windows" выше.

Обратите внимание, однако, что "Python:: 2" не является родителем классификатора "2.7" - это брат. В том числе было бы разумно, если бы оно предназначалось для указания того, что мой проект работает под некоторыми версиями Python 2.x, но не в том случае, если он предполагает, что мой проект работает под всеми релизами 2.x.

Ответы

Ответ 1

Технически вам не нужно включать родительские теги. Например, lxml перечисляет эти теги (но ни один из их родителей):

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

И просматривается список пакетов, классифицированных Тема:: Обработка текста:: Разметка, lxml включен.

Является ли включение родительских тегов более ясным для пользователей, я не уверен.

Я бы взял Programming Language :: Python :: 2 для обозначения некоторых выпусков Python 2.x, а не для всех Python 2.x, и кажется, что многие проекты используют его так (например, lxml снова).

Что касается операционной системы, я бы использовал ее, чтобы определить, на что должен работать пакет, а не только те среды, которые вы смогли проверить. Поэтому я бы использовал только классификатор Windows для Windows-специфического инструмента, который не мог работать в других операционных системах. Он не является контрактом на поддержку.

Теги Windows и Windows NT/2000, вероятно, уже эквивалентны.