From 3a2e6926d43316d552661b2ab571a3c28f796ecc Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Sat, 12 Nov 2022 16:46:12 -0500 Subject: [PATCH] Include flake8-bugbear settings in flake8-to-ruff (#712) --- flake8_to_ruff/src/converter.rs | 14 +++++++++++++- flake8_to_ruff/src/plugin.rs | 4 ++++ src/lib.rs | 2 +- src/settings/options.rs | 3 ++- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/flake8_to_ruff/src/converter.rs b/flake8_to_ruff/src/converter.rs index ff55adc02f..829f2139b3 100644 --- a/flake8_to_ruff/src/converter.rs +++ b/flake8_to_ruff/src/converter.rs @@ -5,7 +5,7 @@ use ruff::checks_gen::CheckCodePrefix; use ruff::flake8_quotes::settings::Quote; use ruff::settings::options::Options; use ruff::settings::pyproject::Pyproject; -use ruff::{flake8_annotations, flake8_quotes, pep8_naming}; +use ruff::{flake8_annotations, flake8_bugbear, flake8_quotes, pep8_naming}; use crate::plugin::Plugin; use crate::{parser, plugin}; @@ -69,6 +69,7 @@ pub fn convert( // Parse each supported option. let mut options: Options = Default::default(); let mut flake8_annotations: flake8_annotations::settings::Options = Default::default(); + let mut flake8_bugbear: flake8_bugbear::settings::Options = Default::default(); let mut flake8_quotes: flake8_quotes::settings::Options = Default::default(); let mut pep8_naming: pep8_naming::settings::Options = Default::default(); for (key, value) in flake8 { @@ -109,6 +110,11 @@ pub fn convert( Err(e) => eprintln!("Unable to parse '{key}' property: {e}"), } } + // flake8-bugbear + "extend-immutable-calls" | "extend_immutable_calls" => { + flake8_bugbear.extend_immutable_calls = + Some(parser::parse_strings(value.as_ref())); + } // flake8-annotations "suppress-none-returning" | "suppress_none_returning" => { match parser::parse_bool(value.as_ref()) { @@ -179,6 +185,12 @@ pub fn convert( // Deduplicate and sort. options.select = Some(Vec::from_iter(select)); options.ignore = Some(Vec::from_iter(ignore)); + if flake8_annotations != Default::default() { + options.flake8_annotations = Some(flake8_annotations); + } + if flake8_bugbear != Default::default() { + options.flake8_bugbear = Some(flake8_bugbear); + } if flake8_quotes != Default::default() { options.flake8_quotes = Some(flake8_quotes); } diff --git a/flake8_to_ruff/src/plugin.rs b/flake8_to_ruff/src/plugin.rs index a72500bc77..5700125c26 100644 --- a/flake8_to_ruff/src/plugin.rs +++ b/flake8_to_ruff/src/plugin.rs @@ -269,6 +269,10 @@ pub fn infer_plugins_from_options(flake8: &HashMap>) -> V "docstring-convention" | "docstring_convention" => { plugins.insert(Plugin::Flake8Docstrings); } + // flake8-bugbear + "extend-immutable-calls" | "extend_immutable_calls" => { + plugins.insert(Plugin::Flake8Bugbear); + } // flake8-builtins "builtins-ignorelist" | "builtins_ignorelist" => { plugins.insert(Plugin::Flake8Builtins); diff --git a/src/lib.rs b/src/lib.rs index d172988833..c5cf09ffab 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -30,7 +30,7 @@ mod docstrings; mod flake8_2020; pub mod flake8_annotations; pub mod flake8_bandit; -mod flake8_bugbear; +pub mod flake8_bugbear; mod flake8_builtins; mod flake8_comprehensions; mod flake8_print; diff --git a/src/settings/options.rs b/src/settings/options.rs index 47aaa361c9..89ed8844bc 100644 --- a/src/settings/options.rs +++ b/src/settings/options.rs @@ -19,7 +19,6 @@ pub struct Options { pub fix: Option, pub ignore: Option>, pub line_length: Option, - pub per_file_ignores: Option>>, pub select: Option>, pub src: Option>, pub target_version: Option, @@ -29,4 +28,6 @@ pub struct Options { pub flake8_quotes: Option, pub isort: Option, pub pep8_naming: Option, + // Tables are required to go last. + pub per_file_ignores: Option>>, }