diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2020-01-01 14:40:13 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2020-01-04 13:28:07 +0900 |
commit | b968bb91e99bf9831849828bdd729c8756f2bc39 (patch) | |
tree | 0857c1578ef8d58370dcc631e90e9caa3b40bc3e /sphinx/domains/python.py | |
parent | 0319faf8f1503453b6ce19020819a8cf44e39f13 (diff) | |
download | sphinx-git-b968bb91e99bf9831849828bdd729c8756f2bc39.tar.gz |
Close #6830: autodoc: consider a member private if docstring has "private" metadata
Diffstat (limited to 'sphinx/domains/python.py')
-rw-r--r-- | sphinx/domains/python.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index f23c50256..3c3d3d707 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -764,6 +764,21 @@ class PyXRefRole(XRefRole): return title, target +def filter_meta_fields(app: Sphinx, domain: str, objtype: str, content: Element) -> None: + """Filter ``:meta:`` field from its docstring.""" + if domain != 'py': + return + + for node in content: + if isinstance(node, nodes.field_list): + fields = cast(List[nodes.field], node) + for field in fields: + field_name = cast(nodes.field_body, field[0]).astext().strip() + if field_name == 'meta' or field_name.startswith('meta '): + node.remove(field) + break + + class PythonModuleIndex(Index): """ Index subclass to provide the Python module index. @@ -1067,7 +1082,10 @@ class PythonDomain(Domain): def setup(app: Sphinx) -> Dict[str, Any]: + app.setup_extension('sphinx.directives') + app.add_domain(PythonDomain) + app.connect('object-description-transform', filter_meta_fields) return { 'version': 'builtin', |