@@ -1555,15 +1555,41 @@ def entry(
15551555 qualname = f'{ self .name } .{ entry_name } '
15561556 return self ._node (role , qualname , doc , args = args , indent = indent , ** rst_options )
15571557
1558- def brief (self , doc : str , * , indent : int = 0 , ** options : Any ) -> list [str ]:
1559- """Generate the brief part of the class being documented."""
1558+ def preamble_lookup (
1559+ self , doc : str , * , indent : int = 0 , ** options : Any
1560+ ) -> list [str ]:
1561+ assert (
1562+ doc
1563+ ), f'enumeration class { self .target !r} should have an explicit docstring'
1564+
1565+ args = self ._preamble_args ()
1566+ return self ._preamble (doc = doc , args = args , indent = indent , ** options )
1567+
1568+ def preamble_constructor (
1569+ self , doc : str , * , indent : int = 0 , ** options : Any
1570+ ) -> list [str ]:
15601571 assert (
15611572 doc
15621573 ), f'enumeration class { self .target !r} should have an explicit docstring'
15631574
1564- args = '(value)'
1575+ args = self ._preamble_args ()
1576+ return self ._preamble (doc = doc , args = args , indent = indent , ** options )
1577+
1578+ def _preamble (
1579+ self , * , doc : str , args : str , indent : int = 0 , ** options : Any
1580+ ) -> list [str ]:
1581+ """Generate the preamble of the class being documented."""
15651582 return self ._node ('class' , self .name , doc , args = args , indent = indent , ** options )
15661583
1584+ @staticmethod
1585+ def _preamble_args ():
1586+ """EnumType.__call__() is a dual-purpose method:
1587+
1588+ * Look an enum member (valid only if the enum has members)
1589+ * Create a new enum class (functional API)
1590+ """
1591+ return '(value)'
1592+
15671593 def method (
15681594 self ,
15691595 name : str ,
@@ -1595,7 +1621,7 @@ def test_enum_class(app, autodoc_enum_options):
15951621
15961622 actual = do_autodoc (app , 'class' , fmt .target , options )
15971623 assert list (actual ) == [
1598- * fmt .brief ('this is enum class' ),
1624+ * fmt .preamble_lookup ('this is enum class' ),
15991625 * fmt .method (
16001626 'say_goodbye' , 'a classmethod says good-bye to you.' , 'classmethod'
16011627 ),
@@ -1611,7 +1637,7 @@ def test_enum_class(app, autodoc_enum_options):
16111637 # redefined by the user in one of the bases.
16121638 actual = do_autodoc (app , 'class' , fmt .target , options | {'inherited-members' : None })
16131639 assert list (actual ) == [
1614- * fmt .brief ('this is enum class' ),
1640+ * fmt .preamble_lookup ('this is enum class' ),
16151641 * fmt .method (
16161642 'say_goodbye' , 'a classmethod says good-bye to you.' , 'classmethod'
16171643 ),
@@ -1633,7 +1659,7 @@ def test_enum_class_with_data_type(app, autodoc_enum_options):
16331659
16341660 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
16351661 assert list (actual ) == [
1636- * fmt .brief ('this is enum class' ),
1662+ * fmt .preamble_lookup ('this is enum class' ),
16371663 * fmt .method ('say_goodbye' , 'docstring' , 'classmethod' ),
16381664 * fmt .method ('say_hello' , 'docstring' ),
16391665 * fmt .member ('x' , 'x' , '' ),
@@ -1642,7 +1668,7 @@ def test_enum_class_with_data_type(app, autodoc_enum_options):
16421668 options = autodoc_enum_options | {'inherited-members' : None }
16431669 actual = do_autodoc (app , 'class' , fmt .target , options )
16441670 assert list (actual ) == [
1645- * fmt .brief ('this is enum class' ),
1671+ * fmt .preamble_lookup ('this is enum class' ),
16461672 * fmt .entry ('dtype' , 'docstring' , role = 'property' ),
16471673 * fmt .method ('isupper' , 'inherited' ),
16481674 * fmt .method ('say_goodbye' , 'docstring' , 'classmethod' ),
@@ -1657,7 +1683,7 @@ def test_enum_class_with_mixin_type(app, autodoc_enum_options):
16571683
16581684 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
16591685 assert list (actual ) == [
1660- * fmt .brief ('this is enum class' ),
1686+ * fmt .preamble_lookup ('this is enum class' ),
16611687 * fmt .method ('say_goodbye' , 'docstring' , 'classmethod' ),
16621688 * fmt .method ('say_hello' , 'docstring' ),
16631689 * fmt .member ('x' , 'X' , '' ),
@@ -1666,7 +1692,7 @@ def test_enum_class_with_mixin_type(app, autodoc_enum_options):
16661692 options = autodoc_enum_options | {'inherited-members' : None }
16671693 actual = do_autodoc (app , 'class' , fmt .target , options )
16681694 assert list (actual ) == [
1669- * fmt .brief ('this is enum class' ),
1695+ * fmt .preamble_lookup ('this is enum class' ),
16701696 * fmt .method ('say_goodbye' , 'docstring' , 'classmethod' ),
16711697 * fmt .method ('say_hello' , 'docstring' ),
16721698 * fmt .entry ('value' , 'uppercased' , role = 'property' ),
@@ -1680,14 +1706,14 @@ def test_enum_class_with_mixin_type_and_inheritence(app, autodoc_enum_options):
16801706
16811707 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
16821708 assert list (actual ) == [
1683- * fmt .brief ('this is enum class' ),
1709+ * fmt .preamble_lookup ('this is enum class' ),
16841710 * fmt .member ('x' , 'X' , '' ),
16851711 ]
16861712
16871713 options = autodoc_enum_options | {'inherited-members' : None }
16881714 actual = do_autodoc (app , 'class' , fmt .target , options )
16891715 assert list (actual ) == [
1690- * fmt .brief ('this is enum class' ),
1716+ * fmt .preamble_lookup ('this is enum class' ),
16911717 * fmt .method ('say_goodbye' , 'inherited' , 'classmethod' ),
16921718 * fmt .method ('say_hello' , 'inherited' ),
16931719 * fmt .entry ('value' , 'uppercased' , role = 'property' ),
@@ -1701,7 +1727,7 @@ def test_enum_class_with_mixin_enum_type(app, autodoc_enum_options):
17011727
17021728 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
17031729 assert list (actual ) == [
1704- * fmt .brief ('this is enum class' ),
1730+ * fmt .preamble_lookup ('this is enum class' ),
17051731 # override() is overridden at the class level so it should be rendered
17061732 * fmt .method ('override' , 'overridden' ),
17071733 # say_goodbye() and say_hello() are not rendered since they are inherited
@@ -1711,7 +1737,7 @@ def test_enum_class_with_mixin_enum_type(app, autodoc_enum_options):
17111737 options = autodoc_enum_options | {'inherited-members' : None }
17121738 actual = do_autodoc (app , 'class' , fmt .target , options )
17131739 assert list (actual ) == [
1714- * fmt .brief ('this is enum class' ),
1740+ * fmt .preamble_lookup ('this is enum class' ),
17151741 * fmt .method ('override' , 'overridden' ),
17161742 * fmt .method ('say_goodbye' , 'inherited' , 'classmethod' ),
17171743 * fmt .method ('say_hello' , 'inherited' ),
@@ -1725,7 +1751,7 @@ def test_enum_class_with_mixin_and_data_type(app, autodoc_enum_options):
17251751
17261752 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
17271753 assert list (actual ) == [
1728- * fmt .brief ('this is enum class' ),
1754+ * fmt .preamble_lookup ('this is enum class' ),
17291755 * fmt .method ('isupper' , 'overridden' ),
17301756 * fmt .method ('say_goodbye' , 'overridden' , 'classmethod' ),
17311757 * fmt .method ('say_hello' , 'overridden' ),
@@ -1736,7 +1762,7 @@ def test_enum_class_with_mixin_and_data_type(app, autodoc_enum_options):
17361762 options = autodoc_enum_options | {'special-members' : '__str__' }
17371763 actual = do_autodoc (app , 'class' , fmt .target , options )
17381764 assert list (actual ) == [
1739- * fmt .brief ('this is enum class' ),
1765+ * fmt .preamble_lookup ('this is enum class' ),
17401766 * fmt .method ('__str__' , 'overridden' ),
17411767 * fmt .method ('isupper' , 'overridden' ),
17421768 * fmt .method ('say_goodbye' , 'overridden' , 'classmethod' ),
@@ -1747,7 +1773,7 @@ def test_enum_class_with_mixin_and_data_type(app, autodoc_enum_options):
17471773 options = autodoc_enum_options | {'inherited-members' : None }
17481774 actual = do_autodoc (app , 'class' , fmt .target , options )
17491775 assert list (actual ) == [
1750- * fmt .brief ('this is enum class' ),
1776+ * fmt .preamble_lookup ('this is enum class' ),
17511777 * fmt .entry ('dtype' , 'docstring' , role = 'property' ),
17521778 * fmt .method ('isupper' , 'overridden' ),
17531779 * fmt .method ('say_goodbye' , 'overridden' , 'classmethod' ),
@@ -1763,7 +1789,7 @@ def test_enum_with_parent_enum(app, autodoc_enum_options):
17631789
17641790 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
17651791 assert list (actual ) == [
1766- * fmt .brief ('this is enum class' ),
1792+ * fmt .preamble_lookup ('this is enum class' ),
17671793 * fmt .method ('isupper' , 'overridden' ),
17681794 * fmt .member ('x' , 'X' , '' ),
17691795 ]
@@ -1772,7 +1798,7 @@ def test_enum_with_parent_enum(app, autodoc_enum_options):
17721798 options = autodoc_enum_options | {'special-members' : '__str__' }
17731799 actual = do_autodoc (app , 'class' , fmt .target , options )
17741800 assert list (actual ) == [
1775- * fmt .brief ('this is enum class' ),
1801+ * fmt .preamble_lookup ('this is enum class' ),
17761802 * fmt .method ('__str__' , 'overridden' ),
17771803 * fmt .method ('isupper' , 'overridden' ),
17781804 * fmt .member ('x' , 'X' , '' ),
@@ -1781,7 +1807,7 @@ def test_enum_with_parent_enum(app, autodoc_enum_options):
17811807 options = autodoc_enum_options | {'inherited-members' : None }
17821808 actual = do_autodoc (app , 'class' , fmt .target , options )
17831809 assert list (actual ) == [
1784- * fmt .brief ('this is enum class' ),
1810+ * fmt .preamble_lookup ('this is enum class' ),
17851811 * fmt .entry ('dtype' , 'docstring' , role = 'property' ),
17861812 * fmt .method ('isupper' , 'overridden' ),
17871813 * fmt .method ('override' , 'inherited' ),
@@ -1798,28 +1824,28 @@ def test_enum_sunder_method(app, autodoc_enum_options):
17981824
17991825 fmt = _EnumFormatter ('EnumSunderMissingInNonEnumMixin' )
18001826 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
1801- assert list (actual ) == [* fmt .brief ('this is enum class' )]
1827+ assert list (actual ) == [* fmt .preamble_constructor ('this is enum class' )]
18021828 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options | PRIVATE )
1803- assert list (actual ) == [* fmt .brief ('this is enum class' )]
1829+ assert list (actual ) == [* fmt .preamble_constructor ('this is enum class' )]
18041830
18051831 fmt = _EnumFormatter ('EnumSunderMissingInEnumMixin' )
18061832 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
1807- assert list (actual ) == [* fmt .brief ('this is enum class' )]
1833+ assert list (actual ) == [* fmt .preamble_constructor ('this is enum class' )]
18081834 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options | PRIVATE )
1809- assert list (actual ) == [* fmt .brief ('this is enum class' )]
1835+ assert list (actual ) == [* fmt .preamble_constructor ('this is enum class' )]
18101836
18111837 fmt = _EnumFormatter ('EnumSunderMissingInDataType' )
18121838 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
1813- assert list (actual ) == [* fmt .brief ('this is enum class' )]
1839+ assert list (actual ) == [* fmt .preamble_constructor ('this is enum class' )]
18141840 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options | PRIVATE )
1815- assert list (actual ) == [* fmt .brief ('this is enum class' )]
1841+ assert list (actual ) == [* fmt .preamble_constructor ('this is enum class' )]
18161842
18171843 fmt = _EnumFormatter ('EnumSunderMissingInClass' )
18181844 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
1819- assert list (actual ) == [* fmt .brief ('this is enum class' )]
1845+ assert list (actual ) == [* fmt .preamble_constructor ('this is enum class' )]
18201846 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options | PRIVATE )
18211847 assert list (actual ) == [
1822- * fmt .brief ('this is enum class' ),
1848+ * fmt .preamble_constructor ('this is enum class' ),
18231849 * fmt .method ('_missing_' , 'docstring' , 'classmethod' , args = '(value)' ),
18241850 ]
18251851
@@ -1834,21 +1860,21 @@ def test_enum_inherited_sunder_method(app, autodoc_enum_options):
18341860 fmt = _EnumFormatter ('EnumSunderMissingInNonEnumMixin' )
18351861 actual = do_autodoc (app , 'class' , fmt .target , options )
18361862 assert list (actual ) == [
1837- * fmt .brief ('this is enum class' ),
1863+ * fmt .preamble_constructor ('this is enum class' ),
18381864 * fmt .method ('_missing_' , 'inherited' , 'classmethod' , args = '(value)' ),
18391865 ]
18401866
18411867 fmt = _EnumFormatter ('EnumSunderMissingInEnumMixin' )
18421868 actual = do_autodoc (app , 'class' , fmt .target , options )
18431869 assert list (actual ) == [
1844- * fmt .brief ('this is enum class' ),
1870+ * fmt .preamble_constructor ('this is enum class' ),
18451871 * fmt .method ('_missing_' , 'inherited' , 'classmethod' , args = '(value)' ),
18461872 ]
18471873
18481874 fmt = _EnumFormatter ('EnumSunderMissingInDataType' )
18491875 actual = do_autodoc (app , 'class' , fmt .target , options )
18501876 assert list (actual ) == [
1851- * fmt .brief ('this is enum class' ),
1877+ * fmt .preamble_constructor ('this is enum class' ),
18521878 * fmt .method ('_missing_' , 'inherited' , 'classmethod' , args = '(value)' ),
18531879 * fmt .entry ('dtype' , 'docstring' , role = 'property' ),
18541880 * fmt .method ('isupper' , 'inherited' ),
@@ -1857,7 +1883,7 @@ def test_enum_inherited_sunder_method(app, autodoc_enum_options):
18571883 fmt = _EnumFormatter ('EnumSunderMissingInClass' )
18581884 actual = do_autodoc (app , 'class' , fmt .target , options )
18591885 assert list (actual ) == [
1860- * fmt .brief ('this is enum class' ),
1886+ * fmt .preamble_constructor ('this is enum class' ),
18611887 * fmt .method ('_missing_' , 'docstring' , 'classmethod' , args = '(value)' ),
18621888 ]
18631889
@@ -1866,20 +1892,20 @@ def test_enum_inherited_sunder_method(app, autodoc_enum_options):
18661892def test_enum_custom_name_property (app , autodoc_enum_options ):
18671893 fmt = _EnumFormatter ('EnumNamePropertyInNonEnumMixin' )
18681894 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
1869- assert list (actual ) == [* fmt .brief ('this is enum class' )]
1895+ assert list (actual ) == [* fmt .preamble_constructor ('this is enum class' )]
18701896
18711897 fmt = _EnumFormatter ('EnumNamePropertyInEnumMixin' )
18721898 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
1873- assert list (actual ) == [* fmt .brief ('this is enum class' )]
1899+ assert list (actual ) == [* fmt .preamble_constructor ('this is enum class' )]
18741900
18751901 fmt = _EnumFormatter ('EnumNamePropertyInDataType' )
18761902 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
1877- assert list (actual ) == [* fmt .brief ('this is enum class' )]
1903+ assert list (actual ) == [* fmt .preamble_constructor ('this is enum class' )]
18781904
18791905 fmt = _EnumFormatter ('EnumNamePropertyInClass' )
18801906 actual = do_autodoc (app , 'class' , fmt .target , autodoc_enum_options )
18811907 assert list (actual ) == [
1882- * fmt .brief ('this is enum class' ),
1908+ * fmt .preamble_constructor ('this is enum class' ),
18831909 * fmt .entry ('name' , 'docstring' , role = 'property' ),
18841910 ]
18851911
@@ -1891,21 +1917,21 @@ def test_enum_inherited_custom_name_property(app, autodoc_enum_options):
18911917 fmt = _EnumFormatter ('EnumNamePropertyInNonEnumMixin' )
18921918 actual = do_autodoc (app , 'class' , fmt .target , options )
18931919 assert list (actual ) == [
1894- * fmt .brief ('this is enum class' ),
1920+ * fmt .preamble_constructor ('this is enum class' ),
18951921 * fmt .entry ('name' , 'inherited' , role = 'property' ),
18961922 ]
18971923
18981924 fmt = _EnumFormatter ('EnumNamePropertyInEnumMixin' )
18991925 actual = do_autodoc (app , 'class' , fmt .target , options )
19001926 assert list (actual ) == [
1901- * fmt .brief ('this is enum class' ),
1927+ * fmt .preamble_constructor ('this is enum class' ),
19021928 * fmt .entry ('name' , 'inherited' , role = 'property' ),
19031929 ]
19041930
19051931 fmt = _EnumFormatter ('EnumNamePropertyInDataType' )
19061932 actual = do_autodoc (app , 'class' , fmt .target , options )
19071933 assert list (actual ) == [
1908- * fmt .brief ('this is enum class' ),
1934+ * fmt .preamble_constructor ('this is enum class' ),
19091935 * fmt .entry ('dtype' , 'docstring' , role = 'property' ),
19101936 * fmt .method ('isupper' , 'inherited' ),
19111937 * fmt .entry ('name' , 'inherited' , role = 'property' ),
@@ -1914,7 +1940,7 @@ def test_enum_inherited_custom_name_property(app, autodoc_enum_options):
19141940 fmt = _EnumFormatter ('EnumNamePropertyInClass' )
19151941 actual = do_autodoc (app , 'class' , fmt .target , options )
19161942 assert list (actual ) == [
1917- * fmt .brief ('this is enum class' ),
1943+ * fmt .preamble_constructor ('this is enum class' ),
19181944 * fmt .entry ('name' , 'docstring' , role = 'property' ),
19191945 ]
19201946
0 commit comments