Allow specifying length of sized object
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Sometimes I want to specify the size of a container. This could be done manually with casts, but it would be really cool if Mypy could figure this out automatically. __len__() is guaranteed to return an int, and since a is defined as a literal the match could be statically inferrable. The same is true of other container types.
from typing_extensions import Protocol, Literal
class Char(Protocol):
def __len__(self) -> Literal[1]:
...
a: Char = "X"
Mypy reports
error: Incompatible types in assignment (expression has type "str", variable has type "Char")
note: Following member(s) of "str" have conflicts:
note: Expected:
note: def __len__(self) -> Literal[1]
note: Got:
note: def __len__(self) -> int
Mypy 0.720
CPython 3.7.3
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 bereitgestellte Python-3.7.3-Beispiel gegen das gemeldete Verhalten von Mypy 0.720 auszuführen und zu untersuchen, wie die Protokollkompatibilität Rückgabetypen von len und Literal-Werte behandelt. Abgeschlossen ist die Aufgabe, wenn die Zuweisung zu Char akzeptiert wird, sobald die Containergröße statisch ableitbar ist, mit entsprechendem Verhalten für andere Containertypen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 30/100