186 lines
4.8 KiB
Plaintext
186 lines
4.8 KiB
Plaintext
|
<%!
|
||
|
import re
|
||
|
import pdoc
|
||
|
from pdoc.html_helpers import to_markdown, format_git_link
|
||
|
|
||
|
def link(d, fmt='{}'):
|
||
|
name = fmt.format(d.qualname + ('()' if isinstance(d, pdoc.Function) else ''))
|
||
|
if isinstance(d, pdoc.External):
|
||
|
return name
|
||
|
return '[{}](#{})'.format(name, d.refname)
|
||
|
|
||
|
def _to_md(text, module):
|
||
|
text = to_markdown(text, module=module, link=link)
|
||
|
# Setext H2 headings to atx H2 headings
|
||
|
text = re.sub(r'\n(.+)\n-{3,}\n', r'\n## \1\n\n', text)
|
||
|
# Convert admonitions into simpler paragraphs, dedent contents
|
||
|
text = re.sub(r'^(?P<indent>( *))!!! \w+ \"([^\"]*)\"(.*(?:\n(?P=indent) +.*)*)',
|
||
|
lambda m: '{}**{}:** {}'.format(m.group(2), m.group(3),
|
||
|
re.sub('\n {,4}', '\n', m.group(4))),
|
||
|
text, flags=re.MULTILINE)
|
||
|
return text
|
||
|
|
||
|
def subh(text, level=2):
|
||
|
# Deepen heading levels so H2 becomes H4 etc.
|
||
|
return re.sub(r'\n(#+) +(.+)\n', r'\n%s\1 \2\n' % ('#' * level), text)
|
||
|
%>
|
||
|
|
||
|
<%def name="title(level, string, id=None)">
|
||
|
<% id = ' {#%s}' % id if id is not None else '' %>
|
||
|
${('#' * level) + ' ' + string + id}
|
||
|
</%def>
|
||
|
|
||
|
<%def name="funcdef(f)">
|
||
|
<%
|
||
|
returns = show_type_annotations and f.return_annotation() or ''
|
||
|
if returns:
|
||
|
returns = ' -> ' + returns
|
||
|
%>
|
||
|
> `${f.funcdef()} ${f.name}(${', '.join(f.params(annotate=show_type_annotations))})${returns}`
|
||
|
</%def>
|
||
|
|
||
|
<%def name="classdef(c)">
|
||
|
> `class ${c.name}(${', '.join(c.params(annotate=show_type_annotations))})`
|
||
|
</%def>
|
||
|
|
||
|
<%def name="show_source(d)">
|
||
|
% if (show_source_code or git_link_template) and d.source and d.obj is not getattr(d.inherits, 'obj', None):
|
||
|
<% git_link = format_git_link(git_link_template, d) %>
|
||
|
[[view code]](${git_link})
|
||
|
%endif
|
||
|
</%def>
|
||
|
|
||
|
---
|
||
|
description: |
|
||
|
API documentation for modules: ${', '.join(m.name for m in modules)}.
|
||
|
|
||
|
lang: en
|
||
|
|
||
|
classoption: oneside
|
||
|
geometry: margin=1in
|
||
|
papersize: a4
|
||
|
|
||
|
linkcolor: blue
|
||
|
links-as-notes: true
|
||
|
...
|
||
|
% for module in modules:
|
||
|
<%
|
||
|
submodules = module.submodules()
|
||
|
variables = module.variables()
|
||
|
functions = module.functions()
|
||
|
classes = module.classes()
|
||
|
|
||
|
def to_md(text):
|
||
|
return _to_md(text, module)
|
||
|
%>
|
||
|
|
||
|
-------------------------------------------
|
||
|
|
||
|
${title(1, ('Namespace' if module.is_namespace else 'Module') + ' `%s`' % module.name, module.refname)}
|
||
|
${module.docstring | to_md}
|
||
|
|
||
|
% if submodules:
|
||
|
${title(2, 'Sub-modules')}
|
||
|
% for m in submodules:
|
||
|
* [${m.name}](#${m.refname})
|
||
|
% endfor
|
||
|
% endif
|
||
|
|
||
|
% if variables:
|
||
|
${title(2, 'Variables')}
|
||
|
% for v in variables:
|
||
|
${title(3, 'Variable `%s`' % v.name, v.refname)}
|
||
|
${show_source(v)}
|
||
|
${v.docstring | to_md, subh, subh}
|
||
|
% endfor
|
||
|
% endif
|
||
|
|
||
|
% if functions:
|
||
|
${title(2, 'Functions')}
|
||
|
% for f in functions:
|
||
|
${title(3, 'Function `%s`' % f.name, f.refname)}
|
||
|
${show_source(f)}
|
||
|
|
||
|
${funcdef(f)}
|
||
|
|
||
|
${f.docstring | to_md, subh, subh}
|
||
|
% endfor
|
||
|
% endif
|
||
|
|
||
|
% if classes:
|
||
|
${title(2, 'Classes')}
|
||
|
% for cls in classes:
|
||
|
${title(3, 'Class `%s`' % cls.name, cls.refname)}
|
||
|
${show_source(cls)}
|
||
|
|
||
|
${classdef(cls)}
|
||
|
|
||
|
${cls.docstring | to_md, subh}
|
||
|
<%
|
||
|
class_vars = cls.class_variables(show_inherited_members, sort=sort_identifiers)
|
||
|
static_methods = cls.functions(show_inherited_members, sort=sort_identifiers)
|
||
|
inst_vars = cls.instance_variables(show_inherited_members, sort=sort_identifiers)
|
||
|
methods = cls.methods(show_inherited_members, sort=sort_identifiers)
|
||
|
mro = cls.mro()
|
||
|
subclasses = cls.subclasses()
|
||
|
%>
|
||
|
% if mro:
|
||
|
${title(4, 'Ancestors (in MRO)')}
|
||
|
% for c in mro:
|
||
|
* [${c.refname}](#${c.refname})
|
||
|
% endfor
|
||
|
% endif
|
||
|
|
||
|
% if subclasses:
|
||
|
${title(4, 'Descendants')}
|
||
|
% for c in subclasses:
|
||
|
* [${c.refname}](#${c.refname})
|
||
|
% endfor
|
||
|
% endif
|
||
|
|
||
|
% if class_vars:
|
||
|
${title(4, 'Class variables')}
|
||
|
% for v in class_vars:
|
||
|
${title(5, 'Variable `%s`' % v.name, v.refname)}
|
||
|
${v.docstring | to_md, subh, subh}
|
||
|
% endfor
|
||
|
% endif
|
||
|
|
||
|
% if inst_vars:
|
||
|
${title(4, 'Instance variables')}
|
||
|
% for v in inst_vars:
|
||
|
${title(5, 'Variable `%s`' % v.name, v.refname)}
|
||
|
${v.docstring | to_md, subh, subh}
|
||
|
% endfor
|
||
|
% endif
|
||
|
|
||
|
% if static_methods:
|
||
|
${title(4, 'Static methods')}
|
||
|
% for f in static_methods:
|
||
|
${title(5, '`Method %s`' % f.name, f.refname)}
|
||
|
|
||
|
${funcdef(f)}
|
||
|
|
||
|
${f.docstring | to_md, subh, subh}
|
||
|
% endfor
|
||
|
% endif
|
||
|
|
||
|
% if methods:
|
||
|
${title(4, 'Methods')}
|
||
|
% for f in methods:
|
||
|
${title(5, 'Method `%s`' % f.name, f.refname)}
|
||
|
|
||
|
${funcdef(f)}
|
||
|
|
||
|
${f.docstring | to_md, subh, subh}
|
||
|
% endfor
|
||
|
% endif
|
||
|
% endfor
|
||
|
% endif
|
||
|
|
||
|
##\## for module in modules:
|
||
|
% endfor
|
||
|
|
||
|
-----
|
||
|
Generated by *pdoc* ${pdoc.__version__} (<https://pdoc3.github.io>).
|