Allow Redefinitions of For Loop Iteration Variables
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug Report
MyPy has a flag --allow-redefinition to enable variable redefinition in limited circumstances. This doesn't seem to work with variables bound in a for loop iteration.
To Reproduce
for i in range(3):
i: str = str(i)
reveal_type(i)
def test(i: int):
i: str = str(i)
reveal_type(i)
Expected Behavior
Both cases are allowed.
Actual Behavior
MyPy throws an error only for line 2.
main.py:2: error: Name "i" already defined on line 1 [no-redef]
main.py:3: note: Revealed type is "builtins.int"
main.py:7: note: Revealed type is "builtins.str"
Found 1 error in 1 file (checked 1 source file)
Your Environment
MyPy Version v1.5.1
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 verlinkte mypy-play-Reproduktion mit MyPy 1.5.1, dem Beispiel für Python 3.11 und --allow-redefinition auszuführen. Verfolge, wie die for-Schleifenvariable und der Funktionsparameter behandelt werden, und füge anschließend Tests hinzu, die zeigen, dass beide Neudefinitionen akzeptiert werden und die aufgedeckten Typen mit der erwarteten Ausgabe übereinstimmen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100