一个简单的GitHub客户端,仅提供认证和访问REST和GraphQL API。
项目描述
simple-github
一个简单的Python GitHub客户端,用于处理认证并提供对REST和GraphQL API的轻松访问。
为什么使用simple-github?
如果您考虑使用simple-github...
- 您不希望编写自己的认证(特别是应用程序认证),但又不想陷入面向对象包装器。
- 您想使用REST和GraphQL端点。
功能
- 使用个人访问令牌进行认证,作为GitHub应用程序或GitHub应用程序安装。
- 应用程序令牌到期时的自动刷新。
- 查询REST和GraphQL端点。
- 在两个端点之间共享aiohttp会话。
安装
使用pip
安装
pip install simple-github
示例用法
使用访问令牌进行认证
在最简单的情况下,您可以使用提供的访问令牌
from simple_github import TokenClient
token = "<access token>"
async with TokenClient(token) as session:
resp = await session.get("/octocat")
resp.raise_for_status()
data = await resp.json()
await resp.close()
返回值是一个aiohttp.ClientResponse对象。
如果同步调用,只需从示例中移除async
/ await
from simple_github import TokenClient
token = "<access token>"
with TokenClient(token) as session:
resp = session.get("/octocat")
resp.raise_for_status()
data = resp.json()
在这种情况下,返回值是一个requests.Response对象。
作为GitHub应用程序安装进行认证
要作为应用程序安装进行认证,您需要
- 您的应用程序的GitHub应用程序ID。
- 与您的应用关联的私钥。这可以从您的应用设置页面生成。
- 安装该应用的机构或用户。
- 可选:限制访问的仓库列表。
from simple_github import AppClient
app_id = 123
privkey = "<private key>"
owner = "mozilla-releng"
async with AppClient(app_id, privkey, owner=owner) as session:
resp = await session.get("/octocat")
您还可以指定仓库以限制访问。
async with AppClient(app_id, privkey, owner=owner, repositories=["simple-github"]) as session:
resp = await session.get("/octocat")
作为Github应用进行身份验证
您还可以作为应用本身进行身份验证。这主要用于管理应用。为此,只需省略owner
参数。
async with AppClient(app_id, privkey) as session:
resp = await session.get("/octocat")
无身份验证
最后,您可以创建一个无需任何身份验证的客户端。这主要用于在提供身份验证方法不是必需的情况下,例如提高速率限制。这允许更简单的实现。
from simple_github import PublicClient
async with PublicClient() as session:
resp = await session.get("/octocat")
查询REST API
simple-github仅为Github的REST API提供了一个非常基本的包装。您可以通过传递路径片段到session.get
或session.post
来查询它。
例如,您可以通过GET
请求列出拉取请求
resp = await session.get("/repos/mozilla-releng/simple-github/pulls")
pulls = await resp.json()
await resp.close()
open_pulls = [p for p in pulls if p["state"] == "open"]
或者您可以通过POST
请求创建一个拉取请求
data = {
"title": "Add feature X",
"body": "This adds new feature X",
"head": "simple-github:featureX",
"base": "main",
}
await session.post("/repos/mozilla-releng/simple-github/pulls", data=data)
查询GraphQL API
simple-github还支持GraphQL API。在此示例中,我们获取文件内容
query = """
query getFileContents {
repository(owner: "mozilla-releng", name: "simple-github") {
object(expression: "HEAD:README.md") {
... on Blob {
text
}
}
}
}
"""
contents = await session.execute(query)
您可以通过session.execute
的variables
参数使用GraphQL变量。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
simple_github-2.1.0.tar.gz (130.8 kB 查看散列)
构建分布
simple_github-2.1.0-py3-none-any.whl (13.4 kB 查看散列)
关闭
simple_github-2.1.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | fa3eb28107337b3363dbb6fdf90be943737cb80fe82c3fa6b47b57c3d5965771 |
|
MD5 | 15d551329443f85ff751166a2b69fac4 |
|
BLAKE2b-256 | c2800c2a37e263c3c1b185783c9716eea5bfb14b5cc0a46ee80d96e86f24641d |
关闭
simple_github-2.1.0-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | efebd6165d96994966ff2dde2d8036d3368c62d5e661a7c939864bac07c3f064 |
|
MD5 | fee2b06eb144b43b3692c64c5dd6b0b8 |
|
BLAKE2b-256 | 1de35ed2006d15149fed5d68e1f31d0f1d6086e9ace7e0887acd978c55782b59 |