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
|
||||
--------------
|
||||
|
||||
* #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
|
||||
----------
|
||||
|
||||
|
@ -182,6 +182,16 @@ inserting them into the page source under a suitable :rst:dir:`py:module`,
|
||||
|
||||
.. 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
|
||||
be included if the ``special-members`` flag option is given::
|
||||
|
||||
|
@ -1883,6 +1883,17 @@ class DataDocumenter(GenericAliasMixin, NewTypeMixin, TypeVarMixin,
|
||||
|
||||
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:
|
||||
super().add_directive_header(sig)
|
||||
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) \
|
||||
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:
|
||||
super().add_directive_header(sig)
|
||||
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',
|
||||
'',
|
||||
]
|
||||
|
||||
|
||||
@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')",
|
||||
'',
|
||||
]
|
||||
|
||||
|
||||
@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')",
|
||||
'',
|
||||
]
|
||||
|
||||
|
||||
@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