ruff/crates/ruff_python_semantic/src
Tom Kuson 511cc25fc4
[refurb] Implement unnecessary-enumerate (FURB148) (#7454)
## Summary

Implement
[`no-ignored-enumerate-items`](https://github.com/dosisod/refurb/blob/master/refurb/checks/builtin/no_ignored_enumerate.py)
as `unnecessary-enumerate` (`FURB148`).

The auto-fix considers if a `start` argument is passed to the
`enumerate()` function. If only the index is used, then the suggested
fix is to pass the `start` value to the `range()` function. So,

```python
for i, _ in enumerate(xs, 1):
    ...
```

becomes

```python
for i in range(1, len(xs)):
    ...
```

If the index is ignored and only the value is ignored, and if a start
value greater than zero is passed to `enumerate()`, the rule doesn't
produce a suggestion. I couldn't find a unanimously accepted best way to
iterate over a collection whilst skipping the first n elements. The rule
still triggers, however.

Related to #1348.

## Test Plan

`cargo test`

---------

Co-authored-by: Dhruv Manilawala <dhruvmanila@gmail.com>
Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
2023-09-19 20:19:28 +00:00
..
analyze Avoid flagging starred expressions in UP007 (#7505) 2023-09-19 03:37:38 +00:00
binding.rs [refurb] Implement repeated-append rule (FURB113) (#6702) 2023-08-28 22:51:59 +00:00
branches.rs Add branch detection to the semantic model (#6694) 2023-08-19 21:28:17 +00:00
context.rs Remove separate ReferenceContext enum (#4631) 2023-05-24 15:12:38 +00:00
definition.rs [refurb] Implement repeated-append rule (FURB113) (#6702) 2023-08-28 22:51:59 +00:00
globals.rs Move Ranged into ruff_text_size (#6919) 2023-08-27 14:12:51 -04:00
lib.rs Use a single node hierarchy to track statements and expressions (#6709) 2023-08-21 21:32:57 -04:00
model.rs [refurb] Implement unnecessary-enumerate (FURB148) (#7454) 2023-09-19 20:19:28 +00:00
nodes.rs Move Ranged into ruff_text_size (#6919) 2023-08-27 14:12:51 -04:00
reference.rs Move Ranged into ruff_text_size (#6919) 2023-08-27 14:12:51 -04:00
scope.rs Remove async AST node variants for with, for, and def (#6369) 2023-08-07 16:36:02 +00:00
star_import.rs Move StarImport to its own module (#5186) 2023-06-20 13:12:46 -04:00