Hub Python 库文档

与讨论和拉取请求交互

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

与讨论和拉取请求交互

huggingface_hub 库提供了一个 Python 接口,用于与 Hub 上的拉取请求和讨论进行交互。访问专用文档页面,以更深入地了解 Hub 上的讨论和拉取请求是什么,以及它们在底层的工作原理。

从 Hub 检索讨论和拉取请求

HfApi 类允许您检索给定仓库上的讨论和拉取请求

>>> 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 支持按作者、类型(拉取请求或讨论)和状态(openclosed)进行筛选

>>> 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"))

Discussion 对象由 HfApi.get_repo_discussions() 返回,包含讨论或拉取请求的高级概述。您还可以使用 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 的子类,包含有关讨论或拉取请求的更多详细信息。信息包括通过 DiscussionWithDetails.events 对讨论的所有评论、状态更改和重命名。

对于拉取请求,您可以使用 DiscussionWithDetails.diff 检索原始 git diff。拉取请求的所有提交都列在 DiscussionWithDetails.events 中。

以编程方式创建和编辑讨论或拉取请求

HfApi 类还提供创建和编辑讨论和拉取请求的方法。您需要一个访问令牌来创建和编辑讨论或拉取请求。

在 Hub 上对仓库提出更改的最简单方法是通过 create_commit() API:只需将 create_pr 参数设置为 True。此参数也可用于包装 create_commit() 的其他方法

>>> 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())在仓库上创建讨论(分别为拉取请求)。如果需要在本地处理更改,则以这种方式打开拉取请求可能很有用。以这种方式打开的拉取请求将处于“草稿”模式。

>>> 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 类完全管理拉取请求和讨论。例如

访问 HfApi 文档页面以获取所有可用方法的详尽参考。

将更改推送到拉取请求

即将推出!

另请参阅

有关更详细的参考,请访问 讨论和拉取请求hf_api 文档页面。

< > 在 GitHub 上更新