<%namespace name="doc" file="_doc.tmpl"/> <% ancestors = [] if isinstance(node, ast.Class): ancestors = formatter.get_inheritable_types(node) fields = getattr(node, 'fields', []) extra_fields = [getattr(f.anonymous_node, 'fields', []) for f in fields if f.anonymous_node is not None] extra_fields = [field for sublist in extra_fields for field in sublist] non_private_fields = [f for f in fields + extra_fields if not formatter.is_private_field(node, f)] def get_ancestor_counts(*kinds): counts = {} for a in ancestors: count = 0 for kind in kinds: if kind == 'fields': count += len(non_private_fields) else: count += len(getattr(a, kind, [])) if count: counts[a] = count return counts def should_render(*kinds): has_nonempty = False for kind in kinds: if kind == 'fields': if non_private_fields: has_nonempty = True elif getattr(node, kind, []): has_nonempty = True return has_nonempty or get_ancestor_counts(*kinds) %> <%def name="inherited(*kinds)"> <% counts = get_ancestor_counts(*kinds) %> % if counts: <% links = ', '.join(['{} ({})'.format(formatter.format_xref(a), count) for a, count in counts.items()]) %> ${formatter.format(node, '**Inherited:** ' + links)} % endif <%def name="format_function_cell(m)"> ${formatter.format_function_name(m)}(${formatter.format_in_parameters(m)}) % if should_render('static_methods', 'constructors', 'methods'):

Methods

${inherited('static_methods', 'constructors', 'methods')} <% static_methods = getattr(node, 'static_methods', []) + getattr(node, 'constructors', []) methods = static_methods + getattr(node, 'methods', []) %> % if methods: % for m in methods: <%doc:introspectable node="${m}"> % if m in static_methods: % else: % endif ${format_function_cell(m)} % endfor
static
% endif % endif % if should_render('virtual_methods'):

Virtual methods

${inherited('virtual_methods')} % if getattr(node, 'virtual_methods', []): % for m in node.virtual_methods: <%doc:introspectable node="${m}"> ${format_function_cell(m)} % endfor
% endif % endif % if should_render('properties'):

Properties

${inherited('properties')} % if getattr(node, 'properties', []): % for p in node.properties: <%doc:introspectable node="${p}"> % endfor
Name Type Flags
${p.name} ${formatter.format_type(p.type)} ${formatter.format_property_flags(p, abbrev=True)}
% endif % endif % if should_render('signals'):

Signals

${inherited('signals')} % if getattr(node, 'signals', []): % for s in node.signals: <%doc:introspectable node="${s}"> % endfor
${s.name}(${formatter.format_signal_parameters(s)})
% endif % endif % if should_render('fields'):

Fields

${inherited('fields')} % if non_private_fields: % for f in non_private_fields: <%doc:introspectable node="${f}"> ## Fields almost never warrant a detailed entry, we'll just make this ## the entry to be indexed by DevDocs % endfor
Name Type Access Description
${f.name} ${formatter.format_type(f.type)} ${formatter.format_property_flags(f, abbrev=True)} % if f.doc: ${formatter.format_inline(node, f.doc)} % endif
% endif % endif