Pytype does not recognize properly Sequence and Iterable collection when their size is larger than 63.
Frang84 opened this issue · comments
Frang84 commented
from typing import List, TypedDict, Sequence, Iterable, Callable
class T(TypedDict):
a: str
sequence63: Iterable[T] = [
{'a': 'bocian'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
]
"""
sequence64: Iterable[T] = [
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
]"""
OUTPUT:
Type annotation for sequence64 does not match type of assignment [annotation-type-mismatch]
Annotation: Iterable[T]
Assignment: List[Dict[str, str]]
TypedDict missing keys: a
from typing import List, TypedDict, Sequence, Iterable, Callable
class T(TypedDict):
a: str
sequence63: Sequence[T] = [
{'a': 'bocian'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
]
"""
sequence64: Sequence[T] = [
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
{'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'}, {'a': 'a'},
]"""
OUTPUT:
Type annotation for sequence64 does not match type of assignment [annotation-type-mismatch]
Annotation: Sequence[T]
Assignment: List[Dict[str, str]]
TypedDict missing keys: a
Rebecca Chen commented
I suspect this is happening because of the MAX_VAR_SIZE cutoff here:
pytype/pytype/constant_folding.py
Line 41 in c9573ba
For now, you can just disable the error; pytype will still apply the type annotation despite it.