ruff/crates
Lukasz Piatkowski 03303a9edd
Account for selector specificity when merging extend_unsafe_fixes and override extend_safe_fixes (#8444)
## Summary

Prior to this change `extend_unsafe_fixes` took precedence over
`extend_safe_fixes` selectors, so any conflicts were resolved in favour
of `extend_unsafe_fixes`. Thanks to that ruff were conservatively
assuming that if configs conlict the fix corresponding to selected rule
will be treated as unsafe.

After this change we take into account Specificity of the selectors. For
conflicts between selectors of the same Specificity we will treat the
corresponding fixes as unsafe. But if the conflicting selectors are of
different specificity the more specific one will win.

## Test Plan

Tests were added for the `FixSafetyTable` struct. The
`check_extend_unsafe_fixes_conflict_with_extend_safe_fixes_by_specificity`
integration test was added to test conflicting rules of different
specificity.

Fixes #8404

---------

Co-authored-by: Zanie <contact@zanie.dev>
2023-11-07 10:33:40 -06:00
..
flake8_to_ruff Bump version to v0.1.4 (#8477) 2023-11-03 14:52:56 -04:00
ruff_benchmark Bump codspeed-criterion-compat from 2.3.0 to 2.3.1 (#8508) 2023-11-06 14:32:40 +00:00
ruff_cache Introduce FormatterSettings (#7545) 2023-09-21 08:01:24 +02:00
ruff_cli Account for selector specificity when merging extend_unsafe_fixes and override extend_safe_fixes (#8444) 2023-11-07 10:33:40 -06:00
ruff_dev Added tabs for configuration files in the documentation (#8480) 2023-11-05 17:10:29 +00:00
ruff_diagnostics Update applicability messages for clarity in tests (#8541) 2023-11-07 16:11:43 +00:00
ruff_formatter Rust 1.73 (#8007) 2023-10-23 02:12:25 +00:00
ruff_index Add unreachable code rule (#5384) 2023-07-04 14:27:23 +00:00
ruff_linter Account for selector specificity when merging extend_unsafe_fixes and override extend_safe_fixes (#8444) 2023-11-07 10:33:40 -06:00
ruff_macros Add #[automatically_derived] to derived impls (#8080) 2023-10-20 00:12:27 +00:00
ruff_notebook Detect and ignore Jupyter automagics (#8398) 2023-11-03 01:14:10 +00:00
ruff_python_ast [TRIO] Add TRIO105: SyncTrioCall (#8490) 2023-11-05 19:56:10 +00:00
ruff_python_codegen Split Constant to individual literal nodes (#8064) 2023-10-30 12:13:23 +05:30
ruff_python_formatter Reject more syntactically invalid Python programs (#8524) 2023-11-07 07:16:06 -05:00
ruff_python_index Consider unterminated f-strings in FStringRanges (#8154) 2023-10-27 11:11:44 +00:00
ruff_python_literal Implement our own small-integer optimization (#7584) 2023-09-25 15:13:21 +00:00
ruff_python_parser Reject more syntactically invalid Python programs (#8524) 2023-11-07 07:16:06 -05:00
ruff_python_resolver Bump tempfile from 3.8.0 to 3.8.1 (#8345) 2023-10-30 09:06:48 +00:00
ruff_python_semantic Add dedicated method to find typed binding (#8517) 2023-11-06 11:25:32 -05:00
ruff_python_stdlib Improvements to RUF015 (#7848) 2023-10-08 14:49:45 +00:00
ruff_python_trivia Preserve trailing statement semicolons when using fmt: skip (#8273) 2023-10-30 00:07:14 +00:00
ruff_shrinking Bump version to v0.1.4 (#8477) 2023-11-03 14:52:56 -04:00
ruff_source_file Add cell field to JSON output format (#7664) 2023-10-13 01:06:02 +00:00
ruff_text_size Unify line size settings between ruff and the formatter (#6873) 2023-08-28 06:44:56 +00:00
ruff_wasm Bump serde-wasm-bindgen from 0.6.0 to 0.6.1 (#8507) 2023-11-06 09:19:30 -05:00
ruff_workspace Account for selector specificity when merging extend_unsafe_fixes and override extend_safe_fixes (#8444) 2023-11-07 10:33:40 -06:00