str not compatible with StrOrLiteralStr
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 doesn't accept str for StrOrLiteralStr
To Reproduce
from string import Formatter
from typing import Iterable, Tuple
class MyFormatter(Formatter):
def parse(self, s: str) -> Iterable[Tuple[str, str, str, str]]:
for text, field, spec, conversion in super().parse(s):
yield "a", "b", "c", "d"
Actual Behavior
error: Return type "Iterable[tuple[str, str, str, str]]" of "parse" incompatible with return type "Iterable[tuple[StrOrLiteralStr, StrOrLiteralStr | None, StrOrLiteralStr | None, StrOrLiteralStr | None]]" in supertype "Formatter" [override]
Details
I've asked a question on SO about this and didn't get an answer (yet). As indicated in the comments:
this code passes type checking in mypy 0.971, and fails in mypy 0.981 through 1.5.0
Perhaps it's related to mypy lack of support for LiteralStr #12554
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 con l'override di Formatter.parse nel reproducer Python ed eseguilo nel mypy playground collegato, confrontando il comportamento tra le versioni menzionate. Traccia il modo in cui mypy gestisce StrOrLiteralStr e il tipo restituito dall'override; il lavoro è completato quando il reproducer viene accettato senza rifiutare erroneamente str.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 38/100