New semantic analyzer: allow redefinition of star-imported functions if type is the same
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Consider this test case:
[case testReExportOtherSameType]
from low_level import *
def func(arg: str) -> int:
...
[file low_level.py]
def func(arg: str) -> int:
...
It is currently allowed by old analyzer (likely by accident), but prohibited by the new one. Old analyzer still prohibits this if the function is imported by name instead of star import. Although behavior of the new analyzer is more consistent, it may be sometimes useful to allow the redefinition (for example when star import re-exports hundred functions).
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 mit dem Testfall testReExportOtherSameType und seinen beiden Dateien, die einen Sternimport aus low_level.py gefolgt von einer Definition mit derselben Signatur zeigen. Lies die Behandlung von per Sternimport importierten Funktionen durch den neuen semantischen Analyzer und vergleiche sie mit dem alten Analyzer. Als erledigt gilt, dass das beabsichtigte Verhalten bei der Neudefinition desselben Typs durch einen erfolgreichen Test abgedeckt ist, ohne das separate Verhalten bei benannten Imports zu ändern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100