python / python/mypy

Wrong 'incompatible return value type' when using TypeVar with constraints

Abierto
#12,989 3 comentarios 3 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug topic-type-variables
Lenguaje dominante
Python
Estrellas
20.6k
Forks
3.3k
Merge medio
1 d 18 h
PR fusionados (30 d)
54

Descripción

Bug Report

Mypy throws an error where everything should be alright.

To Reproduce

from typing import TypeVar

class Hello:
    pass

class World:
    pass

HelloWorld = TypeVar("HelloWorld", Hello, World)

def fn(x: HelloWorld) -> HelloWorld:
    if isinstance(x, Hello):
        return Hello()
    if isinstance(x, World):
        return World()

Expected Behavior

No issues found.

Actual Behavior

Got error in line "return Hello()":

error: Incompatible return value type (got "Hello", expected "World")

Your Environment

  • Mypy version used: 0.961
  • Mypy command-line flags: none
  • Mypy configuration options from mypy.ini (and other config files):
[mypy]
plugins = numpy.typing.mypy_plugin
show_absolute_path = True

[mypy-numpy]
ignore_errors = True

[mypy-numpy.*]
ignore_errors = True
  • Python version used: 3.9.12
  • Operating system and version: Ubuntu 22.04

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza ejecutando mypy sobre la reproducción de TypeVar proporcionada y confirma el error informado en el retorno de Hello(). Sigue el recorrido de comprobación de tipos para TypeVars restringidos y el estrechamiento mediante isinstance; se considera terminado cuando el ejemplo no produce problemas, tal como se describe en Expected Behavior.

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
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.