Typeshed 存根上传器
本仓库包含用于自动上传 typeshed 存根到 PyPI 的脚本和 GitHub actions。 目录结构不言自明:
/stub_uploader包含 GitHub actions 使用的 Python 脚本。/tests包含针对上述脚本的一些测试。/data保存上传任务的状态。目前这是最后 typeshed 提交 成功上传的版本。以及分发包列表 成功上传的包。这些文件由下文描述的 actions 修改。最后,还有一个 空存根包 用于测试 PyPI API 令牌是否仍然有效。
仓库中有四个 GitHub actions。以下是每个 action 作用的简要说明。
检查脚本 (CI)
此 CI action 在每个 PR 和 push 上运行 mypy 和测试。您无需手动运行它。
测试 PyPI API 令牌
此操作
可用于检查颁发给 typeshed_bot 账户的 PyPI API 令牌是否仍然有效。
通常只有在需要调查故障时才需要执行此操作。
该操作只能手动启动,为此请前往操作页面并点击 "Run workflow"。
然后在输入窗口中选择一个 测试包
在 PyPI 上不存在的版本增量。如果你选择 X,该操作将尝试上传该包的
0.1.X 版本。这应该只需几秒钟。检查你选择的版本是否
确实已成功上传。如果是,则意味着 API 令牌有效,否则请阅读操作
日志以查明问题所在。如果令牌已过期,请在 PyPI 上生成新令牌并更新
TYPESHED_BOT_API_TOKEN 在 此页面 上的值。
每日从 typeshed 到 PyPI 更新存根
This
是用于自动更新 stub 包的主要操作。它被安排定期运行(目前为每日一次)。请注意,GitHub 的 cron 调度并不十分精确,可能会将操作延迟几分钟执行。如有必要,可以通过点击“Run workflow”手动运行。
该操作将获取 typeshed 仓库,从上次成功更新的 typeshed 提交中获取差异,
并检查 /stubs 目录中是否有任何更改。如果有,它将构建并上传相应的
发行版。然后它会更新 typeshed 提交,以及 /data 目录中的包列表(如果上传了新包)
(见上文)。请注意,包是按依赖顺序上传的,
以验证我们不依赖于某些外部包。请注意,如果某个发行版的 METADATA.toml
指定了版本 X.Y,这将检查最新上传的次要版本 X.Y.Z 并上传
X.Y.Z+1,如果没有匹配的版本,它将上传 X.Y.0。
强制从 typeshed 到 PyPI 更新某些 stubs
此操作
可用于手动强制上传某些软件包的新版本。当你点击“运行工作流”时,
你需要选择要上传的发行版名称。这可以是一个 Python 正则表达式,例如,
six 仅上传 six 软件包,(typing-extensions|mypy-extensions) 将上传这两个软件包,
输入 .* 将选择所有软件包。
请注意,此操作还会按依赖顺序对软件包进行排序,但不会更新 typeshed 提交。如果这是该软件包首次上传,它可能会更新
已上传软件包列表
安全影响
请参阅 SECURITY.md 文档以获取更多信息。