Mypy allows to compare NewTypes created from Decimal
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
Mypy does not produce an error when comparing NewTypes based on Decimal.
To Reproduce
from decimal import Decimal
from typing import NewType
# Comparing Decimal NewTypes is OK
FirstDecimal = NewType("FirstDecimal", Decimal)
SecondDecimal = NewType("SecondDecimal", Decimal)
FirstDecimal(Decimal("0.1")) == SecondDecimal(Decimal("0.1")) # ! mypy ok
# But comparing other NewTypes is not
FirstInt = NewType("FirstInt", int)
SecondInt = NewType("SecondInt", int)
FirstInt(1) == SecondInt(3) # mypy error
FirstString = NewType("FirstString", str)
SecondString = NewType("SecondString", str)
FirstString("bam") == SecondString("boo") # mypy error
Expected Behavior
Mypy produces Non-overlapping equality check for all three comparisons.
Actual Behavior
Mypy produces Non-overlapping equality check only for int and str NewTypes.
Your Environment
- Mypy version used: 1.1.1
- Mypy command-line flags:
--strict - Mypy configuration options from
mypy.ini(and other config files):
[tool.mypy]
strict = true
show_error_context = true
show_error_codes = true
- Python version used:
3.10.8
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 damit, die minimale Python-Reproduktion mit mypy 1.1.1 und --strict auszuführen, und vergleiche dabei die auf Decimal basierenden NewTypes mit den Fällen int und str. Verfolge den Typprüfungsweg für Gleichheitsprüfungen ohne Überschneidungen; das Issue ist abgeschlossen, wenn äquivalente NewTypes konsistent die erwartete Diagnose erzeugen und die Regressionstests alle drei Vergleiche bestätigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools, tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100