Some string `in` `Union[bytes, str]` does not produce an error
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Given the following code
from typing import Union
foo: Union[str, bytes]
"zoo" in foo # no error
"zoo" + foo # err: Unsupported operand types for + ("str" and "bytes")
I would have expected that mypy complains about str not compatible with bytes just like it does for the + operand.
I've tried the current typeshed version at 3d140160 because it just looked like there was a change here in Oct 2020 after mypy 0.790.
For example it now defines for class(str):
def __contains__(self, o: Union[str, str]) -> bool: ... # type: ignore
...
def __iter__(self) -> Iterator[str]: ...
(__contains__ does not trigger here but its Union[str, str] is weird.)
Your Environment
mypy 0.790
python 3.8
builtin typeshed and @3d140160
Win 10
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, das Beispiel Union[str, bytes] mit mypy 0.790 zu reproduzieren, und untersuche anschließend die typeshed-Definitionen für str.contains und die zugehörige Behandlung von Union. Vergleiche die Diagnosen für "zoo" in foo und "zoo" + foo; abgeschlossen ist die Aufgabe, wenn der Containment-Ausdruck den inkompatiblen str/bytes-Fall konsistent mit dem Additionsausdruck meldet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100