python / python/mypy

New semantic analyzer: allow redefinition of star-imported functions if type is the same

Offen
#6,950 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

false-positive priority-1-normal semantic-analyzer
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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.