ruff/crates
Vasco Schiavo ae1b381c06
[pylint] Correct ordering of arguments in fix for if-stmt-min-max (PLR1730) (#16080)
The PR addresses the issue #16040 .

---

The logic used into the rule is the following:

Suppose to have an expression of the form 

```python
if a cmp b:
    c = d
```
where `a`,` b`, `c` and `d` are Python obj and `cmp` one of `<`, `>`,
`<=`, `>=`.

Then:

- `if a=c and b=d`
    
    - if `<=` fix with `a = max(b, a)`
    - if `>=`  fix with `a = min(b, a)`
    - if `>` fix with `a = min(a, b)`
    - if `<` fix with `a = max(a, b)`

- `if a=d and b=c`

    - if `<=` fix with `b = min(a, b)`
    - if `>=`  fix with `b = max(a, b)`
    - if `>` fix with `b = max(b, a)`
    - if `<` fix with `b = min(b, a)`
 
- do nothing, i.e., we cannot fix this case.

---

In total we have 8 different and possible cases.

```

| Case  | Expression       | Fix           |
|-------|------------------|---------------|
| 1     | if a >= b: a = b | a = min(b, a) |
| 2     | if a <= b: a = b | a = max(b, a) |
| 3     | if a <= b: b = a | b = min(a, b) |
| 4     | if a >= b: b = a | b = max(a, b) |
| 5     | if a > b: a = b  | a = min(a, b) |
| 6     | if a < b: a = b  | a = max(a, b) |
| 7     | if a < b: b = a  | b = min(b, a) |
| 8     | if a > b: b = a  | b = max(b, a) |
```

I added them in the tests. 

Please double-check that I didn't make any mistakes. It's quite easy to
mix up > and <.

---------

Co-authored-by: Micha Reiser <micha@reiser.io>
2025-02-12 10:27:46 +01:00
..
red_knot Delete left-over `verbosity.rs (#16081) 2025-02-10 16:06:05 +00:00
red_knot_project add diagnostic Span (couples File and TextRange) (#16101) 2025-02-11 14:55:12 -05:00
red_knot_python_semantic [red-knot] Document 'public type of undeclared symbols' behavior (#16096) 2025-02-12 08:52:11 +01:00
red_knot_server add diagnostic Span (couples File and TextRange) (#16101) 2025-02-11 14:55:12 -05:00
red_knot_test add diagnostic Span (couples File and TextRange) (#16101) 2025-02-11 14:55:12 -05:00
red_knot_vendored Sync vendored typeshed stubs (#15864) 2025-02-01 01:01:58 +00:00
red_knot_wasm Add user_configuration_directory to System (#16020) 2025-02-10 15:50:55 +01:00
ruff Bump version to 0.9.6 (#16074) 2025-02-10 18:14:04 +05:30
ruff_annotate_snippets Fix docstring in ruff_annotate_snippets (#15748) 2025-01-26 22:25:29 -05:00
ruff_benchmark add diagnostic Span (couples File and TextRange) (#16101) 2025-02-11 14:55:12 -05:00
ruff_cache Fix cache key collisions for paths with separators (#12159) 2024-07-03 07:36:46 -05:00
ruff_db add diagnostic Span (couples File and TextRange) (#16101) 2025-02-11 14:55:12 -05:00
ruff_dev Add knot.toml schema (#15735) 2025-02-07 10:59:40 +01:00
ruff_diagnostics Show errors for attempted fixes only when passed --verbose (#15237) 2025-01-03 08:50:13 -06:00
ruff_formatter Upgrade Rust toolchain to 1.84.0 (#15408) 2025-01-11 09:51:58 +01:00
ruff_graph [red-knot] Resolve Options to Settings (#16000) 2025-02-10 15:28:45 +01:00
ruff_index Transition to salsa coarse-grained tracked structs (#15763) 2025-02-11 11:38:50 +01:00
ruff_linter [pylint] Correct ordering of arguments in fix for if-stmt-min-max (PLR1730) (#16080) 2025-02-12 10:27:46 +01:00
ruff_macros Add knot.toml schema (#15735) 2025-02-07 10:59:40 +01:00
ruff_notebook Update Rust crate rand to 0.9.0 (#15899) 2025-02-03 12:25:57 +01:00
ruff_python_ast Transition to salsa coarse-grained tracked structs (#15763) 2025-02-11 11:38:50 +01:00
ruff_python_ast_integration_tests Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_python_codegen Preserve triple quotes and prefixes for strings (#15818) 2025-02-04 08:41:06 -05:00
ruff_python_formatter Workaround Even Better TOML crash related to allOf (#15992) 2025-02-06 16:00:50 +01:00
ruff_python_index Extract LineIndex independent methods from Locator (#13938) 2024-10-28 07:53:41 +00:00
ruff_python_literal Preserve triple quotes and prefixes for strings (#15818) 2025-02-04 08:41:06 -05:00
ruff_python_parser Simplify the StringFlags trait (#15944) 2025-02-04 18:14:28 +00:00
ruff_python_resolver Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_python_semantic [pylint] Also report when the object isn't a literal (PLE1310) (#15985) 2025-02-10 09:31:27 +01:00
ruff_python_stdlib Revert "Add all PEP-585 names to UP006 rule" (#15250) 2025-01-04 12:23:53 +01:00
ruff_python_trivia [red-knot] Hand-written MDTest parser (#15926) 2025-02-04 14:01:53 +01:00
ruff_python_trivia_integration_tests Update insta snapshots (#14366) 2024-11-15 19:31:15 +01:00
ruff_server Root exclusions in the server to project root (#16043) 2025-02-10 04:57:14 +00:00
ruff_source_file [pyupgrade] Do not report when a UTF-8 comment is followed by a non-UTF-8 one (UP009) (#14728) 2024-12-11 10:30:41 +00:00
ruff_text_size [ruff] itertools.starmap(..., zip(...)) (RUF058) (#15483) 2025-01-16 15:18:12 +01:00
ruff_wasm Bump version to 0.9.6 (#16074) 2025-02-10 18:14:04 +05:30
ruff_workspace Root exclusions in the server to project root (#16043) 2025-02-10 04:57:14 +00:00