Warn about certain sequences of chained comparisons
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia con l'esempio TensorFlow collegato in tensorflow/python/eager/function.py e rivedi la semantica dei confronti concatenati di Python. Confronta le restrizioni proposte per le coppie di operatori con i controlli esistenti di pyflakes, quindi definisci il comportamento degli avvisi e la copertura necessaria per i confronti concatenati intenzionali e le espressioni equivalenti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I was pointed to this buggy line:
if x is None != y is None:
(For context, Python allows chaining any of the comparison operators ==, !=, is, is not, >, >=, <, <=, in, not in. a OP b OP c is equivalent to a OP b and b OP c except that b is only evaluated once.)
I find it hard to imagine a use case for combining is and != in the same chained comparison, so it would be useful for linters to warn about this and similar patterns.
In my company's internal linter, I implemented a check that disallows all chained comparison pairs except == + ==, is + is, </<= + </<=, and >/>= + >/>=.
It found one false positive where someone had intentionally written == + !=, but I'd argue it's clearer with and:
- value.fullName == existing.fullName != "*"
+ (value.fullName == existing.fullName and value.fullName != "*")
Would pyflakes be interested in a similar check?
- Lingua principale
- Python
- Stelle
- 1.5k
- Fork
- 205
- Merge medio
- 1g 2h
- PR unite (30g)
- 5
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di PyCQA/pyflakes
-
F542 is not a crimeAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 52/100
-
Use of await in a function that is not async should be shown as a syntax error by flake8Forse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di PyCQA/pyflakes
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
micropython/micropython#19906 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
FinanceFlash/unvibecode#597 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
TomAnthony/YourOwnWeigh#21 ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG]: Compliance rules never see Unity Catalog views as viewsForse già presa @wagnercsantos l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
databrickslabs/ontos#1348 ·
I maintainer di solito rispondono entro 3 giorni
-
Deprecated datetime.utcnow() is called on every log line (DeprecationWarning on Python 3.12+)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni