##// END OF EJS Templates
Revert "Fix for https://github.com/ipython/ipython/issues/13084" This reverts commit a44718bdb19469bee2674ef8a01353b97554b025.

File last commit:

r26186:e201af86 merge
r26702:89b3766c
Show More
autogen_shortcuts.py
94 lines | 2.6 KiB | text/x-python | PythonLexer
/ docs / autogen_shortcuts.py
NotWearingPants
use pathlib in docs/autogen_shortcuts.py + minor refactor
r26119 from pathlib import Path
klonuo
Added keyboard shortcuts docs
r22590
Gabriel Potter
Fix autogen_shortcuts.py for prompt_toolkit 2.0
r24389 from IPython.terminal.shortcuts import create_ipython_shortcuts
klonuo
Added keyboard shortcuts docs
r22590
def name(c):
s = c.__class__.__name__
Matthias Bussonnier
Improve grouping of filter
r22624 if s == '_Invert':
return '(Not: %s)' % name(c.filter)
if s in log_filters.keys():
return '(%s: %s)' % (log_filters[s], ', '.join(name(x) for x in c.filters))
klonuo
Added keyboard shortcuts docs
r22590 return log_filters[s] if s in log_filters.keys() else s
def sentencize(s):
"""Extract first sentence
"""
s = s.replace('\n', ' ').strip().split('.')
s = s[0] if len(s) else s
try:
return " ".join(s.split())
except AttributeError:
return s
def most_common(lst, n=3):
"""Most common elements occurring more then `n` times
"""
from collections import Counter
c = Counter(lst)
return [k for (k, v) in c.items() if k and v > n]
def multi_filter_str(flt):
"""Yield readable conditional filter
"""
assert hasattr(flt, 'filters'), 'Conditional filter required'
yield name(flt)
Srinivas Reddy Thatiparthy
remove dict() function call and replace it with dict literal - {}
r23231 log_filters = {'_AndList': 'And', '_OrList': 'Or'}
Matthias Bussonnier
Improve grouping of filter
r22624 log_invert = {'_Invert'}
klonuo
Added keyboard shortcuts docs
r22590
Matthias Bussonnier
try to fix test/building-docs
r26160 class _DummyTerminal:
Gabriel Potter
Fix autogen_shortcuts.py for prompt_toolkit 2.0
r24389 """Used as a buffer to get prompt_toolkit bindings
"""
handle_return = None
Thomas Kluyver
Fix generating shortcuts docs
r24402 input_transformer_manager = None
Gabriel Potter
Fix autogen_shortcuts.py for prompt_toolkit 2.0
r24389 display_completions = None
Matthias Bussonnier
try to fix test/building-docs
r26160 editing_mode = "emacs"
Gabriel Potter
Fix autogen_shortcuts.py for prompt_toolkit 2.0
r24389
ipy_bindings = create_ipython_shortcuts(_DummyTerminal()).bindings
klonuo
Added keyboard shortcuts docs
r22590
dummy_docs = [] # ignore bindings without proper documentation
common_docs = most_common([kb.handler.__doc__ for kb in ipy_bindings])
if common_docs:
dummy_docs.extend(common_docs)
dummy_docs = list(set(dummy_docs))
Srinivas Reddy Thatiparthy
remove dict() function call and replace it with dict literal - {}
r23231 single_filter = {}
multi_filter = {}
klonuo
Added keyboard shortcuts docs
r22590 for kb in ipy_bindings:
doc = kb.handler.__doc__
if not doc or doc in dummy_docs:
continue
shortcut = ' '.join([k if isinstance(k, str) else k.name for k in kb.keys])
shortcut += shortcut.endswith('\\') and '\\' or ''
if hasattr(kb.filter, 'filters'):
flt = ' '.join(multi_filter_str(kb.filter))
multi_filter[(shortcut, flt)] = sentencize(doc)
else:
single_filter[(shortcut, name(kb.filter))] = sentencize(doc)
if __name__ == '__main__':
NotWearingPants
use pathlib in docs/autogen_shortcuts.py + minor refactor
r26119 here = Path(__file__).parent
Matthias Bussonnier
reformat with darker
r26175 dest = here / "source" / "config" / "shortcuts"
klonuo
Added keyboard shortcuts docs
r22590
Snir Broshi
fix unpacking in docs/autogen_shortcuts.py
r26125 def sort_key(item):
k, v = item
shortcut, flt = k
return (str(shortcut), str(flt))
Matthias Bussonnier
reformat with darker
r26175 for filters, output_filename in [
(single_filter, "single_filtered"),
(multi_filter, "multi_filtered"),
]:
with (dest / "{}.csv".format(output_filename)).open("w") as csv:
Snir Broshi
fix unpacking in docs/autogen_shortcuts.py
r26125 for (shortcut, flt), v in sorted(filters.items(), key=sort_key):
Matthias Bussonnier
reformat with darker
r26175 csv.write(":kbd:`{}`\t{}\t{}\n".format(shortcut, flt, v))