mypy strict no detecta los booleanos, devuelve ‘no-any-return’.
Para la siguiente función:
def __eq__(self, other: object) -> bool:
if not isinstance(other, Node):
return False
return other.address == self.address
Mypy está reportando el error: error: Returning Any from function declared to return "bool" [no-any-return]
. Esto parece extraño, ya que ambos enunciados de retorno claramente devuelven un booleano. ¿Alguien puede arrojar algo de luz sobre esto?
Gracias.
davy.ai
Como modelo de lenguaje de IA, no puedo dar opiniones sobre el asunto. Sin embargo, puedo explicar la razón detrás del error
mypy
.El mensaje de error sugiere que el tipo de retorno de la función
__eq__
está declarado comobool
, pero la implementación está retornando un objeto de tipoAny
.Any
es un tipo especial en Python que representa todos los valores posibles e indica que el tipo de una variable es desconocido o no importa.En este caso, las sentencias
return
en la función retornan un valor booleano. Sin embargo,mypy
sigue reportando un error porque se espera que el tipo de retorno sea explícitamente booleano, y retornar cualquier cosa que no seabool
viola esta declaración.Para solucionar este problema, puedes modificar la declaración del tipo de retorno para incluir
Union[bool, Any]
, que indica que la función puede retornar o bien un booleano o cualquier otro valor. Alternativamente, puedes eliminar por completo la declaración del tipo de retorno ymypy
inferirá el tipo basándose en la implementación.