跳转到主要内容

确保一个软件包在PyPI的bus因子高于一定阈值。

项目描述

“拥有巨大的力量,就要承担巨大的责任” - 本叔叔

bus因子

在2009年的Plone会议上,有人听到这样的话:“我们通常认为公交车是杀死程序员的东西”。几天后,在冲刺活动中,人们注意到Plone 4.0的一些核心包只能由一个人发布。这个包的设计目的是通过确保一个给定的包在PyPI上有超过一定数量的授权管理员来解决这个问题。

语法

如下创建一个名为parker的控制台脚本:

parker [--factor=2]
       [--versions-cfg <configfile>]
       [--repository=http://pypi.python.org/pypi] [packagename(s)]
–factor:

(也称为 -f) 这确定在引发错误之前可以访问的最小人数。默认为2。

–versions-cfg:

(也称为 -c) 如果提供此选项,将解析一个zc.buildout版本文件以获取包名

–repository:

(也称为 -r) 一个遵循巴洛克查找逻辑假设的存储库URL

packagename(s):

如果未指定–versions-cfg,则为必需。包含一个或多个要检查的包,以空格分隔。

巴洛克查找逻辑

不幸的是,API不允许我们找到可以访问包的用户,因此我们需要抓取屏幕。我们期望以下格式的HTML:

<li>
 <strong>Package Index Owner:</strong>
 <span>deo, smcmahon, MatthewWilkes</span>
</li>

<li>
 <strong>Package Index Maintainer:</strong>
 <span>JoeBob</span>
</li>

也就是说,一个包含“包索引 <rolename>:”和一个逗号分隔列表的列表元素,一旦删除了标签。

首先,提取li标签

(?<=li\>)[\S\s]*?(?=\<\/li\>)

然后,提取角色名称

"Package Index ([a-zA-Z]*)"

并找到这些名称

set(a[0] for a in re.compile("([a-zA-Z]+,?)+?").findall(li)
         if a[0] not in ['Package','Index',rolename,'span','strong'])

是的,这很丑。我知道。我希望有一个API来做这件事,或者标记可以被轻松抓取。现在,这样就可以了。

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源代码分发

mr.parker-1.0.zip (9.3 kB 查看哈希值)

上传时间 源代码

由以下机构支持