@@ -193,10 +193,13 @@ def _gather_members(
193193 found_members = _get_members_to_document (
194194 want_all = want_all ,
195195 get_attr = get_attr ,
196+ class_signature = config .autodoc_class_signature ,
196197 inherit_docstrings = config .autodoc_inherit_docstrings ,
197198 props = props ,
198199 opt_members = options .members or (),
199200 inherited_members = inherited_members ,
201+ opt_private_members = options .private_members ,
202+ opt_special_members = options .special_members ,
200203 ignore_module_all = bool (options .ignore_module_all ),
201204 attr_docs = attr_docs ,
202205 )
@@ -205,6 +208,7 @@ def _gather_members(
205208 want_all = want_all ,
206209 events = events ,
207210 get_attr = get_attr ,
211+ class_signature = config .autodoc_class_signature ,
208212 inherit_docstrings = config .autodoc_inherit_docstrings ,
209213 options = options ,
210214 props = props ,
@@ -277,10 +281,13 @@ def _get_members_to_document(
277281 * ,
278282 want_all : bool ,
279283 get_attr : _AttrGetter ,
284+ class_signature : Literal ['mixed' , 'separated' ],
280285 inherit_docstrings : bool ,
281286 props : _ModuleProperties | _ClassDefProperties ,
282287 opt_members : ALL_T | Sequence [str ],
283288 inherited_members : Set [str ],
289+ opt_private_members : ALL_T | Sequence [str ] | None ,
290+ opt_special_members : ALL_T | Sequence [str ] | None ,
284291 ignore_module_all : bool ,
285292 attr_docs : dict [tuple [str , str ], list [str ]],
286293) -> list [ObjectMember ]:
@@ -315,7 +322,16 @@ def _get_members_to_document(
315322 else :
316323 # specific members given
317324 assert opt_members is not ALL
318- wanted_members = frozenset (opt_members )
325+
326+ # Merge :private-members: and :special-members: into :members:
327+ combined_members = set (opt_members )
328+ if opt_private_members is not None and opt_private_members is not ALL :
329+ combined_members .update (opt_private_members )
330+ if opt_special_members is not None and opt_special_members is not ALL :
331+ combined_members .update (opt_special_members )
332+ if class_signature == 'separated' and props .obj_type in {'class' , 'exception' }:
333+ combined_members |= {'__new__' , '__init__' } # show __init__() method
334+ wanted_members = frozenset (combined_members )
319335
320336 object_members_map : dict [str , ObjectMember ] = {}
321337 if props .obj_type == 'module' :
@@ -489,6 +505,7 @@ def _filter_members(
489505 get_attr : _AttrGetter ,
490506 options : _AutoDocumenterOptions ,
491507 props : _ModuleProperties | _ClassDefProperties ,
508+ class_signature : Literal ['mixed' , 'separated' ],
492509 inherit_docstrings : bool ,
493510 inherited_members : Set [str ],
494511 exclude_members : EMPTY_T | Set [str ] | None ,
@@ -513,6 +530,7 @@ def _filter_members(
513530 member_cls = obj .class_ ,
514531 get_attr = get_attr ,
515532 has_attr_doc = has_attr_doc ,
533+ class_signature = class_signature ,
516534 inherit_docstrings = inherit_docstrings ,
517535 inherited_members = inherited_members ,
518536 parent = props ._obj ,
@@ -793,6 +811,7 @@ def _should_keep_member(
793811 member_cls : Any ,
794812 get_attr : _AttrGetter ,
795813 has_attr_doc : bool ,
814+ class_signature : Literal ['mixed' , 'separated' ],
796815 inherit_docstrings : bool ,
797816 inherited_members : Set [str ],
798817 parent : Any ,
@@ -862,12 +881,16 @@ def _should_keep_member(
862881
863882 if special_member_re .match (member_name ):
864883 # special __methods__
884+ if member_name == '__doc__' or is_filtered_inherited_member :
885+ return False
865886 if special_members and member_name in special_members :
866- if member_name == '__doc__' : # NoQA: SIM114
867- return False
868- elif is_filtered_inherited_member :
869- return False
870887 return has_doc
888+ if (
889+ class_signature == 'separated'
890+ and member_name in {'__new__' , '__init__' }
891+ and inspect .isclass (parent )
892+ ):
893+ return has_doc # show __init__() method
871894 return False
872895
873896 if is_private :
0 commit comments