mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Close #8022: autodoc: Allow to hide the value of the variables via metadata
autodata and autoattribute directives does not show right-hand value of the variable if its docstring contains ``:meta hide-value:`` in info-field-list.
This commit is contained in:
parent
bcebe71c8e
commit
9e9e486e65
4
CHANGES
4
CHANGES
@ -13,6 +13,10 @@ Deprecated
|
|||||||
Features added
|
Features added
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
* #8022: autodoc: autodata and autoattribute directives does not show right-hand
|
||||||
|
value of the variable if docstring contains ``:meta hide-value:`` in
|
||||||
|
info-field-list
|
||||||
|
|
||||||
Bugs fixed
|
Bugs fixed
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
@ -182,6 +182,16 @@ inserting them into the page source under a suitable :rst:dir:`py:module`,
|
|||||||
|
|
||||||
.. versionadded:: 3.1
|
.. versionadded:: 3.1
|
||||||
|
|
||||||
|
* autodoc considers a variable member does not have any default value if its
|
||||||
|
docstring contains ``:meta hide-value:`` in its :ref:`info-field-lists`.
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. code-block:: rst
|
||||||
|
|
||||||
|
var1 = None #: :meta hide-value:
|
||||||
|
|
||||||
|
.. versionadded:: 3.5
|
||||||
|
|
||||||
* Python "special" members (that is, those named like ``__special__``) will
|
* Python "special" members (that is, those named like ``__special__``) will
|
||||||
be included if the ``special-members`` flag option is given::
|
be included if the ``special-members`` flag option is given::
|
||||||
|
|
||||||
|
@ -1883,6 +1883,17 @@ class DataDocumenter(GenericAliasMixin, NewTypeMixin, TypeVarMixin,
|
|||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def should_suppress_value_header(self) -> bool:
|
||||||
|
if super().should_suppress_value_header():
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
doc = self.get_doc()
|
||||||
|
metadata = extract_metadata('\n'.join(sum(doc, [])))
|
||||||
|
if 'hide-value' in metadata:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
def add_directive_header(self, sig: str) -> None:
|
def add_directive_header(self, sig: str) -> None:
|
||||||
super().add_directive_header(sig)
|
super().add_directive_header(sig)
|
||||||
sourcename = self.get_sourcename()
|
sourcename = self.get_sourcename()
|
||||||
@ -2376,6 +2387,17 @@ class AttributeDocumenter(GenericAliasMixin, NewTypeMixin, SlotsMixin, # type:
|
|||||||
return self.get_attr(self.parent or self.object, '__module__', None) \
|
return self.get_attr(self.parent or self.object, '__module__', None) \
|
||||||
or self.modname
|
or self.modname
|
||||||
|
|
||||||
|
def should_suppress_value_header(self) -> bool:
|
||||||
|
if super().should_suppress_value_header():
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
doc = self.get_doc()
|
||||||
|
metadata = extract_metadata('\n'.join(sum(doc, [])))
|
||||||
|
if 'hide-value' in metadata:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
def add_directive_header(self, sig: str) -> None:
|
def add_directive_header(self, sig: str) -> None:
|
||||||
super().add_directive_header(sig)
|
super().add_directive_header(sig)
|
||||||
sourcename = self.get_sourcename()
|
sourcename = self.get_sourcename()
|
||||||
|
19
tests/roots/test-ext-autodoc/target/hide_value.py
Normal file
19
tests/roots/test-ext-autodoc/target/hide_value.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#: docstring
|
||||||
|
#:
|
||||||
|
#: :meta hide-value:
|
||||||
|
SENTINEL1 = object()
|
||||||
|
|
||||||
|
#: :meta hide-value:
|
||||||
|
SENTINEL2 = object()
|
||||||
|
|
||||||
|
|
||||||
|
class Foo:
|
||||||
|
"""docstring"""
|
||||||
|
|
||||||
|
#: docstring
|
||||||
|
#:
|
||||||
|
#: :meta hide-value:
|
||||||
|
SENTINEL1 = object()
|
||||||
|
|
||||||
|
#: :meta hide-value:
|
||||||
|
SENTINEL2 = object()
|
@ -2235,3 +2235,49 @@ def test_name_mangling(app):
|
|||||||
' name of Foo',
|
' name of Foo',
|
||||||
'',
|
'',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(sys.version_info < (3, 6), reason='python 3.6+ is required.')
|
||||||
|
@pytest.mark.sphinx('html', testroot='ext-autodoc')
|
||||||
|
def test_hide_value(app):
|
||||||
|
options = {'members': True}
|
||||||
|
actual = do_autodoc(app, 'module', 'target.hide_value', options)
|
||||||
|
assert list(actual) == [
|
||||||
|
'',
|
||||||
|
'.. py:module:: target.hide_value',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'.. py:class:: Foo()',
|
||||||
|
' :module: target.hide_value',
|
||||||
|
'',
|
||||||
|
' docstring',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
' .. py:attribute:: Foo.SENTINEL1',
|
||||||
|
' :module: target.hide_value',
|
||||||
|
'',
|
||||||
|
' docstring',
|
||||||
|
'',
|
||||||
|
' :meta hide-value:',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
' .. py:attribute:: Foo.SENTINEL2',
|
||||||
|
' :module: target.hide_value',
|
||||||
|
'',
|
||||||
|
' :meta hide-value:',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'.. py:data:: SENTINEL1',
|
||||||
|
' :module: target.hide_value',
|
||||||
|
'',
|
||||||
|
' docstring',
|
||||||
|
'',
|
||||||
|
' :meta hide-value:',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'.. py:data:: SENTINEL2',
|
||||||
|
' :module: target.hide_value',
|
||||||
|
'',
|
||||||
|
' :meta hide-value:',
|
||||||
|
'',
|
||||||
|
]
|
||||||
|
@ -189,3 +189,29 @@ def test_autoattribute_TypeVar(app):
|
|||||||
" alias of TypeVar('T1')",
|
" alias of TypeVar('T1')",
|
||||||
'',
|
'',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(sys.version_info < (3, 6), reason='python 3.6+ is required.')
|
||||||
|
@pytest.mark.sphinx('html', testroot='ext-autodoc')
|
||||||
|
def test_autoattribute_hide_value(app):
|
||||||
|
actual = do_autodoc(app, 'attribute', 'target.hide_value.Foo.SENTINEL1')
|
||||||
|
assert list(actual) == [
|
||||||
|
'',
|
||||||
|
'.. py:attribute:: Foo.SENTINEL1',
|
||||||
|
' :module: target.hide_value',
|
||||||
|
'',
|
||||||
|
' docstring',
|
||||||
|
'',
|
||||||
|
' :meta hide-value:',
|
||||||
|
'',
|
||||||
|
]
|
||||||
|
|
||||||
|
actual = do_autodoc(app, 'attribute', 'target.hide_value.Foo.SENTINEL2')
|
||||||
|
assert list(actual) == [
|
||||||
|
'',
|
||||||
|
'.. py:attribute:: Foo.SENTINEL2',
|
||||||
|
' :module: target.hide_value',
|
||||||
|
'',
|
||||||
|
' :meta hide-value:',
|
||||||
|
'',
|
||||||
|
]
|
||||||
|
@ -129,3 +129,29 @@ def test_autodata_TypeVar(app):
|
|||||||
" alias of TypeVar('T1')",
|
" alias of TypeVar('T1')",
|
||||||
'',
|
'',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.skipif(sys.version_info < (3, 6), reason='python 3.6+ is required.')
|
||||||
|
@pytest.mark.sphinx('html', testroot='ext-autodoc')
|
||||||
|
def test_autodata_hide_value(app):
|
||||||
|
actual = do_autodoc(app, 'data', 'target.hide_value.SENTINEL1')
|
||||||
|
assert list(actual) == [
|
||||||
|
'',
|
||||||
|
'.. py:data:: SENTINEL1',
|
||||||
|
' :module: target.hide_value',
|
||||||
|
'',
|
||||||
|
' docstring',
|
||||||
|
'',
|
||||||
|
' :meta hide-value:',
|
||||||
|
'',
|
||||||
|
]
|
||||||
|
|
||||||
|
actual = do_autodoc(app, 'data', 'target.hide_value.SENTINEL2')
|
||||||
|
assert list(actual) == [
|
||||||
|
'',
|
||||||
|
'.. py:data:: SENTINEL2',
|
||||||
|
' :module: target.hide_value',
|
||||||
|
'',
|
||||||
|
' :meta hide-value:',
|
||||||
|
'',
|
||||||
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user