Warn about comparing iterables for equality?
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Generally iter(x) == iter(x) is false, so comparing iterators and iterables for equality could often be a bug (or at least pointless). Maybe mypy should warn (at least optionally) about equality comparisons like these that have a high potential to be errors. Here is a list of things that seem suspect:
- Comparing anything ==
Iterator. - Comparing anything ==
Iterable(sinceIteratorisIterable). - Comparing
dict.values()for equality (sinced.values() != d.values()).
Mypy could recommend using the is operator instead.
I'm not sure if this is worth having. There may be some valid uses of comparing iterables using == instead of is, and it's not clear if this actually is a source of problems for programmers. A small experiment with some large codebase could help answer these questions.
I got this idea from a recent thread at python-dev.
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 der Prüfung der vorgeschlagenen Fälle: Gleichheitsvergleiche mit Iterator- oder Iterable-Typen und dict.values(). Der Issue schlägt ein kleines Experiment an einer großen Codebasis vor, um zu messen, ob diese Vergleiche häufige Probleme verursachen; nutze diese Ergebnisse, um den Umfang der Warnung festzulegen und zu bestimmen, ob eine Empfehlung für is angemessen ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100