python / python/mypy

Use type context from previous definition when renaming

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

Dieses Issue hat noch niemand übernommen.

false-positive needs discussion priority-1-normal
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Maybe we code like this shouldn't generate an error when using --allow-redefinition:

x: List[int] = []
# do something with x
x = []  # Error: need annotation

The reason for the error is that the second assignment creates a completely independent variable, so the type of the original definition has no effect.

There are still some open issues:

  • Using the context can generate false positives, in case the correct type would be something different for the second definition. I don't know how often this would be an issue.
  • Propagating the type context is somewhat tricky since the name of the previous definition is not trivial to calculate. The rules for renaming depend on the scope (local/class/global).
  • If/when we support more general redefinitions (not just within a single block), it may be unclear when we should propagate context. It may be best to first to make redefinitions more general and then reconsider this issue.

Follow-up to #6197.

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 Lesen des Folge-Issues #6197 und des in diesem Issue beschriebenen Verhaltens bei Neudefinitionen. Verwende das bereitgestellte Beispiel --allow-redefinition, um zu bestimmen, wie der Typkontext über Scopes hinweg behandelt werden sollte, einschließlich der aufgeführten Fehlalarme und Bedenken hinsichtlich der Umbenennung. Als abgeschlossen gilt die Aufgabe, wenn das beabsichtigte Verhalten und der Geltungsbereich vor der Implementierung festgelegt sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
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.