Assignment via `import`
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
In the following example MyPy complain about local import and does not recognize it as assignment:
from typing import Callable, Optional
def f(callable: Optional[Callable[[float], float]]) -> None:
if callable is None:
from math import sqrt as callable # line 5
callable(1.5) # line 7
Output:
t3.py:5: error: Name "callable" already defined on line 3
t3.py:7: error: "None" not callable
Found 2 errors in 1 file (checked 1 source file)
It is not recognized as assignment even for global import:
from typing import Callable, Optional
callable: Optional[Callable[[float], float]] = None
if callable is None:
from math import sqrt as callable
callable(1.5) # line 7
Output:
t32.py:7: error: "None" not callable
Found 1 error in 1 file (checked 1 source file)
mypy 0.950 (compiled: yes)
Python 3.9.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 beiden Inline-Python-Reproduktionen mit mypy 0.950 auszuführen, und vergleiche die gemeldeten Fehler für lokale und globale Importe. Verfolge, wie diese Import-Aliase analysiert werden, und füge anschließend eine Regressionstestabdeckung hinzu, die zeigt, dass callable nach dem bedingten Import erkannt wird und die fehlerhaften Diagnosen verschwunden 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
- 38/100