-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thank you!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 run
andcargo insta test
.