From 91206f4c6572d8fe3152b436b83cc5f07a35994b Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Mon, 12 Oct 2026 23:03:31 +0200 Subject: [PATCH] Allow typing.overload and typing_extensions.overload, fixes #1840, fixes #2117 --- jedi/inference/value/function.py | 4 ++++ test/completion/pep0484_overload.py | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/jedi/inference/value/function.py b/jedi/inference/value/function.py index 12f23106..40e90199 100644 --- a/jedi/inference/value/function.py +++ b/jedi/inference/value/function.py @@ -435,6 +435,10 @@ def _find_overload_functions(context, tree_node): if dotted_name.type == 'name' and dotted_name.value == 'overload': # TODO check with values if it's the right overload return True + if dotted_name.type == 'atom_expr': + trailer = dotted_name.children[-1] + if trailer.children[0] == "." and trailer.children[1].value == "overload": + return True return False if tree_node.type == 'lambdef': diff --git a/test/completion/pep0484_overload.py b/test/completion/pep0484_overload.py index 16812136..45edeb5c 100644 --- a/test/completion/pep0484_overload.py +++ b/test/completion/pep0484_overload.py @@ -86,3 +86,28 @@ def broken_f1(value: Tuple[T]) -> Tuple[T]: ... tup: Tuple[float] #? float() broken_f1(broken_f1(tup))[0] + +# ------------------------- +# Typing Extensions +# ------------------------- + +import typing_extensions +import typing + +@typing_extensions.overload +def extensions(x: int) -> int: ... +@typing_extensions.overload +def extensions(x: str) -> str: ... +#? int() +extensions(1) +#? str() +extensions("") + +@typing.overload +def typing_direct(x: int) -> int: ... +@typing.overload +def typing_direct(x: str) -> str: ... +#? int() +typing_direct(1) +#? str() +typing_direct("")