Skip to content

Commit

Permalink
Avoid duplicate [tool.uv] header in TOML examples (#8545)
Browse files Browse the repository at this point in the history
## 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]`.
  • Loading branch information
charliermarsh authored Oct 24, 2024
1 parent ec71fb1 commit 99a8746
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 51 deletions.
57 changes: 47 additions & 10 deletions crates/uv-dev/src/generate_options_reference.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
));
}
Expand All @@ -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,
));
}
Expand All @@ -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 {
Expand All @@ -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,
Expand All @@ -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 {
Expand Down
Loading

0 comments on commit 99a8746

Please sign in to comment.