所以我使用 python 代码在 Github 上对我的 PR 提交发表评论
# Create a table
table = f"""
| File Changed | Summary |
|--------------|---------|
{"".join(commit_summary)}
"""
# comment body for review comment
comment_body = f"""
{"".join([f"{line}" for line in summary])}
## Files Changed and Summaries
{table}
"""
comment_data = {
"commit_id": commit_sha,
"body": comment_body,
}
comment_url = f'https://api.github.com/repos/{owner}/{repo_name}/pulls/{pr_number}/reviews'
但是,在 github 评论中,该表格以普通文本形式出现,而不是我打算展示的漂亮表格
尝试询问 gpt 并检查 github 文档,但我陷入困境
编辑: 对于所有询问 commit_summary 变量是什么样子的人来说,它是一个可能具有这样的值的列表
(f"| {文件名} | {摘要} | ”)
它包含 PR 中更改的文件以及它们的内容和问题的简短摘要
目前我得到的表格是这样的 |文件已更改 |总结| |--------------|---------| |审查_prs.py |您提供的代码片段似乎是
我希望它是这样的
制作 Markdown 表格的通用函数...
from __future__ import annotations
def build_row(field_widths: dict[str, int], row: dict[str, str]) -> str:
pipe_escape = '\|'
inner = '|'.join(f'{row[header].replace("|", pipe_escape).ljust(width)}' for header, width in field_widths.items())
return f'|{inner}|'
def make_table(headers: list[str], rows: list[dict[str, str]]) -> str:
field_widths = {}
for header in headers:
field_widths[header] = len(header) + header.count('|')
for row in rows:
for field_name, value in row.items():
if field_name not in headers:
raise ValueError(f"field name {field_name!r} not in headers")
current_width = field_widths[field_name]
this_width = len(value) + value.count('|')
if this_width > current_width:
field_widths[field_name] = this_width
header_sep = build_row(field_widths, {h: '-' * field_widths[h] for h in headers})
header_row = {h:h for h in headers}
header = build_row(field_widths, header_row)
table_rows = [build_row(field_widths, row) for row in rows]
newline = '\n'
table = f'{header}\n{header_sep}\n{newline.join(table_rows)}'
return table
然后您可以使用该函数创建一个包含特定标题和数据的表格:
field_names = ['File changed', 'Summary']
rows = [
{'File changed': '/path/to/foo/bar/baz', 'Summary': '-100 +200'},
{'File changed': '/path/to/bacon/eggs/spam', 'Summary': '-1 +2'},
{'File changed': '/path/to/buzz/crash/split', 'Summary': '-1234 +1234'},
]
print(make_table(headers=field_names, rows=rows))
将输出:
|File changed |Summary |
|-------------------------|-----------|
|/path/to/foo/bar/baz |-100 +200 |
|/path/to/bacon/eggs/spam |-1 +2 |
|/path/to/buzz/crash/split|-1234 +1234|
在 GitHub markdown 中查看时,看起来像:
将正文发送到 GitHub API 时,您需要确保其格式正确。即:请求正文需要进行 JSON 编码。如果您使用
requests
库,当您使用 comment_data
关键字传递 json
时,就会为您完成此操作,例如requests.post(comment_url, json=comment_data)
但否则您将需要正确编码您的有效负载。