str not compatible with StrOrLiteralStr
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 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
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 Formatter.parse-Überschreibung im Python-Reproducer und führe sie im verlinkten mypy playground aus, wobei du das Verhalten über die genannten Versionen hinweg vergleichst. Verfolge, wie mypy StrOrLiteralStr und den Rückgabetyp der Überschreibung behandelt; abgeschlossen ist die Aufgabe, wenn der Reproducer akzeptiert wird, ohne str fälschlicherweise abzulehnen.
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
- 38/100