Unpacking unions of tuples skips type checking
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Bug Report
mypy applies type checks when passing an unpacked tuple to a function, but it seems to skip the checks when passing a variable that is a union of tuple types.
To Reproduce
def inner(_name: str, _num: int) -> None:
...
# mypy passes as expected
def fun1(name_and_num: tuple[str, int]) -> None:
inner(*name_and_num)
# mypy errors as expected
def fun2(name_and_num: tuple[str, float]) -> None:
inner(*name_and_num)
# mypy passes *but should error*
def fun3(name_and_num: tuple[str, int] | tuple[str, float]) -> None:
inner(*name_and_num)
https://gist.github.com/mypy-play/257f0a56dd44b405b2853e2854333cc2
Expected Behavior
arg-type error on line 14
Actual Behavior
No error on line 14
Your Environment
- Mypy version used: 1.5.1
- Python version used: 3.11.5
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 comportamiento con el ejemplo proporcionado de fun1, fun2 y fun3 en Python 3.11.5 usando mypy 1.5.1. Rastrea la ruta de comprobación de tipos de la unión de tuplas desempaquetada y verifica que la llamada en fun3 informe del error arg-type esperado en la línea 14.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 45/100