Skip to content

Commit c98d8a0

Browse files
charliermarshMichaReiser
authored andcommitted
[pyflakes] Stabilize detection of is comparisons to lists, etc. (F632) (#12049)
## Summary See: #8607. Rare but uncontroversial.
1 parent 6f2e024 commit c98d8a0

File tree

4 files changed

+384
-497
lines changed

4 files changed

+384
-497
lines changed

crates/ruff_linter/src/rules/pycodestyle/mod.rs

-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ mod tests {
6868
Ok(())
6969
}
7070

71-
#[test_case(Rule::IsLiteral, Path::new("constant_literals.py"))]
7271
#[test_case(Rule::RedundantBackslash, Path::new("E502.py"))]
7372
#[test_case(Rule::TooManyNewlinesAtEndOfFile, Path::new("W391_0.py"))]
7473
#[test_case(Rule::TooManyNewlinesAtEndOfFile, Path::new("W391_1.py"))]

crates/ruff_linter/src/rules/pycodestyle/snapshots/ruff_linter__rules__pycodestyle__tests__constant_literals.snap

+372
Original file line numberDiff line numberDiff line change
@@ -187,3 +187,375 @@ constant_literals.py:16:4: E712 [*] Avoid equality comparisons to `False`; use `
187187
17 17 | pass
188188
18 18 |
189189
19 19 | named_var = []
190+
191+
constant_literals.py:20:4: F632 [*] Use `==` to compare constant literals
192+
|
193+
19 | named_var = []
194+
20 | if [] is []: # F632 (fix)
195+
| ^^^^^^^^ F632
196+
21 | pass
197+
22 | if named_var is []: # F632 (fix)
198+
|
199+
= help: Replace `is` with `==`
200+
201+
Safe fix
202+
17 17 | pass
203+
18 18 |
204+
19 19 | named_var = []
205+
20 |-if [] is []: # F632 (fix)
206+
20 |+if [] == []: # F632 (fix)
207+
21 21 | pass
208+
22 22 | if named_var is []: # F632 (fix)
209+
23 23 | pass
210+
211+
constant_literals.py:22:4: F632 [*] Use `==` to compare constant literals
212+
|
213+
20 | if [] is []: # F632 (fix)
214+
21 | pass
215+
22 | if named_var is []: # F632 (fix)
216+
| ^^^^^^^^^^^^^^^ F632
217+
23 | pass
218+
24 | if [] is named_var: # F632 (fix)
219+
|
220+
= help: Replace `is` with `==`
221+
222+
Safe fix
223+
19 19 | named_var = []
224+
20 20 | if [] is []: # F632 (fix)
225+
21 21 | pass
226+
22 |-if named_var is []: # F632 (fix)
227+
22 |+if named_var == []: # F632 (fix)
228+
23 23 | pass
229+
24 24 | if [] is named_var: # F632 (fix)
230+
25 25 | pass
231+
232+
constant_literals.py:24:4: F632 [*] Use `==` to compare constant literals
233+
|
234+
22 | if named_var is []: # F632 (fix)
235+
23 | pass
236+
24 | if [] is named_var: # F632 (fix)
237+
| ^^^^^^^^^^^^^^^ F632
238+
25 | pass
239+
26 | if named_var is [1]: # F632 (fix)
240+
|
241+
= help: Replace `is` with `==`
242+
243+
Safe fix
244+
21 21 | pass
245+
22 22 | if named_var is []: # F632 (fix)
246+
23 23 | pass
247+
24 |-if [] is named_var: # F632 (fix)
248+
24 |+if [] == named_var: # F632 (fix)
249+
25 25 | pass
250+
26 26 | if named_var is [1]: # F632 (fix)
251+
27 27 | pass
252+
253+
constant_literals.py:26:4: F632 [*] Use `==` to compare constant literals
254+
|
255+
24 | if [] is named_var: # F632 (fix)
256+
25 | pass
257+
26 | if named_var is [1]: # F632 (fix)
258+
| ^^^^^^^^^^^^^^^^ F632
259+
27 | pass
260+
28 | if [1] is named_var: # F632 (fix)
261+
|
262+
= help: Replace `is` with `==`
263+
264+
Safe fix
265+
23 23 | pass
266+
24 24 | if [] is named_var: # F632 (fix)
267+
25 25 | pass
268+
26 |-if named_var is [1]: # F632 (fix)
269+
26 |+if named_var == [1]: # F632 (fix)
270+
27 27 | pass
271+
28 28 | if [1] is named_var: # F632 (fix)
272+
29 29 | pass
273+
274+
constant_literals.py:28:4: F632 [*] Use `==` to compare constant literals
275+
|
276+
26 | if named_var is [1]: # F632 (fix)
277+
27 | pass
278+
28 | if [1] is named_var: # F632 (fix)
279+
| ^^^^^^^^^^^^^^^^ F632
280+
29 | pass
281+
30 | if named_var is [i for i in [1]]: # F632 (fix)
282+
|
283+
= help: Replace `is` with `==`
284+
285+
Safe fix
286+
25 25 | pass
287+
26 26 | if named_var is [1]: # F632 (fix)
288+
27 27 | pass
289+
28 |-if [1] is named_var: # F632 (fix)
290+
28 |+if [1] == named_var: # F632 (fix)
291+
29 29 | pass
292+
30 30 | if named_var is [i for i in [1]]: # F632 (fix)
293+
31 31 | pass
294+
295+
constant_literals.py:30:4: F632 [*] Use `==` to compare constant literals
296+
|
297+
28 | if [1] is named_var: # F632 (fix)
298+
29 | pass
299+
30 | if named_var is [i for i in [1]]: # F632 (fix)
300+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ F632
301+
31 | pass
302+
|
303+
= help: Replace `is` with `==`
304+
305+
Safe fix
306+
27 27 | pass
307+
28 28 | if [1] is named_var: # F632 (fix)
308+
29 29 | pass
309+
30 |-if named_var is [i for i in [1]]: # F632 (fix)
310+
30 |+if named_var == [i for i in [1]]: # F632 (fix)
311+
31 31 | pass
312+
32 32 |
313+
33 33 | named_var = {}
314+
315+
constant_literals.py:34:4: F632 [*] Use `==` to compare constant literals
316+
|
317+
33 | named_var = {}
318+
34 | if {} is {}: # F632 (fix)
319+
| ^^^^^^^^ F632
320+
35 | pass
321+
36 | if named_var is {}: # F632 (fix)
322+
|
323+
= help: Replace `is` with `==`
324+
325+
Safe fix
326+
31 31 | pass
327+
32 32 |
328+
33 33 | named_var = {}
329+
34 |-if {} is {}: # F632 (fix)
330+
34 |+if {} == {}: # F632 (fix)
331+
35 35 | pass
332+
36 36 | if named_var is {}: # F632 (fix)
333+
37 37 | pass
334+
335+
constant_literals.py:36:4: F632 [*] Use `==` to compare constant literals
336+
|
337+
34 | if {} is {}: # F632 (fix)
338+
35 | pass
339+
36 | if named_var is {}: # F632 (fix)
340+
| ^^^^^^^^^^^^^^^ F632
341+
37 | pass
342+
38 | if {} is named_var: # F632 (fix)
343+
|
344+
= help: Replace `is` with `==`
345+
346+
Safe fix
347+
33 33 | named_var = {}
348+
34 34 | if {} is {}: # F632 (fix)
349+
35 35 | pass
350+
36 |-if named_var is {}: # F632 (fix)
351+
36 |+if named_var == {}: # F632 (fix)
352+
37 37 | pass
353+
38 38 | if {} is named_var: # F632 (fix)
354+
39 39 | pass
355+
356+
constant_literals.py:38:4: F632 [*] Use `==` to compare constant literals
357+
|
358+
36 | if named_var is {}: # F632 (fix)
359+
37 | pass
360+
38 | if {} is named_var: # F632 (fix)
361+
| ^^^^^^^^^^^^^^^ F632
362+
39 | pass
363+
40 | if named_var is {1}: # F632 (fix)
364+
|
365+
= help: Replace `is` with `==`
366+
367+
Safe fix
368+
35 35 | pass
369+
36 36 | if named_var is {}: # F632 (fix)
370+
37 37 | pass
371+
38 |-if {} is named_var: # F632 (fix)
372+
38 |+if {} == named_var: # F632 (fix)
373+
39 39 | pass
374+
40 40 | if named_var is {1}: # F632 (fix)
375+
41 41 | pass
376+
377+
constant_literals.py:40:4: F632 [*] Use `==` to compare constant literals
378+
|
379+
38 | if {} is named_var: # F632 (fix)
380+
39 | pass
381+
40 | if named_var is {1}: # F632 (fix)
382+
| ^^^^^^^^^^^^^^^^ F632
383+
41 | pass
384+
42 | if {1} is named_var: # F632 (fix)
385+
|
386+
= help: Replace `is` with `==`
387+
388+
Safe fix
389+
37 37 | pass
390+
38 38 | if {} is named_var: # F632 (fix)
391+
39 39 | pass
392+
40 |-if named_var is {1}: # F632 (fix)
393+
40 |+if named_var == {1}: # F632 (fix)
394+
41 41 | pass
395+
42 42 | if {1} is named_var: # F632 (fix)
396+
43 43 | pass
397+
398+
constant_literals.py:42:4: F632 [*] Use `==` to compare constant literals
399+
|
400+
40 | if named_var is {1}: # F632 (fix)
401+
41 | pass
402+
42 | if {1} is named_var: # F632 (fix)
403+
| ^^^^^^^^^^^^^^^^ F632
404+
43 | pass
405+
44 | if named_var is {i for i in [1]}: # F632 (fix)
406+
|
407+
= help: Replace `is` with `==`
408+
409+
Safe fix
410+
39 39 | pass
411+
40 40 | if named_var is {1}: # F632 (fix)
412+
41 41 | pass
413+
42 |-if {1} is named_var: # F632 (fix)
414+
42 |+if {1} == named_var: # F632 (fix)
415+
43 43 | pass
416+
44 44 | if named_var is {i for i in [1]}: # F632 (fix)
417+
45 45 | pass
418+
419+
constant_literals.py:44:4: F632 [*] Use `==` to compare constant literals
420+
|
421+
42 | if {1} is named_var: # F632 (fix)
422+
43 | pass
423+
44 | if named_var is {i for i in [1]}: # F632 (fix)
424+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ F632
425+
45 | pass
426+
|
427+
= help: Replace `is` with `==`
428+
429+
Safe fix
430+
41 41 | pass
431+
42 42 | if {1} is named_var: # F632 (fix)
432+
43 43 | pass
433+
44 |-if named_var is {i for i in [1]}: # F632 (fix)
434+
44 |+if named_var == {i for i in [1]}: # F632 (fix)
435+
45 45 | pass
436+
46 46 |
437+
47 47 | named_var = {1: 1}
438+
439+
constant_literals.py:48:4: F632 [*] Use `==` to compare constant literals
440+
|
441+
47 | named_var = {1: 1}
442+
48 | if {1: 1} is {1: 1}: # F632 (fix)
443+
| ^^^^^^^^^^^^^^^^ F632
444+
49 | pass
445+
50 | if named_var is {1: 1}: # F632 (fix)
446+
|
447+
= help: Replace `is` with `==`
448+
449+
Safe fix
450+
45 45 | pass
451+
46 46 |
452+
47 47 | named_var = {1: 1}
453+
48 |-if {1: 1} is {1: 1}: # F632 (fix)
454+
48 |+if {1: 1} == {1: 1}: # F632 (fix)
455+
49 49 | pass
456+
50 50 | if named_var is {1: 1}: # F632 (fix)
457+
51 51 | pass
458+
459+
constant_literals.py:50:4: F632 [*] Use `==` to compare constant literals
460+
|
461+
48 | if {1: 1} is {1: 1}: # F632 (fix)
462+
49 | pass
463+
50 | if named_var is {1: 1}: # F632 (fix)
464+
| ^^^^^^^^^^^^^^^^^^^ F632
465+
51 | pass
466+
52 | if {1: 1} is named_var: # F632 (fix)
467+
|
468+
= help: Replace `is` with `==`
469+
470+
Safe fix
471+
47 47 | named_var = {1: 1}
472+
48 48 | if {1: 1} is {1: 1}: # F632 (fix)
473+
49 49 | pass
474+
50 |-if named_var is {1: 1}: # F632 (fix)
475+
50 |+if named_var == {1: 1}: # F632 (fix)
476+
51 51 | pass
477+
52 52 | if {1: 1} is named_var: # F632 (fix)
478+
53 53 | pass
479+
480+
constant_literals.py:52:4: F632 [*] Use `==` to compare constant literals
481+
|
482+
50 | if named_var is {1: 1}: # F632 (fix)
483+
51 | pass
484+
52 | if {1: 1} is named_var: # F632 (fix)
485+
| ^^^^^^^^^^^^^^^^^^^ F632
486+
53 | pass
487+
54 | if named_var is {1: 1}: # F632 (fix)
488+
|
489+
= help: Replace `is` with `==`
490+
491+
Safe fix
492+
49 49 | pass
493+
50 50 | if named_var is {1: 1}: # F632 (fix)
494+
51 51 | pass
495+
52 |-if {1: 1} is named_var: # F632 (fix)
496+
52 |+if {1: 1} == named_var: # F632 (fix)
497+
53 53 | pass
498+
54 54 | if named_var is {1: 1}: # F632 (fix)
499+
55 55 | pass
500+
501+
constant_literals.py:54:4: F632 [*] Use `==` to compare constant literals
502+
|
503+
52 | if {1: 1} is named_var: # F632 (fix)
504+
53 | pass
505+
54 | if named_var is {1: 1}: # F632 (fix)
506+
| ^^^^^^^^^^^^^^^^^^^ F632
507+
55 | pass
508+
56 | if {1: 1} is named_var: # F632 (fix)
509+
|
510+
= help: Replace `is` with `==`
511+
512+
Safe fix
513+
51 51 | pass
514+
52 52 | if {1: 1} is named_var: # F632 (fix)
515+
53 53 | pass
516+
54 |-if named_var is {1: 1}: # F632 (fix)
517+
54 |+if named_var == {1: 1}: # F632 (fix)
518+
55 55 | pass
519+
56 56 | if {1: 1} is named_var: # F632 (fix)
520+
57 57 | pass
521+
522+
constant_literals.py:56:4: F632 [*] Use `==` to compare constant literals
523+
|
524+
54 | if named_var is {1: 1}: # F632 (fix)
525+
55 | pass
526+
56 | if {1: 1} is named_var: # F632 (fix)
527+
| ^^^^^^^^^^^^^^^^^^^ F632
528+
57 | pass
529+
58 | if named_var is {i: 1 for i in [1]}: # F632 (fix)
530+
|
531+
= help: Replace `is` with `==`
532+
533+
Safe fix
534+
53 53 | pass
535+
54 54 | if named_var is {1: 1}: # F632 (fix)
536+
55 55 | pass
537+
56 |-if {1: 1} is named_var: # F632 (fix)
538+
56 |+if {1: 1} == named_var: # F632 (fix)
539+
57 57 | pass
540+
58 58 | if named_var is {i: 1 for i in [1]}: # F632 (fix)
541+
59 59 | pass
542+
543+
constant_literals.py:58:4: F632 [*] Use `==` to compare constant literals
544+
|
545+
56 | if {1: 1} is named_var: # F632 (fix)
546+
57 | pass
547+
58 | if named_var is {i: 1 for i in [1]}: # F632 (fix)
548+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ F632
549+
59 | pass
550+
|
551+
= help: Replace `is` with `==`
552+
553+
Safe fix
554+
55 55 | pass
555+
56 56 | if {1: 1} is named_var: # F632 (fix)
556+
57 57 | pass
557+
58 |-if named_var is {i: 1 for i in [1]}: # F632 (fix)
558+
58 |+if named_var == {i: 1 for i in [1]}: # F632 (fix)
559+
59 59 | pass
560+
60 60 |
561+
61 61 | ###

0 commit comments

Comments
 (0)