##// END OF EJS Templates
Merge pull request #12210 from Carreau/rpy2docs...
Merge pull request #12210 from Carreau/rpy2docs update link to rpy2 object inventory

File last commit:

r24791:d7681177
r25599:a0c21526 merge
Show More
autogen_config.py
128 lines | 4.1 KiB | text/x-python | PythonLexer
/ docs / autogen_config.py
Yaroslav Halchenko
ENH: list generated config files in generated, and rm them upon clean
r16197 #!/usr/bin/env python
Min RK
abspath fixes for autogen scripts
r21590 from os.path import join, dirname, abspath
Antony Lee
Use inspect.cleandoc in autogen_config....
r24791 import inspect
Min RK
abspath fixes for autogen scripts
r21590
Thomas Kluyver
Generate docs for config options.
r13459 from IPython.terminal.ipapp import TerminalIPythonApp
Thomas Kluyver
Use new traitlets API to generate config docs...
r21400 from ipykernel.kernelapp import IPKernelApp
Thomas Kluyver
Make each config option individually linkable
r23831 from traitlets import Undefined
Thomas Kluyver
Include command line aliases in config docs
r23832 from collections import defaultdict
Thomas Kluyver
Generate docs for config options.
r13459
Min RK
abspath fixes for autogen scripts
r21590 here = abspath(dirname(__file__))
options = join(here, 'source', 'config', 'options')
klonuo
Refactor autogen config
r22516 generated = join(options, 'config-generated.txt')
Matthias Bussonnier
Remove implicit dependency to ipython_genutils....
r24586 import textwrap
indent = lambda text,n: textwrap.indent(text,n*' ')
Thomas Kluyver
Make each config option individually linkable
r23831
def interesting_default_value(dv):
if (dv is None) or (dv is Undefined):
return False
if isinstance(dv, (str, list, tuple, dict, set)):
return bool(dv)
return True
Thomas Kluyver
Include command line aliases in config docs
r23832 def format_aliases(aliases):
fmted = []
for a in aliases:
dashes = '-' if len(a) == 1 else '--'
fmted.append('``%s%s``' % (dashes, a))
return ', '.join(fmted)
def class_config_rst_doc(cls, trait_aliases):
Thomas Kluyver
Make each config option individually linkable
r23831 """Generate rST documentation for this class' config options.
Excludes traits defined on parent classes.
"""
lines = []
classname = cls.__name__
for k, trait in sorted(cls.class_traits(config=True).items()):
ttype = trait.__class__.__name__
Thomas Kluyver
Include command line aliases in config docs
r23832 fullname = classname + '.' + trait.name
lines += ['.. configtrait:: ' + fullname,
Thomas Kluyver
Make each config option individually linkable
r23831 ''
]
help = trait.help.rstrip() or 'No description'
Antony Lee
Use inspect.cleandoc in autogen_config....
r24791 lines.append(indent(inspect.cleandoc(help), 4) + '\n')
Thomas Kluyver
Make each config option individually linkable
r23831
# Choices or type
if 'Enum' in ttype:
# include Enum choices
lines.append(indent(
':options: ' + ', '.join('``%r``' % x for x in trait.values), 4))
else:
lines.append(indent(':trait type: ' + ttype, 4))
# Default value
# Ignore boring default values like None, [] or ''
if interesting_default_value(trait.default_value):
try:
dvr = trait.default_value_repr()
except Exception:
dvr = None # ignore defaults we can't construct
if dvr is not None:
if len(dvr) > 64:
dvr = dvr[:61] + '...'
# Double up backslashes, so they get to the rendered docs
dvr = dvr.replace('\\n', '\\\\n')
lines.append(indent(':default: ``%s``' % dvr, 4))
Thomas Kluyver
Include command line aliases in config docs
r23832 # Command line aliases
if trait_aliases[fullname]:
fmt_aliases = format_aliases(trait_aliases[fullname])
lines.append(indent(':CLI option: ' + fmt_aliases, 4))
Thomas Kluyver
Make each config option individually linkable
r23831 # Blank line
lines.append('')
return '\n'.join(lines)
Thomas Kluyver
Include command line aliases in config docs
r23832 def reverse_aliases(app):
"""Produce a mapping of trait names to lists of command line aliases.
"""
res = defaultdict(list)
for alias, trait in app.aliases.items():
res[trait].append(alias)
# Flags also often act as aliases for a boolean trait.
# Treat flags which set one trait to True as aliases.
for flag, (cfg, _) in app.flags.items():
if len(cfg) == 1:
classname = list(cfg)[0]
cls_cfg = cfg[classname]
if len(cls_cfg) == 1:
traitname = list(cls_cfg)[0]
if cls_cfg[traitname] is True:
res[classname+'.'+traitname].append(flag)
return res
Min RK
abspath fixes for autogen scripts
r21590
Thomas Kluyver
Use new traitlets API to generate config docs...
r21400 def write_doc(name, title, app, preamble=None):
Thomas Kluyver
Include command line aliases in config docs
r23832 trait_aliases = reverse_aliases(app)
Thomas Kluyver
Revert part of gh-9567
r22615 filename = join(options, name+'.rst')
with open(filename, 'w') as f:
Thomas Kluyver
Generate docs for config options.
r13459 f.write(title + '\n')
f.write(('=' * len(title)) + '\n')
f.write('\n')
if preamble is not None:
f.write(preamble + '\n\n')
Thomas Kluyver
Make each config option individually linkable
r23831 #f.write(app.document_config_options())
for c in app._classes_inc_parents():
Thomas Kluyver
Include command line aliases in config docs
r23832 f.write(class_config_rst_doc(c, trait_aliases))
Thomas Kluyver
Make each config option individually linkable
r23831 f.write('\n')
Yaroslav Halchenko
ENH: list generated config files in generated, and rm them upon clean
r16197
Thomas Kluyver
Generate docs for config options.
r13459
if __name__ == '__main__':
Thomas Kluyver
Revert part of gh-9567
r22615 # Touch this file for the make target
klonuo
Refactor autogen config
r22516 with open(generated, 'w'):
pass
Yaroslav Halchenko
ENH: list generated config files in generated, and rm them upon clean
r16197
Thomas Kluyver
Use new traitlets API to generate config docs...
r21400 write_doc('terminal', 'Terminal IPython options', TerminalIPythonApp())
write_doc('kernel', 'IPython kernel options', IPKernelApp(),
preamble=("These options can be used in :file:`ipython_kernel_config.py`. "
"The kernel also respects any options in `ipython_config.py`"),
MinRK
remove references to kernel config in parent config files...
r18030 )