`mypy` widens multiple type parameters even when only the first one is relevant
Mantenedores costumam responder em até 1 dia
@DawnofGenX já está trabalhando nisso.
Desde 2/10/2026.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 48/100
Direção de pesquisa
Comece executando a reprodução vinculada do mypy-play e compare o tipo inferido com a expectativa de assert_type. Em seguida, rastreie a correspondência de overloads e a lógica de ampliação de parâmetros de tipo envolvidas na chamada de add, e adicione um teste de regressão mostrando que apenas o parâmetro divergente é ampliado, enquanto o parâmetro EA compartilhado é preservado.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Bug Report
When there are two type parameters to widen, mypy widens both to Any, even when the matched overloads agree on the second parameter and only actually disagree on the first.
Related to #19952
To Reproduce
https://mypy-play.net/?gist=6ab5724e788384125e85da02ae0386d3
from collections.abc import Sequence
from typing import Any, Generic, Protocol, assert_type, overload
from typing_extensions import TypeVar
S1 = TypeVar("S1")
class EA: ...
A = TypeVar("A", bound=EA, default=EA, covariant=True)
S2 = TypeVar("S2", bound=EA)
S2_contra = TypeVar("S2_contra", bound=EA, contravariant=True)
class Supports_ProtoAdd(Protocol[S2_contra, S2]):
def _proto_add(self, other: S2_contra, /) -> "Ser2[S2, EA]": ...
class Ser2(Generic[S1, A]):
def _proto_add(self, other: Any, /) -> "Ser2[Any, EA]":
raise NotImplementedError
@overload
def __add__(
self: Supports_ProtoAdd[S2_contra, S2],
other: "S2_contra | Sequence[S2_contra]",
) -> "Ser2[S2]": ...
@overload
def __add__(self: "Ser2[bool, EA]", other: Sequence[Any]) -> "Ser2[int]": ...
def __add__(self, other: Any) -> Any:
raise NotImplementedError
def f(a2: "Ser2[Any, EA]", seq: "Sequence[Any]") -> None:
assert_type(a2 + seq, "Ser2[Any, EA]")
# error: Expression is of type "Ser2[Any, Any]", not "Ser2[Any, EA]" [assert-type]
Expected Behaviour
Error free, as is the case for pyright, pyrefly and ty
Actual Behaviour
main.py:24: error: Expression is of type "Ser2[Any, Any]", not "Ser2[bool, EA]" [assert-type]
Found 1 error in 1 file (checked 1 source file)
Your Environment*
mypy 2.3.1 (playground)
- Linguagem predominante
- Python
- Estrelas
- 20.7k
- Forks
- 3.3k
- Merge médio
- 1d 15h
- PRs com merge (30d)
- 96
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de python/mypy
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
`stubgen --inspect-mode` crashes with `AttributeError on PEP 604 union syntax (X | Y)` *(mypy 2.1.0)*Talvez já em andamento @ayushdoesdev assumiu há 67 dias. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Inconsistent description of `strict_optional`Talvez já em andamento @Joosboy assumiu há 83 dias. Abertadocumentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
python/mypy#21658 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Cannot set `output` in `mypy.ini`Talvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Abertabug topic-configuration topic-error-reporting
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
python/mypy#21376 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug topic-attrs
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
python/mypy#20818 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de python/mypy
Issues semelhantes
-
area: desktop area: website priority: P2 type: feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
appandflow/stim#3411 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 Menos de uma hora Facilidade para iniciantes 88/100
baptistehamon/lsapy#185 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
PolicyEngine/policyengine-us#10073 ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
syedhamidali/radarx#277 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Arekkazu/sgpmp-backend#549 ·
Mantenedores costumam responder em até 1 dia