Getting 'Untyped decorator makes function "*" untyped' when using decorator inside a function
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Sorry for the long title! I found a small issue when using disallow-untyped-decorators and while having a decorated function inside another function, here's the reproduction:
from typing import Callable
def mydeco(f: Callable) -> Callable:
return f
# Failing case
def something():
class Query:
@mydeco
def search(self, input: str) -> str:
return input
reveal_type(Query.search)
# Failing case
def something():
@mydeco
def example() -> str:
return "str"
reveal_type(example)
# Ok case
class Query:
@mydeco
def search(self, input: str) -> str:
return input
reveal_type(Query.search)
# Ok case
@mydeco
def example() -> str:
return "str"
reveal_type(example)
I guess this is not a big deal since we don't normall define functions inside functions, but I got this issue while writing some tests and it'd be nice to get it fixed 😊
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 verknüpften Reproduktion in mypy-play und vergleiche die Behandlung von Dekoratoren für Funktionen, die auf Modulebene definiert sind, mit der für Funktionen, die innerhalb einer anderen Funktion oder Klasse definiert sind. Verfolge den Typprüfpfad für verschachtelte dekorierte Definitionen; abgeschlossen ist die Aufgabe, wenn die Reproduktion keinen untypisierten Dekorator mehr meldet und die Ergebnisse von reveal_type weiterhin angemessen typisiert sind.
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