def run(self): """ This method is called whenever the :rst:dir:`automodsumm` directive is found in a document. It is used to do any further manipulation of the directive, its options, and its content to get the desired rendered outcome. """ env = self.env modname = self.arguments[0] # for some reason, even though ``currentmodule`` is substituted in, # sphinx doesn't necessarily recognize this fact. So we just force # it internally, and that seems to fix things env.temp_data["py:module"] = modname env.ref_context["py:module"] = modname nodelist = [] # update toctree with relative path to file (not confdir) if "toctree" in self.options: self.options["toctree"] = self.option_processor( ).options["toctree"] # define additional content content = self.option_processor().generate_obj_list() for ii, modname in enumerate(content): if not modname.startswith("~"): content[ii] = "~" + modname self.content = content nodelist.extend(Autosummary.run(self)) return nodelist
def run(self): from inspect import isclass, isfunction self.warnings = [] nodelist = [] try: localnames, fqns, objs = find_mod_objs(self.arguments[0]) except ImportError: self.warnings = [] self.warn("Couldn't import module " + self.arguments[0]) return self.warnings try: # set self.content to trick the Autosummary internals. # Be sure to respect functions-only and classes-only. funconly = 'functions-only' in self.options clsonly = 'classes-only' in self.options skipmap = {} if 'skip' in self.options: skipnames = set(self.options['skip']) for lnm, fqnm in zip(localnames, fqns): if lnm in skipnames: skipnames.remove(lnm) skipmap[fqnm] = lnm if len(skipnames) > 0: self.warn('Tried to skip objects {objs} in module {mod}, ' 'but they were not present. Ignoring.'.format( objs=skipnames, mod=self.arguments[0])) if funconly and not clsonly: cont = [] for nm, obj in zip(fqns, objs): if nm not in skipmap and isfunction(obj): cont.append('~' + nm) elif clsonly: cont = [] for nm, obj in zip(fqns, objs): if nm not in skipmap and isclass(obj): cont.append('~' + nm) else: if clsonly and funconly: self.warning('functions-only and classes-only both ' 'defined. Skipping.') cont = ['~' + nm for nm in fqns if nm not in skipmap] self.content = cont #can't use super because Sphinx/docutils has trouble #return super(Autosummary,self).run() nodelist.extend(Autosummary.run(self)) return self.warnings + nodelist finally: # has_content = False for the Automodsumm self.content = []
def run(self): from inspect import isclass, isfunction nodelist = [] try: localnames, fqns, objs = find_mod_objs(self.arguments[0]) except ImportError: self.warnings = [] self.warn("Couldn't import module " + self.arguments[0]) return self.warnings try: # set self.content to trick the Autosummary internals. # Be sure to respect functions-only and classes-only. funconly = 'functions-only' in self.options clsonly = 'classes-only' in self.options if funconly and not clsonly: cont = [] for nm, obj in zip(fqns, objs): if isfunction(obj): cont.append('~' + nm) elif clsonly: cont = [] for nm, obj in zip(fqns, objs): if isclass(obj): cont.append('~' + nm) else: if clsonly and funconly: self.warning('functions-only and classes-only both ' 'defined. Skipping.') cont = ['~' + objname for objname in fqns] self.content = cont #can't use super because Sphinx/docutils has trouble #return super(Autosummary,self).run() nodelist.extend(Autosummary.run(self)) return nodelist finally: # has_content = False for the Automodsumm self.content = []
def run(self): env = self.state.document.settings.env modname = self.arguments[0] self.warnings = [] nodelist = [] try: localnames, fqns, objs = find_mod_objs(modname) except ImportError: self.warnings = [] self.warn("Couldn't import module " + modname) return self.warnings try: # set self.content to trick the Autosummary internals. # Be sure to respect functions-only and classes-only. funconly = 'functions-only' in self.options clsonly = 'classes-only' in self.options skipnames = [] if 'skip' in self.options: option_skipnames = set(self.options['skip']) for lnm in localnames: if lnm in option_skipnames: option_skipnames.remove(lnm) skipnames.append(lnm) if len(option_skipnames) > 0: self.warn('Tried to skip objects {objs} in module {mod}, ' 'but they were not present. Ignoring.'.format( objs=option_skipnames, mod=modname)) if funconly and not clsonly: cont = [] for nm, obj in zip(localnames, objs): if nm not in skipnames and inspect.isroutine(obj): cont.append(nm) elif clsonly: cont = [] for nm, obj in zip(localnames, objs): if nm not in skipnames and inspect.isclass(obj): cont.append(nm) else: if clsonly and funconly: self.warning('functions-only and classes-only both ' 'defined. Skipping.') cont = [nm for nm in localnames if nm not in skipnames] self.content = cont # for some reason, even though ``currentmodule`` is substituted in, # sphinx doesn't necessarily recognize this fact. So we just force # it internally, and that seems to fix things env.temp_data['py:module'] = modname # can't use super because Sphinx/docutils has trouble return # super(Autosummary,self).run() nodelist.extend(Autosummary.run(self)) return self.warnings + nodelist finally: # has_content = False for the Automodsumm self.content = []