and expression with bool() does not work with Optionals
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
For the following code, mypy reports an incompatible type error on the function f
from typing import Optional
def f(x:Optional[str]) -> bool:
return bool(x) and g(x)
def f2(x:Optional[str]) -> bool:
if x:
return g(x)
return False
def g(x: str) -> bool:
return bool(x)
test.py:4: error: Argument 1 to "g" has incompatible type "Optional[str]"; expected "str"
however the code is equivalent to the one in f2, for which no error is raised.
-
What are the versions of mypy and Python you are using?
Mypy: 0.620, Python: 3.6.5 -
What are the mypy flags you are using? (For example --strict-optional)
[mypy]
# This flag should be removed here and enabled per module when we have a
# considerable number of stubs for external libraries.
ignore_missing_imports = True
strict_optional = True
warn_unused_ignores = True
warn_redundant_casts = True
warn_unused_configs = True
check_untyped_defs = True
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 el reproductor mínimo indicado con strict_optional habilitado y compara los diagnósticos de f y f2. Rastrea cómo mypy procesa las expresiones bool(x) y g(x), así como el estrechamiento de Optional[str]. Se considera terminado cuando la función f equivalente se acepta sin el error incompatible-type, mientras que el comportamiento existente de f2 sigue siendo válido.
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
- Bien especificado
- Aptitud para principiantes
- 42/100