跳转到主要内容

从各种来源检索GitHub访问令牌

项目描述

Project Status: Active — The project has reached a stable, usable state and is being actively developed. CI Status coverage pyversions MIT License

GitHub | PyPI | 问题 | 变更日志

当编写用于与GitHub API交互的Python程序时,您可能会想要使用本地用户的GitHub访问令牌进行身份验证。每次都要求用户提供令牌是不可取的,因此您更愿意在某个已知存储位置查找令牌。问题是,多年来支持GitHub令牌存储的地方太多了,要求您的用户迁移到新的存储位置是不必要的。

这就是ghtoken的用武之地:它提供了一个检查多个已知来源以查找GitHub访问令牌的单个函数,以及用于查询单个来源的单独函数,以防您需要以新颖的方式组合查询。

目前支持的令牌来源如下

  • .env文件

  • 环境变量

  • gh命令

  • hub配置文件

  • Git配置选项hub.oauthtoken

安装

ghtoken需要Python 3.8或更高版本。只需使用Python 3的pip安装它(您有pip吗?)

python3 -m pip install ghtoken

API

注意:在检索GitHub访问令牌时,除了拒绝空字符串外,不执行令牌格式的验证。

ghtoken.get_ghtoken(
    *,
    dotenv: bool | str | os.PathLike[str] = True,
    environ: bool = True,
    gh: bool = True,
    hub: bool = True,
    hub_oauthtoken: bool = True,
) -> str

通过检查以下列出的各种来源(返回第一个找到的令牌)来检索本地存储的GitHub访问令牌。可以通过将相应的关键字参数设置为False来禁用单个来源。

以下列出了来源,按它们被查询的顺序排列

dotenv

从当前目录向上搜索以查找.env文件,并读取找到的第一个文件。或者,可以通过将dotenv关键字参数设置为文件的路径来读取特定文件。如果文件(无论是否通过搜索找到或明确指定)无法读取或解析,则控制权传递到下一个启用的来源。

如果文件包含带有非空值的GH_TOKEN=...GITHUB_TOKEN=...赋值,则返回该值;否则,控制权传递到下一个启用的来源。如果同时存在两个键的赋值,则GH_TOKENGITHUB_TOKEN具有优先级。

.env文件中读取值将不会修改进程的环境变量。

environ

如果环境变量GH_TOKENGITHUB_TOKEN设置为非空字符串,则返回该变量的值;否则,控制权传递到下一个启用的来源。如果同时设置了两个环境变量,则GH_TOKENGITHUB_TOKEN具有优先级。

gh

通过运行gh auth token --hostname github.com检索由gh命令存储的GitHub访问令牌。如果命令失败或输出空行,则控制权传递到下一个启用的来源。

注意,如果gh在其系统密钥链中存储了访问令牌,则用户可能需要解锁密钥链。

注意,如果GH_TOKENGITHUB_TOKEN环境变量设置为非空字符串,gh将返回envvar的值,而不是返回可能已存储的任何访问令牌,即使get_ghtoken()environ参数为False也不例外。

hub

hub配置文件中检索GitHub访问令牌。如果配置文件不存在或格式不正确,或者文件不包含为github.com域的非空令牌,则控制权传递到下一个启用的来源。

hub_oauthtoken

从由git-hub程序使用的Git配置键hub.oauthtoken中检索GitHub访问令牌。如果键设置为空字符串,或者如果Git配置键hub.baseurl设置为除https://api.github.com之外的值,则控制权传递到下一个启用的来源。

通过运行git config --get ...检索Git配置值。如果此类命令失败,则控制权传递到下一个启用的来源。

如果hub.oauthtoken的值以!开头,则其余值将被作为shell命令执行,并返回命令的标准输出(去除前后空格)。

如果没有启用的源返回令牌,则抛出ghtoken.GHTokenNotFound异常。

ghtoken.ghtoken_from_dotenv(path: str | os.PathLike[str] | None = None) -> str

如上所述,从.env文件中检索GitHub访问令牌。可以提供特定文件的路径。如果没有找到令牌,将抛出ghtoken.GHTokenNotFound异常。

ghtoken.ghtoken_from_environ() -> str

如上所述,从环境变量中检索GitHub访问令牌。如果没有找到令牌,将抛出ghtoken.GHTokenNotFound异常。

ghtoken.ghtoken_from_gh() -> str

如上所述,从gh命令中检索GitHub访问令牌。如果没有找到令牌,将抛出ghtoken.GHTokenNotFound异常。

ghtoken.ghtoken_from_hub() -> str

如上所述,从hub配置文件中检索GitHub访问令牌。如果没有找到令牌,将抛出ghtoken.GHTokenNotFound异常。

ghtoken.ghtoken_from_hub_oauthtoken() -> str

如上所述,从hub.oauthtoken Git配置选项中检索GitHub访问令牌。如果没有找到令牌,将抛出ghtoken.GHTokenNotFound异常。

命令

ghtoken还提供了一个同名的命令,用于从命令行查找GitHub令牌。

ghtoken [<options>]

ghtoken从本地存储检索本地用户的GitHub访问令牌并打印它。如果没有找到令牌,将打印到标准错误,并且命令以非零状态退出。

选项

-E FILE--env FILE

使用指定的文件作为.env文件源

--no-dotenv

不咨询.env文件

--no-environ

不咨询环境变量

--no-gh

不咨询gh

--no-hub

不咨询hub配置文件

--no-hub-oauthtoken

不咨询hub.oauthtoken Git配置选项

项目详情


下载文件

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

源分布

ghtoken-0.1.2.tar.gz (12.7 kB 查看散列)

上传时间

构建分布

ghtoken-0.1.2-py3-none-any.whl (9.4 kB 查看散列)

上传时间 Python 3