Type inference in high level function
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
For fully valid code got:
error: Argument 1 to "map" has incompatible type overloaded function; expected "Callable[[Iterator[_T], int, None], Iterator[_T]].
In foo.py:
from typing import Generic, Iterable, Iterator, Sequence, TypeVar
_T = TypeVar('_T')
class Windowed(Generic[_T]):
def __init__(self, it: Iterable[_T], size: int) -> None:
self.it = it
self.size = size
def __iter__(self) -> Iterator[Sequence[_T]]:
iters = tee(self.it, self.size)
slices = map(islice, iters, count(0), repeat(None))
return zip(*slices)
However islice has overload:
def islice(iterable: Iterable[_T], start: Optional[int], stop: Optional[int],
step: Optional[int] = ...) -> Iterator[_T]: ...
Using mypy 0.750 from PyPI, on python 3.7.5. Running it via mypy foo.py
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
Reproduziere die Diagnose aus foo.py mit mypy 0.750 unter Python 3.7.5, wobei der Aufruf map(islice, iters, count(0), repeat(None)) und die im Issue gezeigte islice-Überladung im Mittelpunkt stehen. Verfolge die Typinferenz für die überladene Funktion und überprüfe, dass das gültige Beispiel keinen Fehler wegen eines inkompatiblen Arguments mehr meldet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100