Discussions and Pull Requests on the HuggingFace Hub.
Mirrors HfApi discussion/PR methods from the Python huggingface_hub library.
Example
# List all discussions on a repo
result = HuggingfaceClient.list_discussions("gpt2", access_token: "hf_...")
|> Enum.each(fn d -> IO.puts("#{d["num"]}: #{d["title"]}") end)
# Create a discussion
{:ok, discussion} = HuggingfaceClient.create_discussion("my-org/my-model",
title: "Question about the model",
access_token: "hf_..."
)
# Comment on a discussion
{:ok, comment} = HuggingfaceClient.comment_discussion("my-org/my-model",
discussion_num: discussion["num"],
comment: "Great model! I have a question...",
access_token: "hf_..."
)
Summary
Functions
Changes the status (open/closed) of a discussion or pull request.
Adds a comment to a discussion or pull request.
Creates a new discussion or pull request on a repository.
Creates a pull request (shorthand for create/2 with is_pull_request: true).
Edits an existing comment on a discussion.
Gets detailed information about a single discussion or pull request.
Hides a comment (irreversible — content can no longer be retrieved).
Returns a stream of discussions and pull requests for a repository.
Merges a pull request.
Renames a discussion or pull request.
Functions
@spec change_status( String.t(), keyword() ) :: {:ok, map()} | {:error, Exception.t()}
Changes the status (open/closed) of a discussion or pull request.
Options
:discussion_num— required:status—:openor:closed(required):comment— optional comment explaining the status change
@spec comment( String.t(), keyword() ) :: {:ok, map()} | {:error, Exception.t()}
Adds a comment to a discussion or pull request.
Options
:discussion_num— discussion number (required):comment— comment body in Markdown (required)
@spec create( String.t(), keyword() ) :: {:ok, map()} | {:error, Exception.t()}
Creates a new discussion or pull request on a repository.
Options
:title— Discussion title (required):description— Body text (optional):is_pull_request— iftrue, creates a PR; defaultfalse(discussion):type— repo type:access_token
Example
{:ok, d} = HuggingfaceClient.create_discussion("my-org/my-model",
title: "My question",
description: "I was wondering...",
access_token: "hf_..."
)
@spec create_pull_request( String.t(), keyword() ) :: {:ok, map()} | {:error, Exception.t()}
Creates a pull request (shorthand for create/2 with is_pull_request: true).
@spec edit_comment( String.t(), keyword() ) :: {:ok, map()} | {:error, Exception.t()}
Edits an existing comment on a discussion.
Options
:discussion_num— discussion number (required):comment_id— ID of the comment to edit (required):comment— new content (required)
@spec get(String.t(), pos_integer(), keyword()) :: {:ok, map()} | {:error, Exception.t()}
Gets detailed information about a single discussion or pull request.
Example
{:ok, details} = HuggingfaceClient.get_discussion("gpt2", 5)
@spec hide_comment( String.t(), keyword() ) :: {:ok, map()} | {:error, Exception.t()}
Hides a comment (irreversible — content can no longer be retrieved).
Options
:discussion_num— discussion number (required):comment_id— ID of the comment to hide (required)
@spec list( String.t(), keyword() ) :: Enumerable.t()
Returns a stream of discussions and pull requests for a repository.
Options
:type—:repotype::model,:dataset, or:space(default::model):is_pull_request— iftrue, only return PRs; iffalse, only discussions; ifnil, both:access_token— HF token
Example
result = HuggingfaceClient.list_discussions("bigscience/bloom")
|> Enum.take(10)
@spec merge_pull_request( String.t(), keyword() ) :: {:ok, map()} | {:error, Exception.t()}
Merges a pull request.
Options
:discussion_num— PR number (required):comment— optional merge message:commit_message— optional custom commit message
@spec rename( String.t(), keyword() ) :: {:ok, map()} | {:error, Exception.t()}
Renames a discussion or pull request.
Options
:discussion_num— required:title— new title (required)