@@ -30,12 +30,18 @@ def check(value: Any, type: Type[ExpectedType], strict: bool = False, lists_are_
3030 elif origin_type is list and strict :
3131 if not isinstance (value , list ):
3232 return False
33- return all (check (subvalue , get_args (type )[0 ], strict = strict , lists_are_tuples = lists_are_tuples ) for subvalue in value )
33+ arguments = get_args (type )
34+ if not arguments :
35+ return True
36+ return all (check (subvalue , arguments [0 ], strict = strict , lists_are_tuples = lists_are_tuples ) for subvalue in value )
3437
3538 elif origin_type is dict and strict :
3639 if not isinstance (value , dict ):
3740 return False
38- return all (check (key , get_args (type )[0 ], strict = strict , lists_are_tuples = lists_are_tuples ) and check (subvalue , get_args (type )[1 ], strict = strict , lists_are_tuples = lists_are_tuples ) for key , subvalue in value .items ())
41+ arguments = get_args (type )
42+ if not arguments :
43+ return True
44+ return all (check (key , arguments [0 ], strict = strict , lists_are_tuples = lists_are_tuples ) and check (subvalue , arguments [1 ], strict = strict , lists_are_tuples = lists_are_tuples ) for key , subvalue in value .items ())
3945
4046 elif origin_type is tuple and strict :
4147 types_to_check : List [Union [Type [list ], Type [tuple ]]] = [tuple ] if not lists_are_tuples else [tuple , list ]
@@ -48,7 +54,7 @@ def check(value: Any, type: Type[ExpectedType], strict: bool = False, lists_are_
4854 return True
4955
5056 if len (arguments ) == 2 and arguments [1 ] is Ellipsis :
51- return all (check (subvalue , get_args ( type ) [0 ], strict = strict , lists_are_tuples = lists_are_tuples ) for subvalue in value )
57+ return all (check (subvalue , arguments [0 ], strict = strict , lists_are_tuples = lists_are_tuples ) for subvalue in value )
5258
5359 if len (arguments ) != len (value ):
5460 return False
0 commit comments