Skip to content

Commit

Permalink
Include co-authors in release announcement (pytest-dev#12795)
Browse files Browse the repository at this point in the history
As noted in pytest-dev#12789, the `release.py` script did not consider `Co-authored-by` fields, and since we introduced the new backport bot, this problem became more apparent due to how the backport commit and PR are generated.

Previously, the list of authors produced by the script in the pytest-dev#12789 branch was:

```
* Avasam
* Bruno Oliveira
* Ronny Pfannschmidt
* Sviatoslav Sydorenko (Святослав Сидоренко)
```

With this script:

```
* Anthony Sottile
* Avasam
* Bruno Oliveira
* Christian Clauss
* Eugene Mwangi
* Florian Bruhin
* GTowers1
* Nauman Ahmed
* Pierre Sassoulas
* Reagan Lee
* Ronny Pfannschmidt
* Stefaan Lippens
* Sviatoslav Sydorenko (Святослав Сидоренко)
* dongfangtianyu
```
  • Loading branch information
nicoddemus authored Sep 9, 2024
1 parent 7316b42 commit e8504ed
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions scripts/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import argparse
import os
from pathlib import Path
import re
from subprocess import call
from subprocess import check_call
from subprocess import check_output
Expand All @@ -16,17 +17,27 @@

def announce(version: str, template_name: str, doc_version: str) -> None:
"""Generates a new release announcement entry in the docs."""
# Get our list of authors
# Get our list of authors and co-authors.
stdout = check_output(["git", "describe", "--abbrev=0", "--tags"], encoding="UTF-8")
last_version = stdout.strip()
rev_range = f"{last_version}..HEAD"

stdout = check_output(
["git", "log", f"{last_version}..HEAD", "--format=%aN"], encoding="UTF-8"
authors = check_output(
["git", "log", rev_range, "--format=%aN"], encoding="UTF-8"
).splitlines()

co_authors_output = check_output(
["git", "log", rev_range, "--format=%(trailers:key=Co-authored-by) "],
encoding="UTF-8",
)
co_authors: list[str] = []
for co_author_line in co_authors_output.splitlines():
if m := re.search(r"Co-authored-by: (.+?)<", co_author_line):
co_authors.append(m.group(1).strip())

contributors = {
name
for name in stdout.splitlines()
for name in authors + co_authors
if not name.endswith("[bot]") and name != "pytest bot"
}

Expand Down

0 comments on commit e8504ed

Please sign in to comment.