Unclear when Join is picked vs Union in upcast operation.
Abierto
Nadie ha tomado este issue todavía.
bug
topic-join-v-union
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
I noticed some rather erratic behavior when sometimes it picks union and other times the join.
from typing import Iterable
class A: ...
class B: ...
class C: ...
def upcast[T](arg: Iterable[T]) -> Iterable[T]: return arg
def test_builtin(x: tuple[int, str, None]) -> None:
reveal_type(upcast(x)) # Iterable[str | int | None]
def test_custom(x: tuple[A, B, C]) -> None:
reveal_type(upcast(x)) # Iterable[object]
def test_mixed1(x: tuple[A, str, None]) -> None:
reveal_type(upcast(x)) # Iterable[str | A | None]
def test_mixed2(x: tuple[int, str, C]) -> None:
reveal_type(upcast(x)) # Iterable[object]
https://mypy-play.net/?mypy=latest&python=3.12&gist=833674a36174c4140a89645b609da8a9
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 los cuatro ejemplos de la configuración de mypy-play enlazada, comenzando por las llamadas de upcast y sus resultados de reveal_type. Sigue la ruta de inferencia de tipos que elige una unión o un object join; después, define el comportamiento coherente previsto y verifícalo con estos ejemplos.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- tooling
- 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