mirror of
https://github.com/pybind/pybind11.git
synced 2025-01-18 17:05:53 +00:00
b17555f340
* chore(deps): update pre-commit hooks updates: - [github.com/pre-commit/mirrors-clang-format: v19.1.3 → v19.1.4](https://github.com/pre-commit/mirrors-clang-format/compare/v19.1.3...v19.1.4) - [github.com/astral-sh/ruff-pre-commit: v0.7.2 → v0.8.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.7.2...v0.8.1) - [github.com/sirosen/texthooks: 0.6.7 → 0.6.8](https://github.com/sirosen/texthooks/compare/0.6.7...0.6.8) - [github.com/PyCQA/pylint: v3.3.1 → v3.3.2](https://github.com/PyCQA/pylint/compare/v3.3.1...v3.3.2) - [github.com/python-jsonschema/check-jsonschema: 0.29.4 → 0.30.0](https://github.com/python-jsonschema/check-jsonschema/compare/0.29.4...0.30.0) * Resolve ruff pre-commit errors: ``` ruff.....................................................................Failed - hook id: ruff - exit code: 1 warning: The following rules have been removed and ignoring them has no effect: - PT004 docs/benchmark.py:51:17: UP031 Use format specifiers instead of percent format | 50 | for cl in range(nclasses): 51 | decl += "class cl%03i {\n" % cl | ^^^^^^^^^^^^^^^^^^ UP031 52 | decl += "public:\n" 53 | bindings += f' py::class_<cl{cl:03}>("cl{cl:03}")\n' | = help: Replace with format specifiers docs/benchmark.py:88:15: UP031 Use format specifiers instead of percent format | 86 | elapsed = (n2 - n1).total_seconds() 87 | size = os.stat("test.so").st_size 88 | print(" {%i, %f, %i}," % (nclasses * nfns, elapsed, size)) | ^^^^^^^^^^^^^^^^^^ UP031 89 | print("}") | = help: Replace with format specifiers tools/make_changelog.py:62:9: PLC0206 Extracting value from dictionary without calling `.items()` | 61 | msg += f"\n `#{issue.number} <{issue.html_url}>`_" 62 | for cat in cats: | _________^ 63 | | if issue.title.lower().startswith(f"{cat}:"): 64 | | cats[cat].append(msg) 65 | | break 66 | | else: 67 | | cats["unknown"].append(msg) | |_______________________________________^ PLC0206 68 | 69 | for cat, msgs in cats.items(): | Found 3 errors. ``` --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Ralf W. Grosse-Kunstleve <rgrossekunst@nvidia.com>
93 lines
2.1 KiB
Python
Executable File
93 lines
2.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from __future__ import annotations
|
|
|
|
import re
|
|
|
|
import ghapi.all
|
|
from rich import print
|
|
from rich.syntax import Syntax
|
|
|
|
ENTRY = re.compile(
|
|
r"""
|
|
Suggested \s changelog \s entry:
|
|
.*
|
|
```rst
|
|
\s*
|
|
(.*?)
|
|
\s*
|
|
```
|
|
""",
|
|
re.DOTALL | re.VERBOSE,
|
|
)
|
|
|
|
print()
|
|
|
|
|
|
api = ghapi.all.GhApi(owner="pybind", repo="pybind11")
|
|
|
|
issues_pages = ghapi.page.paged(
|
|
api.issues.list_for_repo, labels="needs changelog", state="closed"
|
|
)
|
|
issues = (issue for page in issues_pages for issue in page)
|
|
missing = []
|
|
cats_descr = {
|
|
"feat": "New Features",
|
|
"feat(types)": "",
|
|
"feat(cmake)": "",
|
|
"fix": "Bug fixes",
|
|
"fix(types)": "",
|
|
"fix(cmake)": "",
|
|
"docs": "Documentation",
|
|
"tests": "Tests",
|
|
"ci": "CI",
|
|
"chore": "Other",
|
|
"unknown": "Uncategorised",
|
|
}
|
|
cats: dict[str, list[str]] = {c: [] for c in cats_descr}
|
|
|
|
for issue in issues:
|
|
changelog = ENTRY.findall(issue.body or "")
|
|
if not changelog or not changelog[0]:
|
|
missing.append(issue)
|
|
else:
|
|
(msg,) = changelog
|
|
if msg.startswith("- "):
|
|
msg = msg[2:]
|
|
if not msg.startswith("* "):
|
|
msg = "* " + msg
|
|
if not msg.endswith("."):
|
|
msg += "."
|
|
|
|
msg += f"\n `#{issue.number} <{issue.html_url}>`_"
|
|
for cat, cat_list in cats.items():
|
|
if issue.title.lower().startswith(f"{cat}:"):
|
|
cat_list.append(msg)
|
|
break
|
|
else:
|
|
cats["unknown"].append(msg)
|
|
|
|
for cat, msgs in cats.items():
|
|
if msgs:
|
|
desc = cats_descr[cat]
|
|
print(f"[bold]{desc}:" if desc else f".. {cat}")
|
|
print()
|
|
for msg in msgs:
|
|
print(Syntax(msg, "rst", theme="ansi_light", word_wrap=True))
|
|
print()
|
|
print()
|
|
|
|
if missing:
|
|
print()
|
|
print("[blue]" + "-" * 30)
|
|
print()
|
|
|
|
for issue in missing:
|
|
print(f"[red bold]Missing:[/red bold][red] {issue.title}")
|
|
print(f"[red] {issue.html_url}\n")
|
|
|
|
print("[bold]Template:\n")
|
|
msg = "## Suggested changelog entry:\n\n```rst\n\n```"
|
|
print(Syntax(msg, "md", theme="ansi_light"))
|
|
|
|
print()
|