Mypy cannot guess callable return type (`Tuple[Type[T], ...] -> T`)
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
It looks like mypy cannot detect some types like following type.
To Reproduce
Playground: https://mypy-play.net/?mypy=latest&python=3.12&gist=f83671bbbc02711ac90962ae786b418b
from typing import Union, Type, Tuple, TypeVar
T = TypeVar("T")
def some_types(type_: Union[Type[T], Tuple[Type[T], ...]]) -> T:
...
def int_str_float_fn(a: int | str | float) -> None:
...
a = some_types((int, str, float))
int_str_float_fn(a) # should't be an error
I got an error like
main.py:14: error: Argument 1 to "int_str_float_fn" has incompatible type "object"; expected "int | str | float" [arg-type]
Expected Behavior
No error here.
I think VSCode has a quite good guess here.
Mypy seems guessing a is object.
Actual Behavior
Your Environment
- Mypy version used: latest
- Mypy command-line flags: in playground
- Mypy configuration options from
mypy.ini(and other config files): in playground - Python version used: 3.12
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 ejecutando la reproducción enlazada de mypy-play e inspecciona cómo mypy infiere el tipo de retorno de some_types cuando se le pasa una tupla heterogénea de clases. Sigue la ruta de inferencia de Callable y TypeVar y después añade o actualiza una prueba de regresión para este ejemplo; estará terminado cuando el valor inferido se acepte como int | str | float sin producir un error de tipo de argumento.
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
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 38/100