Use more consistent Option in pyproject settings (#530)

This commit is contained in:
Charlie Marsh 2022-10-31 16:34:58 -04:00 committed by GitHub
parent 05867ef260
commit 621db96e7f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 71 additions and 72 deletions

View file

@ -16,38 +16,40 @@ pub fn convert(config: HashMap<String, HashMap<String, Option<String>>>) -> Resu
// Parse each supported option.
let mut options: Options = Default::default();
for (key, value) in flake8 {
if let Some(value) = value {
match key.as_str() {
"line-length" | "line_length" => match value.clone().unwrap().parse::<usize>() {
"line-length" | "line_length" => match value.clone().parse::<usize>() {
Ok(line_length) => options.line_length = Some(line_length),
Err(e) => eprintln!("Unable to parse '{key}' property: {e}"),
},
"select" => {
options.select = Some(parser::parse_prefix_codes(value.as_ref().unwrap()));
options.select = Some(parser::parse_prefix_codes(value.as_ref()));
}
"extend-select" | "extend_select" => {
options.extend_select = parser::parse_prefix_codes(value.as_ref().unwrap());
options.extend_select = Some(parser::parse_prefix_codes(value.as_ref()));
}
"ignore" => {
options.ignore = parser::parse_prefix_codes(value.as_ref().unwrap());
options.ignore = Some(parser::parse_prefix_codes(value.as_ref()));
}
"extend-ignore" | "extend_ignore" => {
options.extend_ignore = parser::parse_prefix_codes(value.as_ref().unwrap());
options.extend_ignore = Some(parser::parse_prefix_codes(value.as_ref()));
}
"exclude" => {
options.exclude = Some(parser::parse_strings(value.as_ref().unwrap()));
options.exclude = Some(parser::parse_strings(value.as_ref()));
}
"extend-exclude" | "extend_exclude" => {
options.extend_exclude = parser::parse_strings(value.as_ref().unwrap());
options.extend_exclude = Some(parser::parse_strings(value.as_ref()));
}
"per-file-ignores" | "per_file_ignores" => {
match parser::parse_files_to_codes_mapping(value.as_ref().unwrap()) {
Ok(per_file_ignores) => options.per_file_ignores = per_file_ignores,
match parser::parse_files_to_codes_mapping(value.as_ref()) {
Ok(per_file_ignores) => options.per_file_ignores = Some(per_file_ignores),
Err(e) => eprintln!("Unable to parse '{key}' property: {e}"),
}
}
_ => eprintln!("Skipping unsupported property: {key}"),
}
}
}
// Create the pyproject.toml.
Ok(Pyproject::new(options))

View file

@ -80,18 +80,20 @@ impl Configuration {
.unwrap_or_else(|| DEFAULT_EXCLUDE.clone()),
extend_exclude: options
.extend_exclude
.unwrap_or_default()
.iter()
.map(|path| FilePattern::from_user(path, project_root))
.collect(),
extend_ignore: options.extend_ignore,
extend_ignore: options.extend_ignore.unwrap_or_default(),
select: options
.select
.unwrap_or_else(|| vec![CheckCodePrefix::E, CheckCodePrefix::F]),
extend_select: options.extend_select,
ignore: options.ignore,
extend_select: options.extend_select.unwrap_or_default(),
ignore: options.ignore.unwrap_or_default(),
line_length: options.line_length.unwrap_or(88),
per_file_ignores: options
.per_file_ignores
.unwrap_or_default()
.into_iter()
.map(|pair| PerFileIgnore::new(pair, project_root))
.collect(),

View file

@ -11,17 +11,12 @@ use crate::{flake8_quotes, pep8_naming};
pub struct Options {
pub line_length: Option<usize>,
pub exclude: Option<Vec<String>>,
#[serde(default)]
pub extend_exclude: Vec<String>,
pub extend_exclude: Option<Vec<String>>,
pub select: Option<Vec<CheckCodePrefix>>,
#[serde(default)]
pub extend_select: Vec<CheckCodePrefix>,
#[serde(default)]
pub ignore: Vec<CheckCodePrefix>,
#[serde(default)]
pub extend_ignore: Vec<CheckCodePrefix>,
#[serde(default)]
pub per_file_ignores: Vec<StrCheckCodePair>,
pub extend_select: Option<Vec<CheckCodePrefix>>,
pub ignore: Option<Vec<CheckCodePrefix>>,
pub extend_ignore: Option<Vec<CheckCodePrefix>>,
pub per_file_ignores: Option<Vec<StrCheckCodePair>>,
pub dummy_variable_rgx: Option<String>,
pub target_version: Option<PythonVersion>,
// Plugins

View file

@ -134,12 +134,12 @@ mod tests {
ruff: Some(Options {
line_length: None,
exclude: None,
extend_exclude: vec![],
extend_exclude: None,
select: None,
extend_select: vec![],
ignore: vec![],
extend_ignore: vec![],
per_file_ignores: vec![],
extend_select: None,
ignore: None,
extend_ignore: None,
per_file_ignores: None,
dummy_variable_rgx: None,
target_version: None,
flake8_quotes: None,
@ -161,12 +161,12 @@ line-length = 79
ruff: Some(Options {
line_length: Some(79),
exclude: None,
extend_exclude: vec![],
extend_exclude: None,
select: None,
extend_select: vec![],
ignore: vec![],
extend_ignore: vec![],
per_file_ignores: vec![],
extend_select: None,
ignore: None,
extend_ignore: None,
per_file_ignores: None,
dummy_variable_rgx: None,
target_version: None,
flake8_quotes: None,
@ -188,12 +188,12 @@ exclude = ["foo.py"]
ruff: Some(Options {
line_length: None,
exclude: Some(vec!["foo.py".to_string()]),
extend_exclude: vec![],
extend_exclude: None,
select: None,
extend_select: vec![],
ignore: vec![],
extend_ignore: vec![],
per_file_ignores: vec![],
extend_select: None,
ignore: None,
extend_ignore: None,
per_file_ignores: None,
dummy_variable_rgx: None,
target_version: None,
flake8_quotes: None,
@ -215,12 +215,12 @@ select = ["E501"]
ruff: Some(Options {
line_length: None,
exclude: None,
extend_exclude: vec![],
extend_exclude: None,
select: Some(vec![CheckCodePrefix::E501]),
extend_select: vec![],
ignore: vec![],
extend_ignore: vec![],
per_file_ignores: vec![],
extend_select: None,
ignore: None,
extend_ignore: None,
per_file_ignores: None,
dummy_variable_rgx: None,
target_version: None,
flake8_quotes: None,
@ -243,12 +243,12 @@ ignore = ["E501"]
ruff: Some(Options {
line_length: None,
exclude: None,
extend_exclude: vec![],
extend_exclude: None,
select: None,
extend_select: vec![CheckCodePrefix::M001],
ignore: vec![CheckCodePrefix::E501],
extend_ignore: vec![],
per_file_ignores: vec![],
extend_select: Some(vec![CheckCodePrefix::M001]),
ignore: Some(vec![CheckCodePrefix::E501]),
extend_ignore: None,
per_file_ignores: None,
dummy_variable_rgx: None,
target_version: None,
flake8_quotes: None,
@ -310,19 +310,19 @@ other-attribute = 1
Options {
line_length: Some(88),
exclude: None,
extend_exclude: vec![
extend_exclude: Some(vec![
"excluded.py".to_string(),
"migrations".to_string(),
"directory/also_excluded.py".to_string(),
],
]),
select: None,
extend_select: vec![],
ignore: vec![],
extend_ignore: vec![],
per_file_ignores: vec![StrCheckCodePair {
extend_select: None,
ignore: None,
extend_ignore: None,
per_file_ignores: Some(vec![StrCheckCodePair {
pattern: "__init__.py".to_string(),
code: CheckCodePrefix::F401
}],
}]),
dummy_variable_rgx: None,
target_version: None,
flake8_quotes: Some(flake8_quotes::settings::Options {