Using package multipledispatch, mypy gives error name already defined
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 reports errors when using package multipledispatch for overloading functions.
To Reproduce
from multipledispatch import dispatch
@dispatch(list, str)
def concatenate(a: list, b: str):
a.append(b)
return a
@dispatch(str, str)
def concatenate(a: str, b: str):
return a + b
@dispatch(str, int)
def concatenate(a: str, b: int):
return a + str(b)
@dispatch(int, str)
def concatenate(a: int, b: str):
return str(a) + b
print(concatenate(["a", "b"], "c"))
# ['a', 'b', 'c']
print(concatenate("Hello", "World"))
# HelloWorld
print(concatenate("a", 1))
# a1
print(concatenate(2, "b"))
# 2b
Expected Behavior
No errors
Actual Behavior
mypy multi.py
multi.py:10: error: Name "concatenate" already defined on line 4
multi.py:15: error: Name "concatenate" already defined on line 4
multi.py:20: error: Name "concatenate" already defined on line 4
(Write what happened.)
Your Environment
- Mypy version used: 0.910
- Python version used: 3.8.6
- Operating system and version: macOS 11.5.2
- Installed packages:
flake8==3.9.2
mccabe==0.6.1
multipledispatch==0.6.0
mypy==0.910
mypy-extensions==0.4.3
pycodestyle==2.7.0
pyflakes==2.3.1
six==1.16.0
toml==0.10.2
typing-extensions==3.10.0.2
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
Führe zunächst das gemeldete Beispiel mypy multi.py mit den gezeigten multipledispatch-Definitionen aus und bestätige die Diagnosen zu den wiederholten Namen. Verfolge den Pfad der Namensprüfung für diese wiederholten Funktionsdefinitionen und vergleiche ihn mit der bestehenden Behandlung von Overloads; als erledigt gilt die Aufgabe, wenn das Beispiel ohne diese Fehler eine Typprüfung besteht, während gewöhnliche doppelte Definitionen weiterhin diagnostiziert werden.
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