From 07a75422af3c2fd950fc9928abb0f0293d2f1c6e Mon Sep 17 00:00:00 2001 From: Dominic Davis-Foster Date: Fri, 9 Oct 2020 21:15:19 +0100 Subject: [PATCH] Treat namedtuple methods as inherited members. --- sphinx_toolbox/more_autodoc/autonamedtuple.py | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/sphinx_toolbox/more_autodoc/autonamedtuple.py b/sphinx_toolbox/more_autodoc/autonamedtuple.py index a3d2544f..400d69b5 100644 --- a/sphinx_toolbox/more_autodoc/autonamedtuple.py +++ b/sphinx_toolbox/more_autodoc/autonamedtuple.py @@ -236,21 +236,19 @@ def filter_members( class_hints = {k: all_hints[k] for k in self.object._fields if k in all_hints} new_hints = get_type_hints(self.object.__new__) - if class_hints and new_hints and class_hints != new_hints: - #: __new__ has a different signature or different annotations - - def unskip_new(app, what, name, obj, skip, options): - if name == "__new__": + def unskip_autotuple_members(app, what, name, obj, skip, options): + if class_hints and new_hints and class_hints != new_hints and name == "__new__": + #: __new__ has a different signature or different annotations + return False + elif self.options.get("inherited_members", False): + if name in {"_make", "_replace", "_asdict"}: return False - return None - - listener_id = self.env.app.connect("autodoc-skip-member", unskip_new) - members_ = super().filter_members(members, want_all) - self.env.app.disconnect(listener_id) - return members_ + return None - else: - return super().filter_members(members, want_all) + listener_id = self.env.app.connect("autodoc-skip-member", unskip_autotuple_members) + members_ = super().filter_members(members, want_all) + self.env.app.disconnect(listener_id) + return members_ def sort_members( self, @@ -366,3 +364,7 @@ def setup(app: Sphinx) -> SphinxExtMetadata: "version": __version__, "parallel_read_safe": True, } + + +# stdlib +from collections import namedtuple