Avoid duplicate [tool.uv] header in TOML examples (#8545)

## Summary

For example, in:

```toml
[tool.uv]
[[tool.uv.index]]
name = "pytorch"
url = "https://download.pytorch.org/whl/cu121"
```

We can just omit `[tool.uv]`.
This commit is contained in:
Charlie Marsh
2024-10-24 17:10:01 -04:00
committed by GitHub
parent ec71fb1f75
commit 99a87464eb
2 changed files with 48 additions and 51 deletions
+47 -10
View File
@@ -268,7 +268,12 @@ fn emit_field(output: &mut String, name: &str, field: &OptionField, parents: &[S
} => {
output.push_str(&format_code(
"pyproject.toml",
&format_header(field.scope, parents, ConfigurationFile::PyprojectToml),
&format_header(
field.scope,
field.example,
parents,
ConfigurationFile::PyprojectToml,
),
field.example,
));
}
@@ -278,12 +283,22 @@ fn emit_field(output: &mut String, name: &str, field: &OptionField, parents: &[S
} => {
output.push_str(&format_tab(
"pyproject.toml",
&format_header(field.scope, parents, ConfigurationFile::PyprojectToml),
&format_header(
field.scope,
field.example,
parents,
ConfigurationFile::PyprojectToml,
),
field.example,
));
output.push_str(&format_tab(
"uv.toml",
&format_header(field.scope, parents, ConfigurationFile::UvToml),
&format_header(
field.scope,
field.example,
parents,
ConfigurationFile::UvToml,
),
field.example,
));
}
@@ -293,12 +308,20 @@ fn emit_field(output: &mut String, name: &str, field: &OptionField, parents: &[S
}
fn format_tab(tab_name: &str, header: &str, content: &str) -> String {
format!(
"=== \"{}\"\n\n ```toml\n {}\n{}\n ```\n",
tab_name,
header,
textwrap::indent(content, " ")
)
if header.is_empty() {
format!(
"=== \"{}\"\n\n ```toml\n{}\n ```\n",
tab_name,
textwrap::indent(content, " ")
)
} else {
format!(
"=== \"{}\"\n\n ```toml\n {}\n{}\n ```\n",
tab_name,
header,
textwrap::indent(content, " ")
)
}
}
fn format_code(file_name: &str, header: &str, content: &str) -> String {
@@ -308,7 +331,12 @@ fn format_code(file_name: &str, header: &str, content: &str) -> String {
/// Format the TOML header for the example usage for a given option.
///
/// For example: `[tool.uv.pip]`.
fn format_header(scope: Option<&str>, parents: &[Set], configuration: ConfigurationFile) -> String {
fn format_header(
scope: Option<&str>,
example: &str,
parents: &[Set],
configuration: ConfigurationFile,
) -> String {
let tool_parent = match configuration {
ConfigurationFile::PyprojectToml => Some("tool.uv"),
ConfigurationFile::UvToml => None,
@@ -320,6 +348,15 @@ fn format_header(scope: Option<&str>, parents: &[Set], configuration: Configurat
.chain(scope)
.join(".");
// Ex) `[[tool.uv.index]]`
if example.starts_with(&format!("[[{header}")) {
return String::new();
}
// Ex) `[tool.uv.sources]`
if example.starts_with(&format!("[{header}")) {
return String::new();
}
if header.is_empty() {
String::new()
} else {