mirror of
https://github.com/astral-sh/uv.git
synced 2025-09-30 22:11:12 +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",
|
||||
"schemars",
|
||||
"serde",
|
||||
"textwrap",
|
||||
"thiserror",
|
||||
"toml",
|
||||
"tracing",
|
||||
|
|
|
@ -31,6 +31,7 @@ dirs-sys = { workspace = true }
|
|||
fs-err = { workspace = true }
|
||||
schemars = { workspace = true, optional = true }
|
||||
serde = { workspace = true }
|
||||
textwrap = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
toml = { workspace = true }
|
||||
tracing = { workspace = true }
|
||||
|
|
|
@ -72,9 +72,13 @@ impl FilesystemOptions {
|
|||
Ok(None) => {
|
||||
// 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.
|
||||
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) => {
|
||||
// Otherwise, warn and stop.
|
||||
|
|
|
@ -3263,7 +3263,15 @@ fn override_dependency_from_workspace_invalid_syntax() -> Result<()> {
|
|||
----- stdout -----
|
||||
|
||||
----- 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`
|
||||
Caused by: TOML parse error at line 9, column 29
|
||||
|
|
||||
|
|
|
@ -125,7 +125,13 @@ fn invalid_pyproject_toml_syntax() -> Result<()> {
|
|||
----- stdout -----
|
||||
|
||||
----- 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`
|
||||
Caused by: TOML parse error at line 1, column 5
|
||||
|
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue