Skip to content

Commit

Permalink
MAINT: Automate renaming of towncrier stubs (mne-tools#12318)
Browse files Browse the repository at this point in the history
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
  • Loading branch information
2 people authored and snwnde committed Mar 20, 2024
1 parent 035b4ea commit bc8aa6e
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 3 deletions.
56 changes: 56 additions & 0 deletions .github/actions/rename_towncrier/rename_towncrier.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/usr/bin/env python3

# Adapted from action-towncrier-changelog
import json
import os
import re
import subprocess
import sys
from pathlib import Path

from github import Github
from tomllib import loads

event_name = os.getenv('GITHUB_EVENT_NAME', 'pull_request')
if not event_name.startswith('pull_request'):
print(f'No-op for {event_name}')
sys.exit(0)
if 'GITHUB_EVENT_PATH' in os.environ:
with open(os.environ['GITHUB_EVENT_PATH'], encoding='utf-8') as fin:
event = json.load(fin)
pr_num = event['number']
basereponame = event['pull_request']['base']['repo']['full_name']
real = True
else: # local testing
pr_num = 12318 # added some towncrier files
basereponame = "mne-tools/mne-python"
real = False

g = Github(os.environ.get('GITHUB_TOKEN'))
baserepo = g.get_repo(basereponame)

# Grab config from upstream's default branch
toml_cfg = loads(Path("pyproject.toml").read_text("utf-8"))

config = toml_cfg["tool"]["towncrier"]
pr = baserepo.get_pull(pr_num)
modified_files = [f.filename for f in pr.get_files()]

# Get types from config
types = [ent["directory"] for ent in toml_cfg["tool"]["towncrier"]["type"]]
type_pipe = "|".join(types)

# Get files that potentially match the types
directory = toml_cfg["tool"]["towncrier"]["directory"]
assert directory.endswith("/"), directory

file_re = re.compile(rf"^{directory}({type_pipe})\.rst$")
found_stubs = [
f for f in modified_files if file_re.match(f)
]
for stub in found_stubs:
fro = stub
to = file_re.sub(rf"{directory}{pr_num}.\1.rst", fro)
print(f"Renaming {fro} to {to}")
if real:
subprocess.check_call(["mv", fro, to])
21 changes: 21 additions & 0 deletions .github/workflows/autofix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: autofix.ci

on: # yamllint disable-line rule:truthy
pull_request:
types: [opened, synchronize, labeled, unlabeled]

permissions:
contents: read

jobs:
autofix:
name: Autoupdate changelog entry
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: pip install --upgrade towncrier pygithub
- run: python ./.github/actions/rename_towncrier/rename_towncrier.py
- uses: autofix-ci/action@ea32e3a12414e6d3183163c3424a7d7a8631ad84
3 changes: 0 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,3 @@ repos:
# Avoid the conflict between mne/__init__.py and mne/__init__.pyi by ignoring the former
exclude: ^mne/(beamformer|channels|commands|datasets|decoding|export|forward|gui|html_templates|inverse_sparse|io|minimum_norm|preprocessing|report|simulation|source_space|stats|time_frequency|utils|viz)?/?__init__\.py$
additional_dependencies: ["numpy==1.26.2"]

ci:
autofix_prs: false
1 change: 1 addition & 0 deletions doc/changes/devel/12318.other.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Automate adding of PR number to towncrier stubs, by `Eric Larson`_.

0 comments on commit bc8aa6e

Please sign in to comment.