##// END OF EJS Templates
Fix Mixin Inheritence in Xunit unittest....
Fix Mixin Inheritence in Xunit unittest. Some unittest were weird mixin, properly make the base class an TestCase, and use setup/teardown to set local attributes. This adds compatibility with PyTest

File last commit:

r24402:7bc34163
r25113:3ac47845
Show More
autogen_shortcuts.py
90 lines | 2.6 KiB | text/x-python | PythonLexer
/ docs / autogen_shortcuts.py
klonuo
Added keyboard shortcuts docs
r22590 from os.path import abspath, dirname, join
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
Gabriel Potter
Fix autogen_shortcuts.py for prompt_toolkit 2.0
r24389 class _DummyTerminal(object):
"""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
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__':
Matthias Bussonnier
Sort by filter, before sorting by shortcut....
r22625 sort_key = lambda k:(str(k[0][1]),str(k[0][0]))
klonuo
Added keyboard shortcuts docs
r22590 here = abspath(dirname(__file__))
dest = join(here, 'source', 'config', 'shortcuts')
with open(join(dest, 'single_filtered.csv'), 'w') as csv:
Matthias Bussonnier
Sort by filter, before sorting by shortcut....
r22625 for k, v in sorted(single_filter.items(), key=sort_key):
klonuo
Added keyboard shortcuts docs
r22590 csv.write(':kbd:`{}`\t{}\t{}\n'.format(k[0], k[1], v))
with open(join(dest, 'multi_filtered.csv'), 'w') as csv:
Matthias Bussonnier
Sort by filter, before sorting by shortcut....
r22625 for k, v in sorted(multi_filter.items(), key=sort_key):
klonuo
Added keyboard shortcuts docs
r22590 csv.write(':kbd:`{}`\t{}\t{}\n'.format(k[0], k[1], v))