From ed47f89162b369742de348f620af26eb1466137c Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sun, 27 Sep 2026 11:41:13 +0200 Subject: [PATCH] Fix docstrings for param completions, fixes #2063, fixes #2109 --- jedi/api/classes.py | 2 +- test/test_api/test_completion.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/jedi/api/classes.py b/jedi/api/classes.py index 747fc02a..6c3500ef 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -551,7 +551,7 @@ class BaseName: return ''.join(lines[start_index:index + after + 1]) def _get_signatures(self, for_docstring=False): - if self._name.api_type == 'property': + if self._name.api_type in ('property', 'param'): return [] if for_docstring and self._name.api_type == 'statement' and not self.is_stub(): # For docstrings we don't resolve signatures if they are simple diff --git a/test/test_api/test_completion.py b/test/test_api/test_completion.py index e3f661ca..207d624d 100644 --- a/test/test_api/test_completion.py +++ b/test/test_api/test_completion.py @@ -462,3 +462,21 @@ def test_module_completions(Script, module): def test_whitespace_at_end_after_dot(Script): assert 'strip' in [c.name for c in Script('str. ').complete()] + + +def test_param_docstring_in_completion(Script): + # From Github #2063 + code = '''\ + from typing import Optional + + def func(arg: Optional[int]): + pass + + func(arg''' + script = Script(code=code) + completions = script.complete( + line=len(code.splitlines()), + column=len(code.splitlines()[-1]) + ) + c, = completions + assert c.docstring() == ''