##// END OF EJS Templates
Merge pull request #13214 from Kojoley/ipexec-pycharm-qol-fix...
Merge pull request #13214 from Kojoley/ipexec-pycharm-qol-fix ipexec: prevent output coloring under PyCharm

File last commit:

r26045:9b33f2c3
r26941:32ffaeff merge
Show More
update_whatsnew.py
81 lines | 2.4 KiB | text/x-python | PythonLexer
/ tools / update_whatsnew.py
Min RK
make update_whatsnew script executable...
r20268 #!/usr/bin/env python
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901 """Update the What's New doc (development version)
This collects the snippets from whatsnew/pr/, moves their content into
whatsnew/development.rst (chronologically ordered), and deletes the snippets.
"""
import io
Matthias Bussonnier
Tell if no automatic update possible
r22041 import sys
dswij
run darker
r26045 from pathlib import Path
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901 from subprocess import check_call, check_output
dswij
using pathlib on update_whatsnew.py
r26044 repo_root = Path(__file__).resolve().parent.parent
dswij
run darker
r26045 whatsnew_dir = repo_root / "docs" / "source" / "whatsnew"
pr_dir = whatsnew_dir / "pr"
target = whatsnew_dir / "development.rst"
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901
FEATURE_MARK = ".. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT."
INCOMPAT_MARK = ".. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT."
# 1. Collect the whatsnew snippet files ---------------------------------------
dswij
run darker
r26045 files = set(pr_dir.glob("*.rst"))
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901 # Ignore explanatory and example files
dswij
run darker
r26045 files.difference_update(
{pr_dir / f for f in {"incompat-switching-to-perl.rst", "antigravity-feature.rst"}}
)
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901
Matthias Bussonnier
Tell if no automatic update possible
r22041 if not files:
print("No automatic update available for what's new")
sys.exit(0)
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901
def getmtime(f):
dswij
run darker
r26045 return check_output(["git", "log", "-1", '--format="%ai"', "--", f])
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901
files = sorted(files, key=getmtime)
features, incompats = [], []
for path in files:
dswij
run darker
r26045 with io.open(path, encoding="utf-8") as f:
Matthias Bussonnier
add do_where
r21970 try:
content = f.read().rstrip()
except Exception as e:
Matthias Bussonnier
Take Thomas comments into account
r21974 raise Exception('Error reading "{}"'.format(f)) from e
Matthias Bussonnier
add do_where
r21970
dswij
run darker
r26045 if path.name.startswith("incompat-"):
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901 incompats.append(content)
else:
features.append(content)
# Put the insertion markers back on the end, so they're ready for next time.
dswij
run darker
r26045 feature_block = "\n\n".join(features + [FEATURE_MARK])
incompat_block = "\n\n".join(incompats + [INCOMPAT_MARK])
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901
# 2. Update the target file ---------------------------------------------------
dswij
run darker
r26045 with io.open(target, encoding="utf-8") as f:
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901 content = f.read()
assert content.count(FEATURE_MARK) == 1
assert content.count(INCOMPAT_MARK) == 1
content = content.replace(FEATURE_MARK, feature_block)
content = content.replace(INCOMPAT_MARK, incompat_block)
# Clean trailing whitespace
dswij
run darker
r26045 content = "\n".join(l.rstrip() for l in content.splitlines())
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901
dswij
run darker
r26045 with io.open(target, "w", encoding="utf-8") as f:
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901 f.write(content)
# 3. Stage the changes in git -------------------------------------------------
for file in files:
dswij
run darker
r26045 check_call(["git", "rm", file])
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901
dswij
run darker
r26045 check_call(["git", "add", target])
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901
Matthias Bussonnier
add do_where
r21970 print("Merged what's new changes. Check the diff and commit the change.")