google / pytype

A static type analyzer for Python code

Home Page:https://google.github.io/pytype

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pytype does not recognize properly Sequence and Iterable collection when their size is larger than 63.

Frang84 opened this issue · comments

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

I suspect this is happening because of the MAX_VAR_SIZE cutoff here:

MAX_VAR_SIZE = 64
.
For now, you can just disable the error; pytype will still apply the type annotation despite it.