From 262723aaf93798560010fceb254b07fb0899ed0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Noord?= <13665637+DanielNoord@users.noreply.github.com> Date: Tue, 6 Sep 2022 12:37:13 +0200 Subject: [PATCH] Make ``missing-yield/raises-doc`` respect ``no-docstring-rgx`` option --- doc/whatsnew/fragments/4743.bugfix | 3 ++- pylint/extensions/docparams.py | 10 ++++++++++ .../ext/docparams/raise/missing_raises_doc_required.py | 7 +++++++ .../ext/docparams/yield/missing_yield_doc_required.py | 8 ++++++++ .../ext/docparams/yield/missing_yield_doc_required.txt | 4 ++-- 5 files changed, 29 insertions(+), 3 deletions(-) diff --git a/doc/whatsnew/fragments/4743.bugfix b/doc/whatsnew/fragments/4743.bugfix index 20dbe071dd..1f8c30f1a7 100644 --- a/doc/whatsnew/fragments/4743.bugfix +++ b/doc/whatsnew/fragments/4743.bugfix @@ -1,3 +1,4 @@ -``missing-return-doc`` now respects the ``no-docstring-rgx`` option. +``missing-return-doc``, ``missing-raises-doc`` and ``missing-yields-doc`` now respect +the ``no-docstring-rgx`` option. Closes #4743 diff --git a/pylint/extensions/docparams.py b/pylint/extensions/docparams.py index 01e85b491c..19d9cf8904 100644 --- a/pylint/extensions/docparams.py +++ b/pylint/extensions/docparams.py @@ -278,6 +278,11 @@ def visit_raise(self, node: nodes.Raise) -> None: if not isinstance(func_node, astroid.FunctionDef): return + # skip functions that match the 'no-docstring-rgx' config option + no_docstring_rgx = self.linter.config.no_docstring_rgx + if no_docstring_rgx and re.match(no_docstring_rgx, func_node.name): + return + expected_excs = utils.possible_exc_types(node) if not expected_excs: @@ -355,6 +360,11 @@ def visit_yield(self, node: nodes.Yield | nodes.YieldFrom) -> None: if not isinstance(func_node, astroid.FunctionDef): return + # skip functions that match the 'no-docstring-rgx' config option + no_docstring_rgx = self.linter.config.no_docstring_rgx + if no_docstring_rgx and re.match(no_docstring_rgx, func_node.name): + return + doc = utils.docstringify( func_node.doc_node, self.linter.config.default_docstring_type ) diff --git a/tests/functional/ext/docparams/raise/missing_raises_doc_required.py b/tests/functional/ext/docparams/raise/missing_raises_doc_required.py index 860a3ecf55..96f2297a28 100644 --- a/tests/functional/ext/docparams/raise/missing_raises_doc_required.py +++ b/tests/functional/ext/docparams/raise/missing_raises_doc_required.py @@ -6,3 +6,10 @@ def test_warns_unknown_style(self): # [missing-raises-doc] """This is a docstring.""" raise RuntimeError("hi") + + +# This function doesn't require a docstring, because its name starts +# with an '_' (no-docstring-rgx): +def _function(some_arg: int): + """This is a docstring.""" + raise ValueError diff --git a/tests/functional/ext/docparams/yield/missing_yield_doc_required.py b/tests/functional/ext/docparams/yield/missing_yield_doc_required.py index e307063b36..bfaae4f03c 100644 --- a/tests/functional/ext/docparams/yield/missing_yield_doc_required.py +++ b/tests/functional/ext/docparams/yield/missing_yield_doc_required.py @@ -1,7 +1,15 @@ """Tests for missing-yield-doc and missing-yield-type-doc with accept-no-yields-doc = no""" # pylint: disable=missing-function-docstring, unused-argument, function-redefined +from typing import Iterator + # Test missing docstring def my_func(self): # [missing-yield-doc, missing-yield-type-doc] yield False + + +# This function doesn't require a docstring, because its name starts +# with an '_' (no-docstring-rgx): +def _function(some_arg: int) -> Iterator[int]: + yield some_arg diff --git a/tests/functional/ext/docparams/yield/missing_yield_doc_required.txt b/tests/functional/ext/docparams/yield/missing_yield_doc_required.txt index cf39e4031c..c7bd4b0333 100644 --- a/tests/functional/ext/docparams/yield/missing_yield_doc_required.txt +++ b/tests/functional/ext/docparams/yield/missing_yield_doc_required.txt @@ -1,2 +1,2 @@ -missing-yield-doc:6:0:6:11:my_func:Missing yield documentation:HIGH -missing-yield-type-doc:6:0:6:11:my_func:Missing yield type documentation:HIGH +missing-yield-doc:8:0:8:11:my_func:Missing yield documentation:HIGH +missing-yield-type-doc:8:0:8:11:my_func:Missing yield type documentation:HIGH