12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- # -*- coding: utf-8 -*-
- """
- :codeauthor: Pedro Algarvio (pedro@algarvio.me)
- saltautodoc.py
- ~~~~~~~~~~~~~~
- Properly handle ``__func_alias__``
- """
- # Import Sphinx libs
- from sphinx.ext.autodoc import FunctionDocumenter as FunctionDocumenter
- class SaltFunctionDocumenter(FunctionDocumenter):
- """
- Simple override of sphinx.ext.autodoc.FunctionDocumenter to properly render
- salt's aliased function names.
- """
- def format_name(self):
- """
- Format the function name
- """
- if not hasattr(self.module, "__func_alias__"):
- # Resume normal sphinx.ext.autodoc operation
- return super(FunctionDocumenter, self).format_name()
- if not self.objpath:
- # Resume normal sphinx.ext.autodoc operation
- return super(FunctionDocumenter, self).format_name()
- if len(self.objpath) > 1:
- # Resume normal sphinx.ext.autodoc operation
- return super(FunctionDocumenter, self).format_name()
- # Use the salt func aliased name instead of the real name
- return self.module.__func_alias__.get(self.objpath[0], self.objpath[0])
- def setup(app):
- def add_documenter(app, env, docnames):
- app.add_autodocumenter(SaltFunctionDocumenter)
- # add_autodocumenter() must be called after the initial setup and the
- # 'builder-inited' event, as sphinx.ext.autosummary will restore the
- # original documenter on 'builder-inited'
- app.connect("env-before-read-docs", add_documenter)
|