(🐞) `reveal_type` on a lambda parameter from an overloaded higher order function shows two results
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
Here the type of value is an non-inferred int, and there is only one usage of reveal_type, yet mypy is outputting two results (one of which is incorrect)
reveal_locals() shows two entries for value, but one being None not Any.
from typing import overload, Callable
@overload
def bar() -> None: ...
@overload
def bar(fn: Callable[[int], object]) -> None: ...
def bar(fn: object=1) -> None: ...
bar(lambda value: reveal_type(value))
bar(lambda value: reveal_locals())
main.py:11: note: Revealed type is "Any"
main.py:11: note: Revealed type is "builtins.int"
main.py:12: note: Revealed local types are:
main.py:12: note: value: None
main.py:12: note: value: builtins.int
Success: no issues found in 1 source file
Without removing duplicate messages you get this:
test.py:12: note: Revealed local types are:
test.py:12: note: value: None
test.py:12: note: Revealed local types are:
test.py:12: note: value: builtings.int
- Cause of #5879
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
Reproduce el ejemplo de la función de orden superior sobrecargada de main.py y la salida duplicada de reveal_locals mostrada para test.py. Empieza rastreando cómo reveal_type y reveal_locals gestionan los dos tipos de parámetros de lambda y, después, verifica que un uso produce un resultado correcto y ningún mensaje duplicado sobre los tipos locales.
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