1- from typing import Dict , Iterable , List , Optional , Set
1+ from typing import Dict , Iterable , List , Optional , Set , Union
22
33from mypy .types import SyntheticTypeVisitor
44import mypy .types as types
@@ -22,9 +22,10 @@ def __init__(self) -> None:
2222 self .cache = {} # type: Dict[types.Type, Set[str]]
2323
2424 def find_modules (self , typs : Iterable [types .Type ]) -> Set [str ]:
25- return self ._visit (* typs )
25+ return self ._visit (typs )
2626
27- def _visit (self , * typs : types .Type ) -> Set [str ]:
27+ def _visit (self , typ_or_typs : Union [types .Type , Iterable [types .Type ]]) -> Set [str ]:
28+ typs = [typ_or_typs ] if isinstance (typ_or_typs , types .Type ) else typ_or_typs
2829 output = set () # type: Set[str]
2930 for typ in typs :
3031 if typ in self .cache :
@@ -36,10 +37,10 @@ def _visit(self, *typs: types.Type) -> Set[str]:
3637 return output
3738
3839 def visit_unbound_type (self , t : types .UnboundType ) -> Set [str ]:
39- return self ._visit (* t .args )
40+ return self ._visit (t .args )
4041
4142 def visit_type_list (self , t : types .TypeList ) -> Set [str ]:
42- return self ._visit (* t .items )
43+ return self ._visit (t .items )
4344
4445 def visit_callable_argument (self , t : types .CallableArgument ) -> Set [str ]:
4546 return self ._visit (t .typ )
@@ -60,10 +61,10 @@ def visit_deleted_type(self, t: types.DeletedType) -> Set[str]:
6061 return set ()
6162
6263 def visit_type_var (self , t : types .TypeVarType ) -> Set [str ]:
63- return self ._visit (* t .values ) | self ._visit (t .upper_bound )
64+ return self ._visit (t .values ) | self ._visit (t .upper_bound )
6465
6566 def visit_instance (self , t : types .Instance ) -> Set [str ]:
66- out = self ._visit (* t .args )
67+ out = self ._visit (t .args )
6768 if t .type :
6869 # Uses of a class depend on everything in the MRO,
6970 # as changes to classes in the MRO can add types to methods,
@@ -75,25 +76,25 @@ def visit_instance(self, t: types.Instance) -> Set[str]:
7576 return out
7677
7778 def visit_callable_type (self , t : types .CallableType ) -> Set [str ]:
78- out = self ._visit (* t .arg_types ) | self ._visit (t .ret_type )
79+ out = self ._visit (t .arg_types ) | self ._visit (t .ret_type )
7980 if t .definition is not None :
8081 out .update (extract_module_names (t .definition .fullname ()))
8182 return out
8283
8384 def visit_overloaded (self , t : types .Overloaded ) -> Set [str ]:
84- return self ._visit (* t .items ()) | self ._visit (t .fallback )
85+ return self ._visit (t .items ()) | self ._visit (t .fallback )
8586
8687 def visit_tuple_type (self , t : types .TupleType ) -> Set [str ]:
87- return self ._visit (* t .items ) | self ._visit (t .fallback )
88+ return self ._visit (t .items ) | self ._visit (t .fallback )
8889
8990 def visit_typeddict_type (self , t : types .TypedDictType ) -> Set [str ]:
90- return self ._visit (* t .items .values ()) | self ._visit (t .fallback )
91+ return self ._visit (t .items .values ()) | self ._visit (t .fallback )
9192
9293 def visit_star_type (self , t : types .StarType ) -> Set [str ]:
9394 return set ()
9495
9596 def visit_union_type (self , t : types .UnionType ) -> Set [str ]:
96- return self ._visit (* t .items )
97+ return self ._visit (t .items )
9798
9899 def visit_partial_type (self , t : types .PartialType ) -> Set [str ]:
99100 return set ()
0 commit comments