Mypy allows to compare NewTypes created from Decimal
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia eseguendo la riproduzione minima in Python con mypy 1.1.1 e --strict, confrontando i NewTypes basati su Decimal con i casi int e str. Traccia il percorso del controllo dei tipi per i controlli di uguaglianza senza sovrapposizioni; l’issue è completata quando NewTypes equivalenti producono coerentemente la diagnostica prevista e la copertura di regressione conferma tutti e tre i confronti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools, tooling
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100