Improve message if user forgot to call a function
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Forgetting to call a method, i.e. missing (), is a somewhat common programming error. Mypy will typically catch this error, but often error messages includes something like "Callable[...]" has no attribute "foo". Since the callable type may be pretty complicated, this can look confusing.
Here are a few ideas that could make this better:
- Only say
Callable object has no attribute "foo"(omit the full callable type). - Add a note such as
Did you mean ".foo()" (with parentheses)?(needs wordsmithing). - In addition to (1), show the signature of the function in a separate note pretty-printed using function definition syntax such as
def foo() -> List[X].
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
Keine Datei und kein Test werden genannt. Beginne damit, mypy's Diagnosepfad für ein Callable-Objekt zu ermitteln, für das gemeldet wird, dass ihm ein Attribut fehlt, und vergleiche anschließend die vorgeschlagenen Optionen für die Formulierung und den Signaturhinweis. Die Aufgabe ist erledigt, wenn der verwirrende Callable-Typ klarer dargestellt wird und die Regressionsabdeckung die Anleitung zu den fehlenden Klammern verifiziert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100