Better error message when --config is given a table key and a non-inline-table value#15266
Conversation
…nline-table value
|
|
This is great! I think we can do even better with a few tweaks, though. With your branch currently, this is the error message I get: But if I apply this diff to your branch: --- a/crates/ruff/src/args.rs
+++ b/crates/ruff/src/args.rs
@@ -978,23 +978,25 @@ The path `{value}` does not point to a configuration file"
let prefixed_subkeys = format!("{set}")
.trim_ascii()
.split('\n')
- .map(|child| format!("{key}.{child}"))
+ .map(|child| format!(" - `{key}.{child}`"))
.join("\n");
tip.push_str(&format!(
"
-`{key}` is a table.
-Did you mean to use one of its subkeys instead? Possible choices:
+`{key}` is a table of configuration options, but only a single option can be
+overridden with `--config`. Did you want to override one of the table's subkeys?
+
+Possible choices:
{prefixed_subkeys}"
));
}
- };
-
- tip.push_str(&format!(
- "\n\n{}:\n\n{underlying_error}",
- config_parse_error.description()
- ));
+ } else {
+ tip.push_str(&format!(
+ "\n\n{}:\n\n{underlying_error}",
+ config_parse_error.description()
+ ));
+ }
}Then it becomes: which feels significantly more readable to me. WDYT? |
|
@AlexWaygood I was actually aiming for copyability, but readability is fine too.
This is rather misleading, because you can pass an inline table as the value: # Same as "lint.select = ['I001']"
$ ruff check --isolated --config="lint = { select = ['I001'] }" |
Oh, great point! I forgot how my own feature worked :-) We can scrap that clause, then. |
MichaReiser
left a comment
There was a problem hiding this comment.
This looks great. I'm a bit worried about the output parsing and I think we can improve the handling if set itself has sub-table entries.
d6f4210 to
e7d3a68
Compare
* main: (60 commits) [`ruff`] Dataclass enums (`RUF049`) (#15299) Better error message when `--config` is given a table key and a non-inline-table value (#15266) Update pre-commit dependencies (#15289) Don't fix in ecosystem check (#15267) Update Rust crate itertools to 0.14.0 (#15287) Remove accidental empty block at the bottom of `split-static-string (SIM905)` doc (#15290) Update Rust crate clearscreen to v4 (#15288) Update Rust crate insta to v1.42.0 (#15286) Update NPM Development dependencies (#15285) Update dependency uuid to v11.0.4 (#15284) Update dependency ruff to v0.8.6 (#15283) Update Rust crate syn to v2.0.95 (#15282) Update Rust crate matchit to v0.8.6 (#15281) Update Rust crate bstr to v1.11.3 (#15280) [red-knot] Future-proof `Type::is_disjoint_from()` (#15262) [red-knot] Improve `Type::is_disjoint_from()` for `KnownInstanceType`s (#15261) [red-knot] Minor simplifications and improvements to constraint narrowing logic (#15270) Allow assigning ellipsis literal as parameter default value (#14982) [red-knot] fix control flow for assignment expressions in elif tests (#15274) [`refurb`] Mark fix as unsafe when the right-hand side is a string (`FURB171`) (#15273) ...
* main: (29 commits) [`ruff`] Dataclass enums (`RUF049`) (#15299) Better error message when `--config` is given a table key and a non-inline-table value (#15266) Update pre-commit dependencies (#15289) Don't fix in ecosystem check (#15267) Update Rust crate itertools to 0.14.0 (#15287) Remove accidental empty block at the bottom of `split-static-string (SIM905)` doc (#15290) Update Rust crate clearscreen to v4 (#15288) Update Rust crate insta to v1.42.0 (#15286) Update NPM Development dependencies (#15285) Update dependency uuid to v11.0.4 (#15284) Update dependency ruff to v0.8.6 (#15283) Update Rust crate syn to v2.0.95 (#15282) Update Rust crate matchit to v0.8.6 (#15281) Update Rust crate bstr to v1.11.3 (#15280) [red-knot] Future-proof `Type::is_disjoint_from()` (#15262) [red-knot] Improve `Type::is_disjoint_from()` for `KnownInstanceType`s (#15261) [red-knot] Minor simplifications and improvements to constraint narrowing logic (#15270) Allow assigning ellipsis literal as parameter default value (#14982) [red-knot] fix control flow for assignment expressions in elif tests (#15274) [`refurb`] Mark fix as unsafe when the right-hand side is a string (`FURB171`) (#15273) ...


Summary
Resolves #13995.
Test Plan
cargo nextest runandcargo insta test.