def run(self): """Run method for the directive""" doc_nodes = AutoDirective.run(self) if 'autosummary' not in self.options: return doc_nodes self.warnings = [] self.env = self.state.document.settings.env self.result = ViewList() documenter = self.autosummary_documenter grouped_documenters = documenter.get_grouped_documenters() if 'show-formatoptions' in self.env.config.autodoc_default_flags: self.options['show-formatoptions'] = True summ_nodes = self.autosumm_nodes(documenter, grouped_documenters) dn = summ_nodes.pop(documenter.fullname) doc_nodes = self.inject_summ_nodes(doc_nodes, summ_nodes) # insert the nodes directly after the paragraphs if self.name == 'autoclass': for node in dn[::-1]: self._insert_after_paragraphs(doc_nodes[1], node) dn = [] elif self.name == 'automodule': # insert table before the documentation of the members istart = 2 if 'noindex' not in self.options else 0 found = False if len(doc_nodes[istart:]) >= 2: for i in range(istart, len(doc_nodes)): if isinstance(doc_nodes[i], sphinx.addnodes.index): found = True break if found: for node in dn[::-1]: doc_nodes.insert(i, node) dn = [] return self.warnings + dn + doc_nodes
def run(self): self.load_agx_config() agx_defs = self.read_agx() ret = list() old_name = self.name self.name = 'autofunction' for transform in agx_defs: for generator in transform['generators']: sec = nodes.section() sec['ids'].append(generator['name']) text = "%s" % generator['name'].replace('.', ' - ') gen = nodes.subtitle(text=text) sec.append(gen) ret.append(sec) description = generator['description'] if description: desc = nodes.paragraph(text=description) sec.append(desc) for handler in generator['handler']: name = handler['name'] self.arguments = [handler['package_path']] doc = AutoDirective.run(self) sec += doc body = doc[1].children[-1] position = len(doc[1].children[-1]) - 2 dl = nodes.definition_list() body.insert(position, dl) iname = name[:name.find('.')] dl.append(self._definition_item('Transform', iname)) iname = name[name.find('.') + 1:name.rfind('.')] dl.append(self._definition_item('Generator', iname)) scope = handler['scope'] if scope is not None: modulename = scope['class'].__module__ classname = scope['class'].__name__ iname = "%s.%s" % (modulename, classname) dl.append(self._definition_item('Scope', iname)) iname = handler['order'] dl.append(self._definition_item('Order', iname)) self.name = old_name return ret