11import importlib
2+ import re
23from collections .abc import Sequence
34from inspect import isclass
45from types import ModuleType
56from typing import final
67
78from docutils import nodes
89from docutils .statemachine import StringList
10+ from sphinx import addnodes
911from sphinx .application import Sphinx
1012from sphinx .ext import autosummary
1113from sphinx .ext .autodoc .directive import AutodocDirective
@@ -93,15 +95,19 @@ def get_autoclass_nodes(
9395 ) -> Sequence [nodes .Node ]:
9496 """Use autodoc for build violation docstring nodes."""
9597 violation_class_nodes = []
98+ options = {
99+ 'exclude-members' : 'error_template,code' ,
100+ }
96101 for violation_class in violation_classes :
97102 local_autodoc = AutodocDirective (
98103 name = 'autoclass' ,
99104 arguments = [violation_class .__name__ ],
100- options = {} ,
105+ options = options ,
101106 content = StringList (),
102107 ** kwargs ,
103108 )
104- violation_class_nodes .extend (local_autodoc .run ())
109+ filtered_nodes = self ._filter_autoclass_nodes (local_autodoc .run ())
110+ violation_class_nodes .extend (filtered_nodes )
105111
106112 return violation_class_nodes
107113
@@ -121,6 +127,33 @@ def get_automodule_nodes(
121127
122128 return local_autodoc .run ()
123129
130+ def _filter_autoclass_nodes (
131+ self , nodes_to_filter : Sequence [nodes .Node ]
132+ ) -> Sequence [nodes .Node ]:
133+ all_nodes = (
134+ inner_node
135+ for node in nodes_to_filter
136+ for inner_node in node .traverse (nodes .Node )
137+ )
138+ for node in all_nodes :
139+ text_node = node .astext ().strip ()
140+
141+ if (
142+ isinstance (node , addnodes .desc_annotation )
143+ and text_node == 'final class'
144+ ):
145+ node .parent .remove (node )
146+
147+ if isinstance (node , addnodes .desc_parameterlist ):
148+ node .parent .remove (node )
149+
150+ if isinstance (node , nodes .paragraph ) and re .match (
151+ r'^Bases: [A-Za-z.]+$' , text_node
152+ ):
153+ node .parent .remove (node )
154+
155+ return nodes_to_filter
156+
124157
125158def setup (app : Sphinx ) -> None :
126159 """Setup for sphinx extension."""
0 commit comments