ruff/crates
Vasco Schiavo ae1b381c06
Some checks are pending
CI / cargo test (linux) (push) Blocked by required conditions
CI / Determine changes (push) Waiting to run
CI / cargo fmt (push) Waiting to run
CI / cargo clippy (push) Blocked by required conditions
CI / cargo test (linux, release) (push) Blocked by required conditions
CI / cargo test (windows) (push) Blocked by required conditions
CI / cargo test (wasm) (push) Blocked by required conditions
CI / cargo build (release) (push) Waiting to run
CI / cargo build (msrv) (push) Blocked by required conditions
CI / cargo fuzz build (push) Blocked by required conditions
CI / fuzz parser (push) Blocked by required conditions
CI / test scripts (push) Blocked by required conditions
CI / ecosystem (push) Blocked by required conditions
CI / cargo shear (push) Blocked by required conditions
CI / python package (push) Waiting to run
CI / pre-commit (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / formatter instabilities and black similarity (push) Blocked by required conditions
CI / test ruff-lsp (push) Blocked by required conditions
CI / benchmarks (push) Blocked by required conditions
[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
ruff_benchmark add diagnostic Span (couples File and TextRange) (#16101) 2025-02-11 14:55:12 -05:00
ruff_cache
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
ruff_formatter
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
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
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
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
ruff_python_trivia [red-knot] Hand-written MDTest parser (#15926) 2025-02-04 14:01:53 +01:00
ruff_python_trivia_integration_tests
ruff_server Root exclusions in the server to project root (#16043) 2025-02-10 04:57:14 +00:00
ruff_source_file
ruff_text_size
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