# 与讨论和拉取请求进行交互

请查阅 [HfApi](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi) 文档页面，以获取用于与 Hub 上的 Pull Requests 和 Discussions 进行交互的方法参考。

- [get_repo_discussions()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.get_repo_discussions)
- [get_discussion_details()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.get_discussion_details)
- [create_discussion()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.create_discussion)
- [create_pull_request()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.create_pull_request)
- [rename_discussion()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.rename_discussion)
- [comment_discussion()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.comment_discussion)
- [edit_discussion_comment()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.edit_discussion_comment)
- [change_discussion_status()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.change_discussion_status)
- [merge_pull_request()](/docs/huggingface_hub/v2.4.0/zh/package_reference/hf_api#huggingface_hub.HfApi.merge_pull_request)

## 数据结构[[huggingface_hub.Discussion]]

#### huggingface_hub.Discussion[[huggingface_hub.Discussion]]

```python
huggingface_hub.Discussion(title: str, status: typing.Literal['open', 'closed', 'merged', 'draft'], num: int, repo_id: str, repo_type: str, author: str, is_pull_request: bool, created_at: datetime, endpoint: str)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/community.py#L20)

**参数：**

title (`str`) : 讨论 / 拉取请求的标题

status (`str`) : 讨论 / 拉取请求的状态。必须是以下之一：* `"open"` * `"closed"` * `"merged"`（仅适用于拉取请求） * `"draft"`（仅适用于拉取请求）

num (`int`) : 讨论 / 拉取请求的编号。

repo_id (`str`) : 该 Discussion / Pull Request 所打开的仓库的 id（`"{namespace}/{repo_name}"`）。

repo_type (`str`) : 该讨论 / 拉取请求所打开的仓库类型。可能的值为：`"model"`、`"dataset"`、`"space"`。

author (`str`) : Discussion / Pull Request 作者的 username。如果该用户此后已被删除，则可能为 `"deleted"`。

is_pull_request (`bool`) : 是否为 Pull Request。

created_at (`datetime`) : 创建该讨论 / 拉取请求的 `datetime`。

endpoint (`str`) : Hub 的端点。默认为 https://huggingface.co。

git_reference (`str`, *可选*) : (属性) 如果这是一个 Pull Request，则可以推送更改的 Git 引用，否则为 `None`。

url (`str`) : (property) Hub 上该讨论的 URL。

Hub 上的讨论或拉取请求。

此 dataclass 不打算直接实例化。

#### huggingface_hub.DiscussionWithDetails[[huggingface_hub.DiscussionWithDetails]]

```python
huggingface_hub.DiscussionWithDetails(title: str, status: typing.Literal['open', 'closed', 'merged', 'draft'], num: int, repo_id: str, repo_type: str, author: str, is_pull_request: bool, created_at: datetime, endpoint: str, events: list, conflicting_files: list[str] | bool | None, target_branch: str | None, merge_commit_oid: str | None, diff: str | None)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/community.py#L88)

**参数：**

title (`str`) : 讨论 / 拉取请求的标题

status (`str`) : 讨论 / 拉取请求的状态。它可以是以下之一：* `"open"` * `"closed"` * `"merged"`（仅适用于拉取请求） * `"draft"`（仅适用于拉取请求）

num (`int`) : 讨论 / 拉取请求的编号。

repo_id (`str`) : 该 Discussion / Pull Request 所打开的仓库的 id（`"{namespace}/{repo_name}"`）。

repo_type (`str`) : 该讨论 / 拉取请求所打开的仓库类型。可能的值为：`"model"`、`"dataset"`、`"space"`。

author (`str`) : Discussion / Pull Request 作者的 username。如果该用户此后已被删除，则可能为 `"deleted"`。

is_pull_request (`bool`) : 是否为 Pull Request。

created_at (`datetime`) : 创建该讨论 / 拉取请求的 `datetime`。

events (`list` of [DiscussionEvent](/docs/huggingface_hub/v2.4.0/zh/package_reference/community#huggingface_hub.DiscussionEvent)) : 此 Discussion 或 Pull Request 中的 `DiscussionEvents` 列表。

conflicting_files (`Union[list[str], bool, None]`, *可选*) : 如果这是一个 Pull Request，则为冲突文件列表。如果 `self.is_pull_request` 为 `False`，则为 `None`。如果存在冲突文件但无法获取列表，则为 `True`。

target_branch (`str`, *可选*) : 如果这是一个 Pull Request，则是要合并更改的目标分支。如果 `self.is_pull_request` 为 `False`，则为 `None`。

merge_commit_oid (`str`, *可选*) : 如果这是一个已合并的 Pull Request，则设置为合并提交的 OID / SHA，否则为 `None`。

diff (`str`, *可选*) : 如果这是一个 Pull Request，则为 git diff，否则为 `None`。

endpoint (`str`) : Hub 的端点。默认为 https://huggingface.co。

git_reference (`str`, *可选*) : (属性) 如果这是一个 Pull Request，则可以推送更改的 Git 引用，否则为 `None`。

url (`str`) : (property) Hub 上该讨论的 URL。

[Discussion](/docs/huggingface_hub/v2.4.0/zh/package_reference/community#huggingface_hub.Discussion) 的子类。

#### huggingface_hub.DiscussionEvent[[huggingface_hub.DiscussionEvent]]

```python
huggingface_hub.DiscussionEvent(id: str, type: str, created_at: datetime, author: str, _event: dict)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/community.py#L155)

**参数：**

id (`str`) : 事件的 ID。一个十六进制字符串。

type (`str`) : 事件的类型。

created_at (`datetime`) : 一个 [`datetime`](https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime) 对象，保存该事件的创建时间戳。

author (`str`) : Discussion / Pull Request 作者的 username。如果该用户此后已被删除，则可能为 `"deleted"`。

讨论或拉取请求中的事件。

使用具体类：
* [讨论评论](/docs/huggingface_hub/v2.4.0/zh/package_reference/community#huggingface_hub.DiscussionComment)
* [DiscussionStatusChange](/docs/huggingface_hub/v2.4.0/zh/package_reference/community#huggingface_hub.DiscussionStatusChange)
* [讨论提交](/docs/huggingface_hub/v2.4.0/zh/package_reference/community#huggingface_hub.DiscussionCommit)
* [DiscussionTitleChange](/docs/huggingface_hub/v2.4.0/zh/package_reference/community#huggingface_hub.DiscussionTitleChange)

#### huggingface_hub.DiscussionComment[[huggingface_hub.DiscussionComment]]

```python
huggingface_hub.DiscussionComment(id: str, type: str, created_at: datetime, author: str, _event: dict, content: str, edited: bool, hidden: bool)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/community.py#L188)

**参数：**

id (`str`) : 事件的 ID。一个十六进制字符串。

type (`str`) : 事件的类型。

created_at (`datetime`) : 一个 [`datetime`](https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime) 对象，保存该事件的创建时间戳。

author (`str`) : Discussion / Pull Request 作者的 username。如果该用户此后已被删除，则可能为 `"deleted"`。

content (`str`) : 评论的原始 Markdown 内容。提及、链接和图片不会被渲染。

edited (`bool`) : 此评论是否已被编辑。

hidden (`bool`) : 此评论是否已被隐藏。

讨论 / 拉取请求中的评论。

[DiscussionEvent](/docs/huggingface_hub/v2.4.0/zh/package_reference/community#huggingface_hub.DiscussionEvent) 的子类。

#### huggingface_hub.DiscussionStatusChange[[huggingface_hub.DiscussionStatusChange]]

```python
huggingface_hub.DiscussionStatusChange(id: str, type: str, created_at: datetime, author: str, _event: dict, new_status: str)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/community.py#L243)

**参数：**

id (`str`) : 事件的 ID。一个十六进制字符串。

type (`str`) : 事件的类型。

created_at (`datetime`) : 一个 [`datetime`](https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime) 对象，保存该事件的创建时间戳。

author (`str`) : Discussion / Pull Request 作者的 username。如果该用户此后已被删除，则可能为 `"deleted"`。

new_status (`str`) : 更改后讨论 / 拉取请求的状态。它可以是以下之一：* `"open"` * `"closed"` * `"merged"`（仅适用于拉取请求）

讨论 / 拉取请求中的状态变更。

[DiscussionEvent](/docs/huggingface_hub/v2.4.0/zh/package_reference/community#huggingface_hub.DiscussionEvent) 的子类。

#### huggingface_hub.DiscussionCommit[[huggingface_hub.DiscussionCommit]]

```python
huggingface_hub.DiscussionCommit(id: str, type: str, created_at: datetime, author: str, _event: dict, summary: str, oid: str)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/community.py#L271)

**参数：**

id (`str`) : 事件的 ID。一个十六进制字符串。

type (`str`) : 事件的类型。

created_at (`datetime`) : 一个 [`datetime`](https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime) 对象，保存该事件的创建时间戳。

author (`str`) : Discussion / Pull Request 作者的 username。如果该用户此后已被删除，则可能为 `"deleted"`。

summary (`str`) : 提交的摘要。

oid (`str`) : 提交的 OID / SHA，以十六进制字符串表示。

Pull Request 中的提交。

[DiscussionEvent](/docs/huggingface_hub/v2.4.0/zh/package_reference/community#huggingface_hub.DiscussionEvent) 的子类。

#### huggingface_hub.DiscussionTitleChange[[huggingface_hub.DiscussionTitleChange]]

```python
huggingface_hub.DiscussionTitleChange(id: str, type: str, created_at: datetime, author: str, _event: dict, old_title: str, new_title: str)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/v2.4.0/src/huggingface_hub/community.py#L298)

**参数：**

id (`str`) : 事件的 ID。一个十六进制字符串。

type (`str`) : 事件的类型。

created_at (`datetime`) : 一个 [`datetime`](https://docs.python.org/3/library/datetime.html?highlight=datetime#datetime.datetime) 对象，保存该事件的创建时间戳。

author (`str`) : Discussion / Pull Request 作者的 username。如果该用户此后已被删除，则可能为 `"deleted"`。

old_title (`str`) : 讨论 / 拉取请求的先前标题。

new_title (`str`) : 新标题。

讨论 / 拉取请求中的重命名事件。

[DiscussionEvent](/docs/huggingface_hub/v2.4.0/zh/package_reference/community#huggingface_hub.DiscussionEvent) 的子类。

