Fix settings rendering for extra-build-dependencies

This commit is contained in:
Charlie Marsh 2025-08-08 10:36:48 +01:00
parent 1843c90e74
commit 64991b8d16
6 changed files with 27 additions and 118 deletions

View File

@ -639,9 +639,8 @@ pub struct ResolverInstallerOptions {
default = "[]",
value_type = "dict",
example = r#"
[extra-build-dependencies]
pytest = ["setuptools"]
"#
extra-build-dependencies = { pytest = ["setuptools"] }
"#
)]
pub extra_build_dependencies: Option<ExtraBuildDependencies>,
/// Extra environment variables to set when building certain packages.
@ -652,8 +651,7 @@ pub struct ResolverInstallerOptions {
default = r#"{}"#,
value_type = r#"dict[str, dict[str, str]]"#,
example = r#"
[tool.uv.extra-build-variables]
flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" }
extra-build-variables = { flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } }
"#
)]
pub extra_build_variables: Option<ExtraBuildVariables>,
@ -1178,8 +1176,7 @@ pub struct PipOptions {
default = "[]",
value_type = "dict",
example = r#"
[extra-build-dependencies]
pytest = ["setuptools"]
extra-build-dependencies = { pytest = ["setuptools"] }
"#
)]
pub extra_build_dependencies: Option<ExtraBuildDependencies>,
@ -1191,8 +1188,7 @@ pub struct PipOptions {
default = r#"{}"#,
value_type = r#"dict[str, dict[str, str]]"#,
example = r#"
[extra-build-variables]
flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" }
extra-build-variables = { flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } }
"#
)]
pub extra_build_variables: Option<ExtraBuildVariables>,

View File

@ -22,7 +22,7 @@ use serde::{Deserialize, Deserializer, Serialize};
use thiserror::Error;
use uv_build_backend::BuildBackendSettings;
use uv_distribution_types::{ExtraBuildVariables, Index, IndexName, RequirementSource};
use uv_distribution_types::{Index, IndexName, RequirementSource};
use uv_fs::{PortablePathBuf, relative_to};
use uv_git_types::GitReference;
use uv_macros::OptionsMetadata;
@ -428,35 +428,6 @@ pub struct ToolUv {
)]
pub dependency_groups: Option<ToolUvDependencyGroups>,
/// Additional build dependencies for packages.
///
/// This allows extending the PEP 517 build environment for the project's dependencies with
/// additional packages. This is useful for packages that assume the presence of packages, like,
/// `pip`, and do not declare them as build dependencies.
#[option(
default = "[]",
value_type = "dict",
example = r#"
[tool.uv.extra-build-dependencies]
pytest = ["pip"]
"#
)]
pub extra_build_dependencies: Option<ExtraBuildDependencies>,
/// Extra environment variables to set when building certain packages.
///
/// Environment variables will be added to the environment when building the
/// specified packages.
#[option(
default = r#"{}"#,
value_type = r#"dict[str, dict[str, str]]"#,
example = r#"
[tool.uv.extra-build-variables]
flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" }
"#
)]
pub extra_build_variables: Option<ExtraBuildVariables>,
/// The project's development dependencies.
///
/// Development dependencies will be installed by default in `uv run` and `uv sync`, but will

View File

@ -1970,8 +1970,6 @@ mod tests {
"package": null,
"default-groups": null,
"dependency-groups": null,
"extra-build-dependencies": null,
"extra-build-variables": null,
"dev-dependencies": null,
"override-dependencies": null,
"constraint-dependencies": null,
@ -2072,8 +2070,6 @@ mod tests {
"package": null,
"default-groups": null,
"dependency-groups": null,
"extra-build-dependencies": null,
"extra-build-variables": null,
"dev-dependencies": null,
"override-dependencies": null,
"constraint-dependencies": null,
@ -2287,8 +2283,6 @@ mod tests {
"package": null,
"default-groups": null,
"dependency-groups": null,
"extra-build-dependencies": null,
"extra-build-variables": null,
"dev-dependencies": null,
"override-dependencies": null,
"constraint-dependencies": null,
@ -2398,8 +2392,6 @@ mod tests {
"package": null,
"default-groups": null,
"dependency-groups": null,
"extra-build-dependencies": null,
"extra-build-variables": null,
"dev-dependencies": null,
"override-dependencies": null,
"constraint-dependencies": null,
@ -2522,8 +2514,6 @@ mod tests {
"package": null,
"default-groups": null,
"dependency-groups": null,
"extra-build-dependencies": null,
"extra-build-variables": null,
"dev-dependencies": null,
"override-dependencies": null,
"constraint-dependencies": null,
@ -2620,8 +2610,6 @@ mod tests {
"package": null,
"default-groups": null,
"dependency-groups": null,
"extra-build-dependencies": null,
"extra-build-variables": null,
"dev-dependencies": null,
"override-dependencies": null,
"constraint-dependencies": null,

View File

@ -12745,7 +12745,7 @@ fn sync_build_dependencies_respect_locked_versions() -> Result<()> {
uv_snapshot!(context.filters(), context.sync(), @r#"
success: false
exit_code: 2
exit_code: 1
----- stdout -----
----- stderr -----
@ -12756,12 +12756,16 @@ fn sync_build_dependencies_respect_locked_versions() -> Result<()> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dependencies marked with `match-runtime = true` cannot include version specifiers
error: Failed to parse: `pyproject.toml`
Caused by: TOML parse error at line 11, column 9
|
11 | child = [{ requirement = "anyio>4", match-runtime = true }]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dependencies marked with `match-runtime = true` cannot include version specifiers
Resolved [N] packages in [TIME]
× Failed to build `child @ file://[TEMP_DIR]/child`
The build backend returned an error
Call to `build_backend.build_wheel` failed (exit status: 1)
[stderr]
`EXPECTED_ANYIO_VERSION` not set
hint: This usually indicates a problem with the package or the build environment.
help: `child` was included because `parent` (v0.1.0) depends on `child`
"#);
Ok(())

View File

@ -202,49 +202,6 @@ environments = ["sys_platform == 'darwin'"]
---
### [`extra-build-dependencies`](#extra-build-dependencies) {: #extra-build-dependencies }
Additional build dependencies for packages.
This allows extending the PEP 517 build environment for the project's dependencies with
additional packages. This is useful for packages that assume the presence of packages, like,
`pip`, and do not declare them as build dependencies.
**Default value**: `[]`
**Type**: `dict`
**Example usage**:
```toml title="pyproject.toml"
[tool.uv.extra-build-dependencies]
pytest = ["pip"]
```
---
### [`extra-build-variables`](#extra-build-variables) {: #extra-build-variables }
Extra environment variables to set when building certain packages.
Environment variables will be added to the environment when building the
specified packages.
**Default value**: `{}`
**Type**: `dict[str, dict[str, str]]`
**Example usage**:
```toml title="pyproject.toml"
[tool.uv.extra-build-variables]
flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" }
```
---
### [`index`](#index) {: #index }
The indexes to use when resolving dependencies.
@ -1188,14 +1145,12 @@ additional packages. This is useful for packages that assume the presence of pac
```toml
[tool.uv]
[extra-build-dependencies]
pytest = ["setuptools"]
extra-build-dependencies = { pytest = ["setuptools"] }
```
=== "uv.toml"
```toml
[extra-build-dependencies]
pytest = ["setuptools"]
extra-build-dependencies = { pytest = ["setuptools"] }
```
---
@ -1216,14 +1171,13 @@ specified packages.
=== "pyproject.toml"
```toml
[tool.uv.extra-build-variables]
flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" }
[tool.uv]
extra-build-variables = { flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } }
```
=== "uv.toml"
```toml
[tool.uv.extra-build-variables]
flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" }
extra-build-variables = { flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } }
```
---
@ -2741,15 +2695,13 @@ additional packages. This is useful for packages that assume the presence of pac
```toml
[tool.uv.pip]
[extra-build-dependencies]
pytest = ["setuptools"]
extra-build-dependencies = { pytest = ["setuptools"] }
```
=== "uv.toml"
```toml
[pip]
[extra-build-dependencies]
pytest = ["setuptools"]
extra-build-dependencies = { pytest = ["setuptools"] }
```
---
@ -2772,15 +2724,13 @@ specified packages.
```toml
[tool.uv.pip]
[extra-build-variables]
flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" }
extra-build-variables = { flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } }
```
=== "uv.toml"
```toml
[pip]
[extra-build-variables]
flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" }
extra-build-variables = { flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" } }
```
---

2
uv.schema.json generated
View File

@ -226,7 +226,7 @@
]
},
"extra-build-dependencies": {
"description": "Additional build dependencies for packages.\n\nThis allows extending the PEP 517 build environment for the project's dependencies with\nadditional packages. This is useful for packages that assume the presence of packages, like,\n`pip`, and do not declare them as build dependencies.",
"description": "Additional build dependencies for packages.\n\nThis allows extending the PEP 517 build environment for the project's dependencies with\nadditional packages. This is useful for packages that assume the presence of packages like\n`pip`, and do not declare them as build dependencies.",
"anyOf": [
{
"$ref": "#/definitions/ExtraBuildDependencies"