generic type assertion is incompatible with generic sorted key
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par reproduire l’exemple avec mypy 0.800 et examinez la signature surchargée de sorted dans le fichier builtins.pyi de typeshed lié. C’est terminé lorsque la lambda key accepte une entrée str | None, que unwrap(x) est inféré comme str et que l’erreur d’attribut upper disparaît.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Bug Report
I have a function that removes the nullability of a value, so it takes T | None and returns T. This function doesn't seem to work in functions that have overloaded generic function args, like sorted.
If I create my own sorted function without an overload, this issue doesn't occur.
def my_sorted(__iterable: Iterable[_T], *, key: Callable[[_T], SupportsLessThan], reverse: bool = ...) -> List[_T]: ...
To Reproduce
from __future__ import annotations
from typing import TypeVar
T = TypeVar("T")
def unwrap(val: T | None) -> T:
assert val is not None
return val
x: list[str | None]
sorted(x, key=lambda x: unwrap(x).upper())
# <nothing> has no attribute "upper" [attr-defined]
Expected Behavior
unwrap(x) should return str.
Actual Behavior
unwrap(x) returns <nothing>.
Your Environment
- Mypy version used: 0.800
- Langage dominant
- Python
- Étoiles
- 20.6k
- Forks
- 3.3k
- Merge moyen
- 1 j 18 h
- PR mergées (30 j)
- 54
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de python/mypy
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
bug topic-configuration topic-error-reporting
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Toutes les issues de python/mypy
Issues similaires
-
area/auth bug comp/agent P3 platform/discord type/security
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
NousResearch/hermes-agent#117848 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
bancolombia/sentinel#23 ·
-
test md OuverteCI
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100