互动讨论与拉取请求(Pull Request)
huggingface_hub 库提供了一个 Python 接口,用于与 Hub 上的拉取请求(Pull Request)和讨论互动。 访问 相关的文档页面 ,了解有关 Hub 上讨论和拉取请求(Pull Request)的更深入的介绍及其工作原理。
从 Hub 获取讨论和拉取请求(Pull Request)
HfApi
类允许您获取给定仓库中的讨论和拉取请求(Pull Request):
>>> from huggingface_hub import get_repo_discussions
>>> for discussion in get_repo_discussions(repo_id="bigscience/bloom"):
... print(f"{discussion.num} - {discussion.title}, pr: {discussion.is_pull_request}")
# 11 - Add Flax weights, pr: True
# 10 - Update README.md, pr: True
# 9 - Training languages in the model card, pr: True
# 8 - Update tokenizer_config.json, pr: True
# 7 - Slurm training script, pr: False
[...]
HfApi.get_repo_discussions
支持按作者、类型(拉取请求或讨论)和状态(open
或 closed
)进行过滤:
>>> from huggingface_hub import get_repo_discussions
>>> for discussion in get_repo_discussions(
... repo_id="bigscience/bloom",
... author="ArthurZ",
... discussion_type="pull_request",
... discussion_status="open",
... ):
... print(f"{discussion.num} - {discussion.title} by {discussion.author}, pr: {discussion.is_pull_request}")
# 19 - Add Flax weights by ArthurZ, pr: True
HfApi.get_repo_discussions
返回一个 生成器 生成
Discussion
对象。 要获取所有讨论并存储为列表,可以运行:
>>> from huggingface_hub import get_repo_discussions
>>> discussions_list = list(get_repo_discussions(repo_id="bert-base-uncased"))
HfApi.get_repo_discussions()
返回的 Discussion
对象提供讨论或拉取请求(Pull Request)的高级概览。您还可以使用 HfApi.get_discussion_details()
获取更详细的信息:
>>> from huggingface_hub import get_discussion_details
>>> get_discussion_details(
... repo_id="bigscience/bloom-1b3",
... discussion_num=2
... )
DiscussionWithDetails(
num=2,
author='cakiki',
title='Update VRAM memory for the V100s',
status='open',
is_pull_request=True,
events=[
DiscussionComment(type='comment', author='cakiki', ...),
DiscussionCommit(type='commit', author='cakiki', summary='Update VRAM memory for the V100s', oid='1256f9d9a33fa8887e1c1bf0e09b4713da96773a', ...),
],
conflicting_files=[],
target_branch='refs/heads/main',
merge_commit_oid=None,
diff='diff --git a/README.md b/README.md\nindex a6ae3b9294edf8d0eda0d67c7780a10241242a7e..3a1814f212bc3f0d3cc8f74bdbd316de4ae7b9e3 100644\n--- a/README.md\n+++ b/README.md\n@@ -132,7 +132,7 [...]',
)
HfApi.get_discussion_details()
返回一个 DiscussionWithDetails
对象,它是 Discussion
的子类,包含有关讨论或拉取请求(Pull Request)的更详细信息。详细信息包括所有评论、状态更改以及讨论的重命名信息,可通过 DiscussionWithDetails.events
获取。
如果是拉取请求(Pull Request),您可以通过 DiscussionWithDetails.diff
获取原始的 git diff。拉取请求(Pull Request)的所有提交都列在 DiscussionWithDetails.events
中。
以编程方式创建和编辑讨论或拉取请求
HfApi
类还提供了创建和编辑讨论及拉取请求(Pull Request)的方法。
您需要一个 访问令牌 来创建和编辑讨论或拉取请求(Pull Request)。
在 Hub 上对 repo 提出修改建议的最简单方法是使用 create_commit()
API:只需将 create_pr
参数设置为 True
。此参数也适用于其他封装了 create_commit()
的方法:
upload_file()
upload_folder()
delete_file()
delete_folder()
metadata_update()
>>> from huggingface_hub import metadata_update
>>> metadata_update(
... repo_id="username/repo_name",
... metadata={"tags": ["computer-vision", "awesome-model"]},
... create_pr=True,
... )
您还可以使用 HfApi.create_discussion()
(或 HfApi.create_pull_request()
)在仓库上创建讨论(或拉取请求)。以这种方式打开拉取请求在您需要本地处理更改时很有用。以这种方式打开的拉取请求将处于“draft”模式。
>>> from huggingface_hub import create_discussion, create_pull_request
>>> create_discussion(
... repo_id="username/repo-name",
... title="Hi from the huggingface_hub library!",
... token="<insert your access token here>",
... )
DiscussionWithDetails(...)
>>> create_pull_request(
... repo_id="username/repo-name",
... title="Hi from the huggingface_hub library!",
... token="<insert your access token here>",
... )
DiscussionWithDetails(..., is_pull_request=True)
您可以使用 HfApi
类来方便地管理拉取请求和讨论。例如:
comment_discussion()
添加评论edit_discussion_comment()
编辑评论rename_discussion()
重命名讨论或拉取请求change_discussion_status()
打开或关闭讨论/拉取请求merge_pull_request()
合并拉取请求
请访问 HfApi
文档页面,获取所有可用方法的完整参考
推送更改到拉取请求(Pull Request)
敬请期待!
参见
有关更详细的参考,请访问 讨论和拉取请求 和 hf_api 文档页面。
< > Update on GitHub