overload and contextmanager doesn't work together
Offen
Dieses Issue hat noch niemand übernommen.
bug
documentation
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
contextmanager and overload doesn't seem to be compatbile together
To Reproduce
from contextlib import contextmanager
from typing import overload, ContextManager, Iterator
from uuid import UUID
@overload
def cactus() -> ContextManager[int]:
...
@overload
def cactus(_id: str) -> ContextManager[UUID]:
...
@contextmanager
def cactus(_id: str | None = None) -> Iterator[UUID] | Iterator[int]:
if not _id:
yield 1
yield UUID(_id)
Expected Behavior
Mypy should find no issue
Actual Behavior
test.py: note: In function "cactus":
test.py:16:2: error: Overloaded function implementation cannot produce return type of signature 1 [misc]
@contextmanager
^
test.py:16:2: error: Overloaded function implementation cannot produce return type of signature 2 [misc]
@contextmanager
^
Found 2 errors in 1 file (checked 1 source file)
Your Environment
- Mypy version used: 1.0.0
- Mypy command-line flags:
- Mypy configuration options from
mypy.ini(and other config files): - Python version used: 3.10.6
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 Beispiel für Python 3.10.6 mit mypy 1.0.0 zu reproduzieren, wobei der Schwerpunkt auf der Interaktion zwischen @overload und @contextmanager liegt. Verfolge den Type-Checking-Pfad für die überladene Implementierung und füge einen Regressionstest hinzu; abgeschlossen bedeutet, dass das Beispiel keine Fehler erzeugt, ohne verwandte Overload-Prüfungen zu beeinträchtigen.
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
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100