Hub Python Library documentation
Interaja com Discussões e Pull Requests
Interaja com Discussões e Pull Requests
A biblioteca huggingface_hub fornece uma interface em Python para interagir com Pull Requests e Discussões no Hub.
Acesse a página de documentação dedicada para uma visão mais aprofundada do que são as Discussões e os Pull Requests no Hub e como eles funcionam por baixo dos panos.
Recuperar Discussões e Pull Requests do Hub
A classe HfApi permite recuperar Discussões e Pull Requests em um repositório específico:
>>> 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 suporta filtragem por autor, tipo (Pull Request ou Discussion) e status (open ou 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: TrueHfApi.get_repo_discussions retorna um generator que produz objetos Discussion. Para obter todas as Discussões em uma única lista, execute:
>>> from huggingface_hub import get_repo_discussions
>>> discussions_list = list(get_repo_discussions(repo_id="bert-base-uncased"))O objeto Discussion retornado por HfApi.get_repo_discussions() contém uma visão geral de alto nível da Discussion ou Pull Request. Você também pode obter informações mais detalhadas usando 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() retorna um objeto DiscussionWithDetails, que é uma subclasse de Discussion com informações mais detalhadas sobre a Discussion ou Pull Request. As informações incluem todos os comentários, mudanças de status e renomeações da Discussion via DiscussionWithDetails.events.
No caso de um Pull Request, você pode recuperar o diff bruto do git com DiscussionWithDetails.diff. Todos os commits dos
Pull Requests estão listados em DiscussionWithDetails.events.
Crie e edite uma Discussion ou Pull Request programaticamente
A classe HfApi também oferece maneiras de criar e editar Discussões e Pull Requests. Você precisará de um access token para criar e editar Discussões ou Pull Requests.
A maneira mais simples de propor alterações em um repositório no Hub é por meio da API create_commit(): basta definir o parâmetro create_pr como True. Esse parâmetro também está disponível em outros métodos que envolvem create_commit():
>>> from huggingface_hub import metadata_update
>>> metadata_update(
... repo_id="username/repo_name",
... metadata={"tags": ["computer-vision", "awesome-model"]},
... create_pr=True,
... )Você também pode usar HfApi.create_discussion() (respectivamente HfApi.create_pull_request()) para criar uma Discussion (respectivamente uma Pull Request) em um repositório.
Abrir uma Pull Request dessa forma pode ser útil se você precisar trabalhar em alterações localmente. Pull Requests abertas dessa forma ficarão no modo "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)A gestão de Pull Requests e Discussões pode ser feita inteiramente com a classe HfApi. Por exemplo:
- comment_discussion() para adicionar comentários
- edit_discussion_comment() para editar comentários
- rename_discussion() para renomear uma Discussion ou Pull Request
- change_discussion_status() para abrir ou fechar uma Discussion / Pull Request
- merge_pull_request() para mesclar um Pull Request
- upload_attachment() para enviar uma imagem ou vídeo e incorporar sua URL em uma descrição ou comentário
Acesse a página de documentação do HfApi para uma referência exaustiva de todos os métodos disponíveis.
Gerenciar discussões e pull requests pela CLI
Todas as operações acima também estão disponíveis pela linha de comando via hf discussions. Isso é útil para
scripts, pipelines de CI ou interações rápidas sem escrever código 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 5Para a lista completa de opções, execute hf discussions --help ou consulte a referência da CLI.
Envie alterações para um Pull Request
Em breve!
Veja também
Para uma referência mais detalhada, visite as Discussões e Pull Requests e a página de documentação do hf_api.
Update on GitHub