@@ -163,20 +163,17 @@ def visit_callable_type(self, left: CallableType) -> bool:
163
163
def visit_tuple_type (self , left : TupleType ) -> bool :
164
164
right = self .right
165
165
if isinstance (right , Instance ):
166
- if is_named_instance (right , 'builtins.object ' ):
166
+ if is_named_instance (right , 'typing.Sized ' ):
167
167
return True
168
- if is_named_instance (right , 'builtins.tuple' ):
169
- target_item_type = right .args [0 ]
170
- return all (is_subtype (item , target_item_type )
171
- for item in left .items )
172
- elif is_named_instance (right , 'typing.Sized' ):
173
- return True
174
- elif (is_named_instance (right , 'typing.Iterable' ) or
168
+ elif (is_named_instance (right , 'builtins.tuple' ) or
169
+ is_named_instance (right , 'typing.Iterable' ) or
175
170
is_named_instance (right , 'typing.Container' ) or
176
171
is_named_instance (right , 'typing.Sequence' ) or
177
172
is_named_instance (right , 'typing.Reversible' )):
178
173
iter_type = right .args [0 ]
179
174
return all (is_subtype (li , iter_type ) for li in left .items )
175
+ elif is_subtype (left .fallback , right , self .check_type_parameter ):
176
+ return True
180
177
return False
181
178
elif isinstance (right , TupleType ):
182
179
if len (left .items ) != len (right .items ):
0 commit comments