forked from VimPlug/jedi
typing.Union and typing.Optional
This commit is contained in:
@@ -110,6 +110,13 @@ def get_types_for_typing_module(evaluator, typ, node):
|
||||
nodes = node.children[::2] # skip the commas
|
||||
else:
|
||||
nodes = [node]
|
||||
del node
|
||||
|
||||
# hacked in Union and Optional, since it's hard to do nicely in parsed code
|
||||
if typ.name.value == "Union":
|
||||
return set().union(*[evaluator.eval_element(node) for node in nodes])
|
||||
if typ.name.value == "Optional":
|
||||
return evaluator.eval_element(nodes[0])
|
||||
|
||||
typing = _get_typing_replacement_module()
|
||||
factories = evaluator.find_types(typing, "factory")
|
||||
|
||||
@@ -154,5 +154,32 @@ def mapping(
|
||||
##? Value() --- TODO fix support for tuple assignment
|
||||
value
|
||||
|
||||
def union(
|
||||
p: typing.Union[int],
|
||||
q: typing.Union[int, int],
|
||||
r: typing.Union[int, str, "int"],
|
||||
s: typing.Union[int, typing.Union[str, "typing.Union['float', 'dict']"]],
|
||||
t: typing.Union[int, None]):
|
||||
#? int()
|
||||
p
|
||||
#? int()
|
||||
q
|
||||
#? int() str()
|
||||
r
|
||||
#? int() str() float() dict()
|
||||
s
|
||||
#? int()
|
||||
t
|
||||
|
||||
def optional(
|
||||
p: typing.Optional[int]):
|
||||
"""
|
||||
Optional does not do anything special. However it should be recognised
|
||||
as being of that type. Jedi doesn't do anything with the extra into that
|
||||
it can be None as well
|
||||
"""
|
||||
#? int()
|
||||
p
|
||||
|
||||
class ForwardReference:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user