When accessing a functools.cached_property through the class, mypy incorrectly treats it as a Callable.
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
When accessing a functools.cached_property through the class, mypy incorrectly treats it as a Callable.
To Reproduce
from functools import cached_property
class A:
@cached_property
def value(self) -> int:
return 1
@classmethod
def name(cls) -> str:
return cls.value.attrname
Expected Behavior
mypy should know that A.value is a cached_property, not a function.
Actual Behavior
error: "Callable[[A], int]" has no attribute "attrname" [attr-defined]
Environment
- Mypy version used: 2.3.0
- Python version used: 3.12
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, die cached_property-Reproduktion des Issues mit mypy 2.3.0 auszuführen und nachzuverfolgen, wie der Klassenzugriff auf functools.cached_property inferiert wird. Die Korrektur ist vollständig, wenn A.value als cached_property statt als Callable erkannt wird, sodass der Zugriff auf attrname ohne Fehler möglich ist; füge einen Regressionstest für dieses Beispiel hinzu, falls der Testort identifiziert wurde.
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
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 68/100