diff --git a/jedi/inference/gradual/typing.py b/jedi/inference/gradual/typing.py index 188d3270..4466cbf4 100644 --- a/jedi/inference/gradual/typing.py +++ b/jedi/inference/gradual/typing.py @@ -32,7 +32,7 @@ _TYPE_ALIAS_TYPES = { 'DefaultDict': 'collections.defaultdict', 'Deque': 'collections.deque', } -_PROXY_TYPES = 'Optional Union ClassVar'.split() +_PROXY_TYPES = 'Optional Union ClassVar Annotated'.split() class TypingModuleName(NameWrapper): @@ -113,7 +113,7 @@ class ProxyWithGenerics(BaseTypingClassWithGenerics): elif string_name == 'Type': # The type is actually already given in the index_value return self._generics_manager[0] - elif string_name == 'ClassVar': + elif string_name in ['ClassVar', 'Annotated']: # For now don't do anything here, ClassVars are always used. return self._generics_manager[0].execute_annotation() diff --git a/test/completion/pep0593_annotations.py b/test/completion/pep0593_annotations.py new file mode 100644 index 00000000..8da12928 --- /dev/null +++ b/test/completion/pep0593_annotations.py @@ -0,0 +1,26 @@ +# python >= 3.9 + +from typing import Annotated + +# This is just a dummy and very meaningless thing to use with to the Annotated +# type hint +class Foo: + pass + +class A: + pass + + +def annotated_function_params( + basic: Annotated[str, Foo()], + obj: A, + annotated_obj: Annotated[A, Foo()], +): + #? str() + basic + + #? A() + obj + + #? A() + annotated_obj