typeguard does not check elements (except for the first element) in a list
yifengshao opened this issue · comments
Things to check first
-
I have searched the existing issues and didn't find my bug already reported there
-
I have checked that my bug is still present in the latest release
Typeguard version
4.2.1
Python version
3.11.0rc1
What happened?
typeguard does not check elements of a list except for the first element. Please see my example here:
-
The first element is checked properly.
check_type(['123', 123], list[int, int])
Output:
typeguard.TypeCheckError: item 0 of list is not an instance of int
-
The second element was not checked.
check_type([123, '123'], list[int, int])
Output:
[123, '123']
-
Also not working for list with flexible length:
check_type([123, '123'], list[int, ...])
Output:
[123, '123']
How can we reproduce the bug?
Run the following codes in the console:
from typeguard import check_type
check_type(['123', 123], list[int, int])
check_type([123, '123'], list[int, int])
check_type([123, '123'], list[int, ...])
Thank you for your quick response. I just upgraded from typeguard 2.13.1 to 4.*, and apparently, I missed this important information. Now it works perfectly. Thanks!
If you can suggest a place in the documentation where you yourself would've found the relevant information before creating the issue, let me know and I can add it there.
Regarding that "list length check", list
only takes one type parameter. tuple
is the one that takes multiple parameters.