`comparison-overlap` triggers for string enum members when the member name isn't the same as the comparison value
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report, To Reproduce, and Actual Behaviour
If the enum member's name to compare isn't equal to the comparing value, a false positive comparison-overlap is triggered. See mypy Playground:
from enum import Enum
class A(str, Enum): # Same behaviour if `class A(enum.StrEnum)`
a = "b"
A.a == "a" # OK
A.a == "b" # E: Non-overlapping equality check (left operand type: "Literal[A.a]", right operand type: "Literal['b']") [comparison-overlap]
Expected Behavior
No errors
Your Environment
- Mypy version used: 1.17, master
- Python version used: 3.12
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit der verknüpften mypy Playground-Reproduktion unter Verwendung von Python 3.12, strikter Gleichheit und des String-Enums, dessen Membername sich von seinem Wert unterscheidet. Verfolge die Analyse der Vergleichsüberschneidung für Enum-Literale und füge anschließend einen Regressionstest hinzu oder aktualisiere ihn, sodass beide Vergleiche keine Fehler erzeugen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100