Skip to content

Commit 9cd5c37

Browse files
authored
Fix a false positive for missing-param-doc (#9740)
* Fix a false positive for ``missing-param-doc`` where a method which is decorated with ``typing.overload`` was expected to have a docstring specifying its parameters. Closes #9739
1 parent a48cd4c commit 9cd5c37

File tree

4 files changed

+54
-16
lines changed

4 files changed

+54
-16
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Fix a false positive for ``missing-param-doc`` where a method which is decorated with ``typing.overload`` was expected to have a docstring specifying its parameters.
2+
3+
Closes #9739

pylint/extensions/docparams.py

+3
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,9 @@ def visit_functiondef(self, node: nodes.FunctionDef) -> None:
196196
:param node: Node for a function or method definition in the AST
197197
:type node: :class:`astroid.scoped_nodes.Function`
198198
"""
199+
if checker_utils.is_overload_stub(node):
200+
return
201+
199202
node_doc = utils.docstringify(
200203
node.doc_node, self.linter.config.default_docstring_type
201204
)

tests/functional/ext/docparams/missing_param_doc.py

+33-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
#pylint: disable=missing-module-docstring
1+
#pylint: disable=missing-module-docstring, too-few-public-methods
2+
3+
4+
from typing import overload, Union
5+
26

37
def foobar1(arg1, arg2): #[missing-any-param-doc]
48
"""function foobar ...
@@ -207,3 +211,31 @@ def foobar19(one, two, **kwargs):
207211
"""
208212
print(one, two, kwargs)
209213
return 1
214+
215+
216+
class Word:
217+
"""
218+
Methods decorated with `typing.overload` are excluded
219+
from the docparam checks. For example: `missing-param-doc` and
220+
`missing-type-doc`.
221+
"""
222+
def __init__(self, word):
223+
self.word = word
224+
225+
@overload
226+
def starts_with(self, letter: None) -> None: ...
227+
228+
@overload
229+
def starts_with(self, letter: str) -> bool: ...
230+
231+
def starts_with(self, letter: Union[str, None]) -> Union[bool, None]:
232+
"""
233+
Returns:
234+
True if `self.word` begins with `letter`
235+
236+
Args:
237+
letter: str
238+
"""
239+
if self.word:
240+
return self.word.startswith(letter)
241+
return None
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
missing-any-param-doc:3:0:3:11:foobar1:"Missing any documentation in ""foobar1""":HIGH
2-
missing-any-param-doc:8:0:8:11:foobar2:"Missing any documentation in ""foobar2""":HIGH
3-
missing-param-doc:15:0:15:11:foobar3:"""arg2"" missing in parameter documentation":HIGH
4-
missing-type-doc:15:0:15:11:foobar3:"""arg2"" missing in parameter type documentation":HIGH
5-
missing-param-doc:24:0:24:11:foobar4:"""arg2"" missing in parameter documentation":HIGH
6-
missing-type-doc:24:0:24:11:foobar4:"""arg2"" missing in parameter type documentation":HIGH
7-
missing-type-doc:33:0:33:11:foobar5:"""arg1"" missing in parameter type documentation":HIGH
8-
missing-param-doc:43:0:43:11:foobar6:"""arg3"" missing in parameter documentation":HIGH
9-
missing-type-doc:43:0:43:11:foobar6:"""arg3"" missing in parameter type documentation":HIGH
10-
missing-any-param-doc:53:0:53:11:foobar7:"Missing any documentation in ""foobar7""":HIGH
11-
missing-any-param-doc:61:0:61:11:foobar8:"Missing any documentation in ""foobar8""":HIGH
12-
missing-type-doc:76:0:76:12:foobar10:"""arg1, arg3"" missing in parameter type documentation":HIGH
13-
missing-any-param-doc:88:0:88:12:foobar11:"Missing any documentation in ""foobar11""":HIGH
14-
missing-param-doc:97:0:97:12:foobar12:"""arg3"" missing in parameter documentation":HIGH
15-
missing-type-doc:97:0:97:12:foobar12:"""arg2, arg3"" missing in parameter type documentation":HIGH
1+
missing-any-param-doc:7:0:7:11:foobar1:"Missing any documentation in ""foobar1""":HIGH
2+
missing-any-param-doc:12:0:12:11:foobar2:"Missing any documentation in ""foobar2""":HIGH
3+
missing-param-doc:19:0:19:11:foobar3:"""arg2"" missing in parameter documentation":HIGH
4+
missing-type-doc:19:0:19:11:foobar3:"""arg2"" missing in parameter type documentation":HIGH
5+
missing-param-doc:28:0:28:11:foobar4:"""arg2"" missing in parameter documentation":HIGH
6+
missing-type-doc:28:0:28:11:foobar4:"""arg2"" missing in parameter type documentation":HIGH
7+
missing-type-doc:37:0:37:11:foobar5:"""arg1"" missing in parameter type documentation":HIGH
8+
missing-param-doc:47:0:47:11:foobar6:"""arg3"" missing in parameter documentation":HIGH
9+
missing-type-doc:47:0:47:11:foobar6:"""arg3"" missing in parameter type documentation":HIGH
10+
missing-any-param-doc:57:0:57:11:foobar7:"Missing any documentation in ""foobar7""":HIGH
11+
missing-any-param-doc:65:0:65:11:foobar8:"Missing any documentation in ""foobar8""":HIGH
12+
missing-type-doc:80:0:80:12:foobar10:"""arg1, arg3"" missing in parameter type documentation":HIGH
13+
missing-any-param-doc:92:0:92:12:foobar11:"Missing any documentation in ""foobar11""":HIGH
14+
missing-param-doc:101:0:101:12:foobar12:"""arg3"" missing in parameter documentation":HIGH
15+
missing-type-doc:101:0:101:12:foobar12:"""arg2, arg3"" missing in parameter type documentation":HIGH

0 commit comments

Comments
 (0)