Assignment via `import`
Abierto
Nadie ha tomado este issue todavía.
bug
topic-type-narrowing
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
In the following example MyPy complain about local import and does not recognize it as assignment:
from typing import Callable, Optional
def f(callable: Optional[Callable[[float], float]]) -> None:
if callable is None:
from math import sqrt as callable # line 5
callable(1.5) # line 7
Output:
t3.py:5: error: Name "callable" already defined on line 3
t3.py:7: error: "None" not callable
Found 2 errors in 1 file (checked 1 source file)
It is not recognized as assignment even for global import:
from typing import Callable, Optional
callable: Optional[Callable[[float], float]] = None
if callable is None:
from math import sqrt as callable
callable(1.5) # line 7
Output:
t32.py:7: error: "None" not callable
Found 1 error in 1 file (checked 1 source file)
mypy 0.950 (compiled: yes)
Python 3.9.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
Empieza ejecutando las dos reproducciones inline de Python con mypy 0.950 y compara los errores reportados para las importaciones locales y globales. Rastrea cómo se analizan estos alias de importación y, después, añade cobertura de regresión que demuestre que callable se reconoce después de la importación condicional y que los diagnósticos erróneos han desaparecido.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- devtools
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100