我使用哪种Python Trove分类器?

时间:2012-02-11 23:28:13

标签: python setup.py pypi

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',

我实际上只在Window 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”分类器的父级 - 它是兄弟姐妹。如果它旨在表明我的项目在某些 2.x Python版本下工作,那么包含它是有意义的,但如果它意图暗示我的项目在所有下工作则不行2.x发布。

1 个答案:

答案 0 :(得分:13)

从技术上讲,您不需要包含父标记。例如lxml列出了这些标签(但没有父母的标签):

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

浏览分类为Topic :: Text Processing :: Markup的软件包列表,包括lxml。

是否包含父标签使用户更清楚,我不确定。

我会Programming Language :: Python :: 2表示某些 Python 2.x版本,而不是所有 Python 2.x - 似乎很多项目都像这样使用它(例如再次lxml)。

对于操作系统,我将使用它来定义期望要处理的包,而不仅仅是您已经能够测试的环境。因此,我只将Windows分类器用于特定于Windows的工具,该工具无法在其他操作系统上运行。它不构成支持合同。

Windows和Windows NT / 2000标签现在可能大致相同。