##// END OF EJS Templates
Remove the "autoedit_syntax" feature....
Remove the "autoedit_syntax" feature. IPython used to (a long time ago, in a galaxy far far away) have the ability to automatically open an editor in case a wild syntax error appears. The configuration option to enable that was not working for a few years, and apparently we by mistake re enabled it, to discover that the feature is actually broken. So this plainly remove the code to support this feature, at the exception of the `fix_error_editor` hook. Indeed it is public API, so for now as it seem to be used only for this feature, we'll just raise a UserWarning (there is roughly 0 chance of this being tested as it's used mostly interactively, so DeprecationWarnings would be unseen). We'll remove later if no complaints Closes #9603

File last commit:

r22041:892b1c49
r22576:b7d03ed6
Show More
update_whatsnew.py
82 lines | 2.6 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
Matthias Bussonnier
add do_where
r21970 from glob import glob
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901 from os.path import dirname, basename, abspath, join as pjoin
from subprocess import check_call, check_output
repo_root = dirname(dirname(abspath(__file__)))
whatsnew_dir = pjoin(repo_root, 'docs', 'source', 'whatsnew')
pr_dir = pjoin(whatsnew_dir, 'pr')
target = pjoin(whatsnew_dir, 'development.rst')
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 ---------------------------------------
Matthias Bussonnier
Take Thomas comments into account
r21974 files = set(glob(pjoin(pr_dir, '*.rst')))
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901 # Ignore explanatory and example files
Matthias Bussonnier
Take Thomas comments into account
r21974 files.difference_update({pjoin(pr_dir, f) for f in {
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901 'incompat-switching-to-perl.rst',
'antigravity-feature.rst'}
Matthias Bussonnier
add do_where
r21970 })
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):
return check_output(['git', 'log', '-1', '--format="%ai"', '--', f])
files = sorted(files, key=getmtime)
features, incompats = [], []
for path in files:
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
Thomas Kluyver
Add script to update whatsnew file from PR snippets
r12901 if basename(path).startswith('incompat-'):
incompats.append(content)
else:
features.append(content)
# Put the insertion markers back on the end, so they're ready for next time.
feature_block = '\n\n'.join(features + [FEATURE_MARK])
incompat_block = '\n\n'.join(incompats + [INCOMPAT_MARK])
# 2. Update the target file ---------------------------------------------------
with io.open(target, encoding='utf-8') as f:
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
content = '\n'.join(l.rstrip() for l in content.splitlines())
with io.open(target, 'w', encoding='utf-8') as f:
f.write(content)
# 3. Stage the changes in git -------------------------------------------------
for file in files:
check_call(['git', 'rm', file])
check_call(['git', 'add', target])
Matthias Bussonnier
add do_where
r21970 print("Merged what's new changes. Check the diff and commit the change.")