Various class based NamedTuple and TypedDict errors not caught
Abierto
Nadie ha tomado este issue todavía.
bug
priority-1-normal
topic-named-tuple
topic-typed-dict
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
This example has a bunch of errors that the semantic analyzer should probably report (and one what seems like a false positive):
from typing import NamedTuple, TypeVar, Generic
from typing_extensions import Protocol
from mypy_extensions import TypedDict
@xyz # No error
class N1(NamedTuple):
x: int
@xyz # No error
class T1(TypedDict):
x: int
class N2(NamedTuple, Protocol): # No error
x: int
class T2(TypedDict, Protocol): # No error
x: int
class M(type):
def f(cls) -> None: pass
class N3(NamedTuple, metaclass=M): # No error
x: int
N3.f() # Error
class T3(TypedDict, metaclass=M): # No error
x: int
T = TypeVar('T')
class N4(NamedTuple, Generic[T]): # No error
x: int
class T4(TypedDict, Generic[T]): # No error
x: int
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza reproduciendo el ejemplo de Python y siguiendo el procesamiento que realiza el analizador semántico de las definiciones de NamedTuple y TypedDict basadas en clases. Compara los diagnósticos para decoradores, bases de Protocol y metaclases, y combinaciones de Generic con lo esperado en el issue, incluido el falso positivo reportado. Se considera terminado cuando se informan los errores que faltan y se corrige el falso positivo.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers, devtools
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100