python / python/mypy

Extend `redundant-expr` to type narrowing assertions

Offen
#13,766 2 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

feature
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Feature

Assert statements can be used to guide the type checker but are not checked for redundancy like casts.

Pitch

Consider this simple example, with the --enable-error-code=redundant-expr flag:

def f(x: int) -> None:
    assert x is not None           # no issue
    assert x is not None and True  # error: Left operand of "and" is always true

I think it would be useful to have mypy emit a warning for the first line.

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

Keine Datei oder kein Test wird genannt. Beginne damit, die bestehende Behandlung redundanter Ausdrücke für Casts und den Pfad zur Typverengung durch assert zu finden, und sieh dir anschließend die relevanten Tests an. Die Aufgabe ist erledigt, wenn redundante Assertions wie assert x is not None unter --enable-error-code=redundant-expr gemeldet werden, ohne das gültige Verhalten der Typverengung zu ändern.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

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