Strict equality not working between string and uuid
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 5.1k
- Forks
- 2.1k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 82
Description
Bug Report
--strict-equality seems to only work in very reduced cases. In particular, it is not working when comparing strings and uuids.
To Reproduce
import uuid
from typing import TYPE_CHECKING, reveal_type
a = uuid.uuid4()
b = str(a)
if TYPE_CHECKING:
reveal_type(a)
reveal_type(b)
print(a == b)
c = "c"
d = 500
print(c == d)
Expected Behavior
The comparison in line 10 should raise a comparison overlap error. Something like
test_strict_equality.py:10: error: Non-overlapping equality check (left operand type: "str", right operand type: "uuid.UUID") [comparison-overlap]
Actual Behavior
Mypy does not flag the string/UUID comparison as incompatible
test_strict_equality.py:8: note: Revealed type is "uuid.UUID"
test_strict_equality.py:9: note: Revealed type is "builtins.str"
test_strict_equality.py:14: error: Non-overlapping equality check (left operand type: "str", right operand type: "int") [comparison-overlap]
Found 1 error in 1 file (checked 1 source file)
Your Environment
- Mypy version used: 1.15.0
- Mypy command-line flags:
--strict-equality --show-error-codes - Mypy configuration options from
mypy.ini(and other config files): - Python version used: 3.12.9
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.
Piste de recherche
Commencez par exécuter le reproducteur Python fourni avec mypy 1.15.0, Python 3.12.9, --strict-equality et --show-error-codes. Examinez pourquoi la comparaison d’égalité string/uuid.UUID n’est pas signalée alors que string/int l’est, puis ajoutez ou mettez à jour la couverture pour ce cas. C’est terminé lorsque la comparaison UUID produit une erreur de comparison-overlap sans modifier le comportement existant de string/int.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- tooling
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100