Hub Python Library documentation

Взаимодействие с обсуждениями и pull request

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v2.4.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Взаимодействие с обсуждениями и pull request

Библиотека huggingface_hub предоставляет интерфейс на Python для работы с Pull Requests и Discussions на Hub. Ознакомьтесь с специальной страницей документации, чтобы подробнее узнать, что такое Discussions и Pull Requests на Hub и как они работают.

Получение обсуждений и pull request'ов из Hub

Класс HfApi позволяет получать Discussions и Pull Requests для указанного репозитория:

>>> 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 поддерживает фильтрацию по автору, типу (Pull Request или Discussion) и статусу (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. Чтобы получить все Discussion в одном списке, выполните:

>>> from huggingface_hub import get_repo_discussions
>>> discussions_list = list(get_repo_discussions(repo_id="bert-base-uncased"))

Объект Discussion, возвращаемый 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 и содержит более подробную информацию о Discussion или Pull Request. В эту информацию входят все комментарии, изменения статуса и переименования Discussion, доступные через DiscussionWithDetails.events.

В случае Pull Request вы можете получить необработанный git diff с помощью DiscussionWithDetails.diff. Все коммиты Pull Requests перечислены в DiscussionWithDetails.events.

Создание и редактирование Discussion или Pull Request программно

Класс HfApi также предоставляет способы создания и редактирования Discussions и Pull Requests. Для создания и редактирования Discussions или Pull Requests вам потребуется access token.

Самый простой способ предложить изменения в репозитории на Hub — использовать API create_commit(): просто установите параметр 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()) для создания Discussion (соответственно Pull Request) в репозитории. Открытие Pull Request таким способом может быть полезно, если вам нужно работать с изменениями локально. Pull Requests, открытые таким образом, будут находиться в режиме "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)

Управление pull request и обсуждениями можно выполнять полностью с помощью класса HfApi. Например:

Откройте страницу документации HfApi для полного справочника всех доступных методов.

Управление обсуждениями и pull request'ами из CLI

Все перечисленные выше операции также доступны из командной строки через hf discussions. Это удобно для сценариев, CI-конвейеров или быстрых взаимодействий без написания кода на Python.

# List open discussions and PRs on a repo
hf discussions list bigscience/bloom

# List discussions on a dataset repo
hf discussions list nebius/SWE-rebench-V2 --type dataset

# Get info for a specific discussion, including its comment thread
hf discussions info bigscience/bloom 2

# Create a new discussion
hf discussions create username/repo-name --title "Bug report" --body "Description here"

# Create a pull request
hf discussions create username/repo-name --title "Fix typo" --pull-request

# Comment on a discussion or PR
hf discussions comment username/repo-name 5 --body "LGTM!"

# Attach a screenshot to a comment
hf discussions comment username/repo-name 5 --body "Here is the fix:" --attach screenshot.png

# Merge a pull request
hf discussions merge username/repo-name 5 --yes

# Show the diff of a pull request
hf discussions diff username/repo-name 5

Полный список параметров можно получить, выполнив hf discussions --help или обратившись к справочнику CLI.

Отправка изменений в Pull Request

Скоро!

См. также

Для более подробной справки посетите обсуждения и pull request'ы и страницу документации hf_api.

Update on GitHub