我使用pygithub3库来解析用户存储库,但有时会在失败的请求之后解决断言。起初我怀疑我已达到命中率限制,但很快我意识到我可以100%重现断言“空”'存储库(参见示例)。
https://github.com/poelzi/vaultfs
我如何检查存储库是否可用? 简化的代码段:
for repo in gh.repos.list(user=author).all():
...
contributors = repo.list_contributors(user=repo.owner.login, repo=repo.name).all()
它适用于99%的情况,但当我遇到空的存储库时,它崩溃了,我无法找到任何方法来检测'它
答案 0 :(得分:1)
根据this blog post,空存储库的贡献者端点响应代码为204 No Content
。
以下是一些相关的curl
输出:
curl -v https://api.github.com/repos/poelzi/vaultfs/stats/contributors
* Trying 192.30.252.127...
* Connected to api.github.com (192.30.252.127) port 443 (#0)
* found 187 certificates in /etc/ssl/certs/ca-certificates.crt
* found 758 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
...
< HTTP/1.1 204 No Content
< Server: GitHub.com
< Date: Wed, 28 Oct 2015 20:10:10 GMT
< Status: 204 No Content
...
检查pygithub
文档,我看到它已经内置了:
Repository.get_stats_contributors()
调用GET /repos/:owner/:repo/stats/contributors结束点。
这是调用此终点的唯一方法。
此方法在空存储库中返回None,在尚未计算统计信息时返回空列表。
返回类型:无或
列表Repository.StatsContributor
所以,据说,你必须检查返回值。如果没有,则存储库为空。
答案 1 :(得分:0)
您在 PyGithub 标记下的问题,所以下面是在该库中执行此操作的可能方法之一。
import github
from github import GithubException
g = github.Github(token)
# or if you are using login and password g = github.Github(login, password)
repo = g.get_repo("poelzi/vaultfs")
try:
# get repo content from root directory
repo.get_contents("/")
except GithubException as e:
print(e.args[1]['message']) # output: This repository is empty.