从各种来源检索GitHub访问令牌
项目描述
当编写用于与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_TOKEN比GITHUB_TOKEN具有优先级。
从.env文件中读取值将不会修改进程的环境变量。
- environ
如果环境变量GH_TOKEN或GITHUB_TOKEN设置为非空字符串,则返回该变量的值;否则,控制权传递到下一个启用的来源。如果同时设置了两个环境变量,则GH_TOKEN比GITHUB_TOKEN具有优先级。
- gh
通过运行gh auth token --hostname github.com检索由gh命令存储的GitHub访问令牌。如果命令失败或输出空行,则控制权传递到下一个启用的来源。
注意,如果gh在其系统密钥链中存储了访问令牌,则用户可能需要解锁密钥链。
注意,如果GH_TOKEN或GITHUB_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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 4369b0052efb91109391b5f4f797cd5fa6a2a3ac436b6d11205fd992de02adef |
|
MD5 | 7c7e56bf9a3e50383046bc950dec6e1e |
|
BLAKE2b-256 | a5b2758bceafb71b562d80d325839ba0bd9740ba369ab8572f4508605551bf73 |