mirror of
https://github.com/astral-sh/uv.git
synced 2025-10-01 06:21:13 +00:00
Make more informative warning message when failed to parse pyproject.toml (#6009)
## Summary Added the actual error message to the warning when uv fails to parse `pyproject.toml`. Resolves https://github.com/astral-sh/uv/issues/5934 ## Test Plan Took the case from the issue: - have `pyproject.toml` which contains ``` [tool.uv] foobar = false ``` - ``` $ uv venv --preview -v ``` - Expect the message that contains the actual problem in the `pyproject.toml` like: ``` warning: Failed to parse `pyproject.toml` during settings discovery: unknown field `foobar`; skipping... ```
This commit is contained in:
parent
5c44937742
commit
798cc7bf3c
5 changed files with 24 additions and 4 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -5127,6 +5127,7 @@ dependencies = [
|
||||||
"pypi-types",
|
"pypi-types",
|
||||||
"schemars",
|
"schemars",
|
||||||
"serde",
|
"serde",
|
||||||
|
"textwrap",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"toml",
|
"toml",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
|
|
@ -31,6 +31,7 @@ dirs-sys = { workspace = true }
|
||||||
fs-err = { workspace = true }
|
fs-err = { workspace = true }
|
||||||
schemars = { workspace = true, optional = true }
|
schemars = { workspace = true, optional = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
|
textwrap = { workspace = true }
|
||||||
thiserror = { workspace = true }
|
thiserror = { workspace = true }
|
||||||
toml = { workspace = true }
|
toml = { workspace = true }
|
||||||
tracing = { workspace = true }
|
tracing = { workspace = true }
|
||||||
|
|
|
@ -72,9 +72,13 @@ impl FilesystemOptions {
|
||||||
Ok(None) => {
|
Ok(None) => {
|
||||||
// Continue traversing the directory tree.
|
// Continue traversing the directory tree.
|
||||||
}
|
}
|
||||||
Err(Error::PyprojectToml(file, _err)) => {
|
Err(Error::PyprojectToml(file, err)) => {
|
||||||
// If we see an invalid `pyproject.toml`, warn but continue.
|
// If we see an invalid `pyproject.toml`, warn but continue.
|
||||||
warn_user!("Failed to parse `{file}` during settings discovery; skipping...");
|
warn_user!(
|
||||||
|
"Failed to parse `{}` during settings discovery:\n{}",
|
||||||
|
file.cyan(),
|
||||||
|
textwrap::indent(&err.to_string(), " ")
|
||||||
|
);
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
// Otherwise, warn and stop.
|
// Otherwise, warn and stop.
|
||||||
|
|
|
@ -3263,7 +3263,15 @@ fn override_dependency_from_workspace_invalid_syntax() -> Result<()> {
|
||||||
----- stdout -----
|
----- stdout -----
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: Failed to parse `pyproject.toml` during settings discovery; skipping...
|
warning: Failed to parse `pyproject.toml` during settings discovery:
|
||||||
|
TOML parse error at line 9, column 29
|
||||||
|
|
|
||||||
|
9 | override-dependencies = [
|
||||||
|
| ^
|
||||||
|
no such comparison operator "=", must be one of ~= == != <= >= < > ===
|
||||||
|
werkzeug=2.3.0
|
||||||
|
^^^^^^
|
||||||
|
|
||||||
error: Failed to parse: `pyproject.toml`
|
error: Failed to parse: `pyproject.toml`
|
||||||
Caused by: TOML parse error at line 9, column 29
|
Caused by: TOML parse error at line 9, column 29
|
||||||
|
|
|
|
||||||
|
|
|
@ -125,7 +125,13 @@ fn invalid_pyproject_toml_syntax() -> Result<()> {
|
||||||
----- stdout -----
|
----- stdout -----
|
||||||
|
|
||||||
----- stderr -----
|
----- stderr -----
|
||||||
warning: Failed to parse `pyproject.toml` during settings discovery; skipping...
|
warning: Failed to parse `pyproject.toml` during settings discovery:
|
||||||
|
TOML parse error at line 1, column 5
|
||||||
|
|
|
||||||
|
1 | 123 - 456
|
||||||
|
| ^
|
||||||
|
expected `.`, `=`
|
||||||
|
|
||||||
error: Failed to parse: `pyproject.toml`
|
error: Failed to parse: `pyproject.toml`
|
||||||
Caused by: TOML parse error at line 1, column 5
|
Caused by: TOML parse error at line 1, column 5
|
||||||
|
|
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue