Rename `provides_extras` to `provides_extra` (#15825)

## Summary

This is now consistent with `requires_dist` (singular).
This commit is contained in:
Charlie Marsh 2025-09-14 09:27:45 -04:00 committed by GitHub
parent 312084f2dd
commit b770639c91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
32 changed files with 94 additions and 96 deletions

View File

@ -547,7 +547,7 @@ impl PyProjectToml {
license_files,
classifiers: self.project.classifiers.clone().unwrap_or_default(),
requires_dist: requires_dist.iter().map(ToString::to_string).collect(),
provides_extras: extras.iter().map(ToString::to_string).collect(),
provides_extra: extras.iter().map(ToString::to_string).collect(),
// Not commonly set.
provides_dist: vec![],
// Not supported.

View File

@ -1002,7 +1002,7 @@ impl CacheBucket {
Self::Interpreter => "interpreter-v4",
// Note that when bumping this, you'll also need to bump it
// in `crates/uv/tests/it/cache_clean.rs`.
Self::Simple => "simple-v17",
Self::Simple => "simple-v18",
// Note that when bumping this, you'll also need to bump it
// in `crates/uv/tests/it/cache_prune.rs`.
Self::Wheels => "wheels-v5",

View File

@ -1245,7 +1245,7 @@ impl SimpleMetadata {
version: version.clone(),
requires_dist: metadata.requires_dist,
requires_python: metadata.requires_python,
provides_extras: metadata.provides_extras,
provides_extra: metadata.provides_extra,
dynamic: false,
});
SimpleMetadatum {

View File

@ -49,7 +49,7 @@ impl DependencyMetadata {
version: version.clone(),
requires_dist: metadata.requires_dist.clone(),
requires_python: metadata.requires_python.clone(),
provides_extras: metadata.provides_extras.clone(),
provides_extra: metadata.provides_extra.clone(),
dynamic: false,
})
} else {
@ -70,7 +70,7 @@ impl DependencyMetadata {
version,
requires_dist: metadata.requires_dist.clone(),
requires_python: metadata.requires_python.clone(),
provides_extras: metadata.provides_extras.clone(),
provides_extra: metadata.provides_extra.clone(),
dynamic: false,
})
}
@ -109,6 +109,6 @@ pub struct StaticMetadata {
)
)]
pub requires_python: Option<VersionSpecifiers>,
#[serde(default)]
pub provides_extras: Box<[ExtraName]>,
#[serde(default, alias = "provides-extras")]
pub provides_extra: Box<[ExtraName]>,
}

View File

@ -58,7 +58,7 @@ pub struct Metadata {
// Optional fields
pub requires_dist: Box<[Requirement]>,
pub requires_python: Option<VersionSpecifiers>,
pub provides_extras: Box<[ExtraName]>,
pub provides_extra: Box<[ExtraName]>,
pub dependency_groups: BTreeMap<GroupName, Box<[Requirement]>>,
pub dynamic: bool,
}
@ -74,7 +74,7 @@ impl Metadata {
.map(Requirement::from)
.collect(),
requires_python: metadata.requires_python,
provides_extras: metadata.provides_extras,
provides_extra: metadata.provides_extra,
dependency_groups: BTreeMap::default(),
dynamic: metadata.dynamic,
}
@ -94,13 +94,13 @@ impl Metadata {
let requires_dist = uv_pypi_types::RequiresDist {
name: metadata.name,
requires_dist: metadata.requires_dist,
provides_extras: metadata.provides_extras,
provides_extra: metadata.provides_extra,
dynamic: metadata.dynamic,
};
let RequiresDist {
name,
requires_dist,
provides_extras,
provides_extra,
dependency_groups,
dynamic,
} = RequiresDist::from_project_maybe_workspace(
@ -119,7 +119,7 @@ impl Metadata {
version: metadata.version,
requires_dist,
requires_python: metadata.requires_python,
provides_extras,
provides_extra,
dependency_groups,
dynamic,
})

View File

@ -19,7 +19,7 @@ use crate::metadata::{GitWorkspaceMember, LoweredRequirement, MetadataError};
pub struct RequiresDist {
pub name: PackageName,
pub requires_dist: Box<[Requirement]>,
pub provides_extras: Box<[ExtraName]>,
pub provides_extra: Box<[ExtraName]>,
pub dependency_groups: BTreeMap<GroupName, Box<[Requirement]>>,
pub dynamic: bool,
}
@ -33,7 +33,7 @@ impl RequiresDist {
requires_dist: Box::into_iter(metadata.requires_dist)
.map(Requirement::from)
.collect(),
provides_extras: metadata.provides_extras,
provides_extra: metadata.provides_extra,
dependency_groups: BTreeMap::default(),
dynamic: metadata.dynamic,
}
@ -198,7 +198,7 @@ impl RequiresDist {
name: metadata.name,
requires_dist,
dependency_groups,
provides_extras: metadata.provides_extras,
provides_extra: metadata.provides_extra,
dynamic: metadata.dynamic,
})
}
@ -216,7 +216,7 @@ impl RequiresDist {
for source in sources.iter() {
if let Some(extra) = source.extra() {
// If the extra doesn't exist at all, error.
if !metadata.provides_extras.contains(extra) {
if !metadata.provides_extra.contains(extra) {
return Err(MetadataError::MissingSourceExtra(
name.clone(),
extra.clone(),
@ -268,7 +268,7 @@ impl From<Metadata> for RequiresDist {
Self {
name: metadata.name,
requires_dist: metadata.requires_dist,
provides_extras: metadata.provides_extras,
provides_extra: metadata.provides_extra,
dependency_groups: metadata.dependency_groups,
dynamic: metadata.dynamic,
}

View File

@ -746,7 +746,7 @@ impl FormMetadata {
requires_python,
requires_external,
project_urls,
provides_extras,
provides_extra,
dynamic,
} = metadata(file, filename).await?;
@ -808,7 +808,7 @@ impl FormMetadata {
add_vec("platform", platforms);
add_vec("project_urls", project_urls);
add_vec("provides_dist", provides_dist);
add_vec("provides_extra", provides_extras);
add_vec("provides_extra", provides_extra);
add_vec("requires_dist", requires_dist);
add_vec("requires_external", requires_external);

View File

@ -99,7 +99,7 @@ pub struct Metadata23 {
/// A string containing the name of an optional feature. Must be a valid Python identifier.
/// May be used to make a dependency conditional on whether the optional feature has been
/// requested.
pub provides_extras: Vec<String>,
pub provides_extra: Vec<String>,
/// A string containing the name of another core metadata field.
pub dynamic: Vec<String>,
}
@ -145,7 +145,7 @@ impl Metadata23 {
let requires_python = headers.get_first_value("Requires-Python");
let requires_external = headers.get_all_values("Requires-External").collect();
let project_urls = headers.get_all_values("Project-URL").collect();
let provides_extras = headers.get_all_values("Provides-Extra").collect();
let provides_extra = headers.get_all_values("Provides-Extra").collect();
let description_content_type = headers.get_first_value("Description-Content-Type");
let dynamic = headers.get_all_values("Dynamic").collect();
Ok(Self {
@ -174,7 +174,7 @@ impl Metadata23 {
requires_python,
requires_external,
project_urls,
provides_extras,
provides_extra,
dynamic,
})
}
@ -264,7 +264,7 @@ impl Metadata23 {
);
write_all(&mut writer, "Requires-External", &self.requires_external);
write_all(&mut writer, "Project-URL", &self.project_urls);
write_all(&mut writer, "Provides-Extra", &self.provides_extras);
write_all(&mut writer, "Provides-Extra", &self.provides_extra);
write_opt_str(
&mut writer,
"Description-Content-Type",

View File

@ -31,7 +31,8 @@ pub struct ResolutionMetadata {
// Optional fields
pub requires_dist: Box<[Requirement<VerbatimParsedUrl>]>,
pub requires_python: Option<VersionSpecifiers>,
pub provides_extras: Box<[ExtraName]>,
#[serde(alias = "provides-extras")]
pub provides_extra: Box<[ExtraName]>,
/// Whether the version field is dynamic.
#[serde(default)]
pub dynamic: bool,
@ -64,7 +65,7 @@ impl ResolutionMetadata {
.map(|requires_python| LenientVersionSpecifiers::from_str(&requires_python))
.transpose()?
.map(VersionSpecifiers::from);
let provides_extras = headers
let provides_extra = headers
.get_all_values("Provides-Extra")
.filter_map(
|provides_extra| match ExtraName::from_owned(provides_extra) {
@ -85,7 +86,7 @@ impl ResolutionMetadata {
version,
requires_dist,
requires_python,
provides_extras,
provides_extra,
dynamic,
})
}
@ -144,7 +145,7 @@ impl ResolutionMetadata {
.map(|requires_python| LenientVersionSpecifiers::from_str(&requires_python))
.transpose()?
.map(VersionSpecifiers::from);
let provides_extras = headers
let provides_extra = headers
.get_all_values("Provides-Extra")
.filter_map(
|provides_extra| match ExtraName::from_owned(provides_extra) {
@ -162,7 +163,7 @@ impl ResolutionMetadata {
version,
requires_dist,
requires_python,
provides_extras,
provides_extra,
dynamic,
})
}
@ -250,7 +251,7 @@ impl ResolutionMetadata {
.collect::<Result<Box<_>, _>>()?;
// Extract the optional dependencies.
let provides_extras = project
let provides_extra = project
.optional_dependencies
.unwrap_or_default()
.into_keys()
@ -261,7 +262,7 @@ impl ResolutionMetadata {
version,
requires_dist,
requires_python,
provides_extras,
provides_extra,
dynamic,
})
}
@ -370,7 +371,7 @@ mod tests {
assert_eq!(meta.version, Version::new([1, 0]));
assert!(meta.requires_python.is_none());
assert!(meta.requires_dist.is_empty());
assert!(meta.provides_extras.is_empty());
assert!(meta.provides_extra.is_empty());
let s = r#"
[project]
@ -384,7 +385,7 @@ mod tests {
assert_eq!(meta.version, Version::new([1, 0]));
assert_eq!(meta.requires_python, Some(">=3.6".parse().unwrap()));
assert!(meta.requires_dist.is_empty());
assert!(meta.provides_extras.is_empty());
assert!(meta.provides_extra.is_empty());
let s = r#"
[project]
@ -399,7 +400,7 @@ mod tests {
assert_eq!(meta.version, Version::new([1, 0]));
assert_eq!(meta.requires_python, Some(">=3.6".parse().unwrap()));
assert_eq!(*meta.requires_dist, ["foo".parse().unwrap()]);
assert!(meta.provides_extras.is_empty());
assert!(meta.provides_extra.is_empty());
let s = r#"
[project]
@ -423,6 +424,6 @@ mod tests {
"bar; extra == \"dotenv\"".parse().unwrap()
]
);
assert_eq!(*meta.provides_extras, ["dotenv".parse().unwrap()]);
assert_eq!(*meta.provides_extra, ["dotenv".parse().unwrap()]);
}
}

View File

@ -1,7 +1,6 @@
use std::str::FromStr;
use itertools::Itertools;
use serde::{Deserialize, Serialize};
use uv_normalize::{ExtraName, PackageName};
use uv_pep508::Requirement;
@ -15,13 +14,11 @@ use crate::{LenientRequirement, MetadataError, VerbatimParsedUrl};
/// This is a subset of [`ResolutionMetadata`]; specifically, it omits the `version` and `requires-python`
/// fields, which aren't necessary when extracting the requirements of a package without installing
/// the package itself.
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "kebab-case")]
#[derive(Debug, Clone)]
pub struct RequiresDist {
pub name: PackageName,
pub requires_dist: Box<[Requirement<VerbatimParsedUrl>]>,
pub provides_extras: Box<[ExtraName]>,
#[serde(default)]
pub provides_extra: Box<[ExtraName]>,
pub dynamic: bool,
}
@ -86,7 +83,7 @@ impl RequiresDist {
.collect::<Result<Box<_>, _>>()?;
// Extract the optional dependencies.
let provides_extras = project
let provides_extra = project
.optional_dependencies
.unwrap_or_default()
.into_keys()
@ -95,7 +92,7 @@ impl RequiresDist {
Ok(Self {
name,
requires_dist,
provides_extras,
provides_extra,
dynamic,
})
}

View File

@ -1,19 +1,19 @@
use crate::{LenientRequirement, MetadataError, VerbatimParsedUrl};
use serde::Deserialize;
use std::io::BufRead;
use std::str::FromStr;
use uv_normalize::ExtraName;
use uv_pep508::{ExtraOperator, MarkerExpression, MarkerTree, MarkerValueExtra, Requirement};
use crate::{LenientRequirement, MetadataError, VerbatimParsedUrl};
/// `requires.txt` metadata as defined in <https://setuptools.pypa.io/en/latest/deprecated/python_eggs.html#dependency-metadata>.
///
/// This is a subset of the full metadata specification, and only includes the fields that are
/// included in the legacy `requires.txt` file.
#[derive(Deserialize, Debug, Clone)]
#[serde(rename_all = "kebab-case")]
#[derive(Debug, Clone)]
pub struct RequiresTxt {
pub requires_dist: Vec<Requirement<VerbatimParsedUrl>>,
pub provides_extras: Vec<ExtraName>,
pub provides_extra: Vec<ExtraName>,
}
impl RequiresTxt {
@ -22,7 +22,7 @@ impl RequiresTxt {
/// See: <https://setuptools.pypa.io/en/latest/deprecated/python_eggs.html#dependency-metadata>
pub fn parse(content: &[u8]) -> Result<Self, MetadataError> {
let mut requires_dist = vec![];
let mut provides_extras = vec![];
let mut provides_extra = vec![];
let mut current_marker = MarkerTree::default();
for line in content.lines() {
@ -52,7 +52,7 @@ impl RequiresTxt {
// Parse the extra.
let extra = if let Some(extra) = extra {
if let Ok(extra) = ExtraName::from_str(extra) {
provides_extras.push(extra.clone());
provides_extra.push(extra.clone());
Some(MarkerValueExtra::Extra(extra))
} else {
Some(MarkerValueExtra::Arbitrary(extra.to_string()))
@ -103,7 +103,7 @@ impl RequiresTxt {
Ok(Self {
requires_dist,
provides_extras,
provides_extra,
})
}
}

View File

@ -237,8 +237,8 @@ pub struct CoreMetadatum {
pub requires_python: Option<VersionSpecifiers>,
#[serde(default)]
pub requires_dist: Box<[Requirement<VerbatimParsedUrl>]>,
#[serde(default)]
pub provides_extras: Box<[ExtraName]>,
#[serde(default, alias = "provides-extras")]
pub provides_extra: Box<[ExtraName]>,
}
#[derive(Debug, Clone)]

View File

@ -113,7 +113,7 @@ impl<'a, Context: BuildContext> ExtrasResolver<'a, Context> {
// Sort extras for consistency.
let extras = {
let mut extras = metadata.provides_extras.to_vec();
let mut extras = metadata.provides_extra.to_vec();
extras.sort_unstable();
extras
};

View File

@ -91,7 +91,7 @@ impl<'a, Context: BuildContext> SourceTreeResolver<'a, Context> {
// Determine the extras to include when resolving the requirements.
let extras = self
.extras
.extra_names(metadata.provides_extras.iter())
.extra_names(metadata.provides_extra.iter())
.cloned()
.collect::<Vec<_>>();
@ -111,7 +111,7 @@ impl<'a, Context: BuildContext> SourceTreeResolver<'a, Context> {
let requirements = requirements.into_boxed_slice();
let project = metadata.name;
let extras = metadata.provides_extras;
let extras = metadata.provides_extra;
Ok(SourceTreeResolution {
requirements,

View File

@ -1229,11 +1229,11 @@ impl Lock {
if let Some(requires_python) = metadata.requires_python.as_ref() {
table.insert("requires-python", value(requires_python.to_string()));
}
if !metadata.provides_extras.is_empty() {
if !metadata.provides_extra.is_empty() {
table.insert(
"provides-extras",
value(serde::Serialize::serialize(
&metadata.provides_extras,
&metadata.provides_extra,
toml_edit::ser::ValueSerializer::new(),
)?),
);
@ -1332,7 +1332,7 @@ impl Lock {
}
let expected: BTreeSet<_> = provides_extra.iter().collect();
let actual: BTreeSet<_> = package.metadata.provides_extras.iter().collect();
let actual: BTreeSet<_> = package.metadata.provides_extra.iter().collect();
if expected != actual {
let expected = Box::into_iter(provides_extra).collect();
@ -1783,7 +1783,7 @@ impl Lock {
}
// Validate the `provides-extras` metadata.
match self.satisfies_provides_extra(metadata.provides_extras, package) {
match self.satisfies_provides_extra(metadata.provides_extra, package) {
SatisfiesResult::Satisfied => {}
result => return Ok(result),
}
@ -1824,7 +1824,7 @@ impl Lock {
}
// Validate that the extras are unchanged.
if let SatisfiesResult::Satisfied = self.satisfies_provides_extra(metadata.provides_extras, package, ) {
if let SatisfiesResult::Satisfied = self.satisfies_provides_extra(metadata.provides_extra, package, ) {
debug!("Static `provides-extra` for `{}` is up-to-date", package.id);
} else {
debug!("Static `provides-extra` for `{}` is out-of-date; falling back to distribution database", package.id);
@ -1905,7 +1905,7 @@ impl Lock {
}
// Validate that the extras are unchanged.
match self.satisfies_provides_extra(metadata.provides_extras, package) {
match self.satisfies_provides_extra(metadata.provides_extra, package) {
SatisfiesResult::Satisfied => {}
result => return Ok(result),
}
@ -2346,14 +2346,14 @@ impl Package {
.collect::<Result<_, _>>()
.map_err(LockErrorKind::RequirementRelativePath)?
};
let provides_extras = if id.source.is_immutable() {
let provides_extra = if id.source.is_immutable() {
Box::default()
} else {
annotated_dist
.metadata
.as_ref()
.expect("metadata is present")
.provides_extras
.provides_extra
.clone()
};
let dependency_groups = if id.source.is_immutable() {
@ -2386,7 +2386,7 @@ impl Package {
dependency_groups: BTreeMap::default(),
metadata: PackageMetadata {
requires_dist,
provides_extras,
provides_extra,
dependency_groups,
},
})
@ -2995,10 +2995,10 @@ impl Package {
}
}
if !self.metadata.provides_extras.is_empty() {
if !self.metadata.provides_extra.is_empty() {
let provides_extras = self
.metadata
.provides_extras
.provides_extra
.iter()
.map(|extra| {
serde::Serialize::serialize(&extra, toml_edit::ser::ValueSerializer::new())
@ -3136,7 +3136,7 @@ impl Package {
/// Returns the extras the package provides, if any.
pub fn provides_extras(&self) -> &[ExtraName] {
&self.metadata.provides_extras
&self.metadata.provides_extra
}
/// Returns the dependency groups the package provides, if any.
@ -3211,8 +3211,8 @@ struct PackageWire {
struct PackageMetadata {
#[serde(default)]
requires_dist: BTreeSet<Requirement>,
#[serde(default)]
provides_extras: Box<[ExtraName]>,
#[serde(default, rename = "provides-extras")]
provides_extra: Box<[ExtraName]>,
#[serde(default, rename = "requires-dev", alias = "dependency-groups")]
dependency_groups: BTreeMap<GroupName, BTreeSet<Requirement>>,
}
@ -3235,7 +3235,7 @@ impl PackageMetadata {
Self {
requires_dist: unwire_requirements(self.requires_dist),
provides_extras: self.provides_extras,
provides_extra: self.provides_extra,
dependency_groups: self
.dependency_groups
.into_iter()

View File

@ -92,7 +92,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -99,7 +99,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -95,7 +95,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -84,7 +84,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},
@ -155,7 +155,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -84,7 +84,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},
@ -155,7 +155,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -58,7 +58,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},
@ -106,7 +106,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},
@ -171,7 +171,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -84,7 +84,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},
@ -155,7 +155,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -67,7 +67,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -65,7 +65,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -60,7 +60,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -60,7 +60,7 @@ Ok(
dependency_groups: {},
metadata: PackageMetadata {
requires_dist: {},
provides_extras: [],
provides_extra: [],
dependency_groups: {},
},
},

View File

@ -358,7 +358,7 @@ impl ResolverOutput {
if let Some(metadata) = metadata.as_ref() {
// Validate the extra.
if let Some(extra) = extra {
if !metadata.provides_extras.contains(extra) {
if !metadata.provides_extra.contains(extra) {
diagnostics.push(ResolutionDiagnostic::MissingExtra {
dist: dist.clone(),
extra: extra.clone(),

View File

@ -719,7 +719,7 @@ pub struct ResolverInstallerSchema {
/// to all versions of the package.
/// - (Optional) `requires-dist`: The dependencies of the package (e.g., `werkzeug>=0.14`).
/// - (Optional) `requires-python`: The Python version required by the package (e.g., `>=3.10`).
/// - (Optional) `provides-extras`: The extras provided by the package.
/// - (Optional) `provides-extra`: The extras provided by the package.
#[option(
default = r#"[]"#,
value_type = "list[dict]",
@ -1427,7 +1427,7 @@ pub struct PipOptions {
/// to all versions of the package.
/// - (Optional) `requires-dist`: The dependencies of the package (e.g., `werkzeug>=0.14`).
/// - (Optional) `requires-python`: The Python version required by the package (e.g., `>=3.10`).
/// - (Optional) `provides-extras`: The extras provided by the package.
/// - (Optional) `provides-extra`: The extras provided by the package.
#[option(
default = r#"[]"#,
value_type = "list[dict]",

View File

@ -51,7 +51,7 @@ fn clean_package_pypi() -> Result<()> {
// Assert that the `.rkyv` file is created for `iniconfig`.
let rkyv = context
.cache_dir
.child("simple-v17")
.child("simple-v18")
.child("pypi")
.child("iniconfig.rkyv");
assert!(
@ -125,7 +125,7 @@ fn clean_package_index() -> Result<()> {
// Assert that the `.rkyv` file is created for `iniconfig`.
let rkyv = context
.cache_dir
.child("simple-v17")
.child("simple-v18")
.child("index")
.child("e8208120cae3ba69")
.child("iniconfig.rkyv");

View File

@ -20009,7 +20009,7 @@ fn lock_dependency_metadata() -> Result<()> {
|
11 | requires_dist = ["typing-extensions"]
| ^^^^^^^^^^^^^
unknown field `requires_dist`, expected one of `name`, `version`, `requires-dist`, `requires-python`, `provides-extras`
unknown field `requires_dist`, expected one of `name`, `version`, `requires-dist`, `requires-python`, `provides-extra`, `provides-extras`
Resolved 4 packages in [TIME]
Added idna v3.6

View File

@ -1047,7 +1047,7 @@ standard, though only the following fields are respected:
to all versions of the package.
- (Optional) `requires-dist`: The dependencies of the package (e.g., `werkzeug>=0.14`).
- (Optional) `requires-python`: The Python version required by the package (e.g., `>=3.10`).
- (Optional) `provides-extras`: The extras provided by the package.
- (Optional) `provides-extra`: The extras provided by the package.
**Default value**: `[]`
@ -2428,7 +2428,7 @@ standard, though only the following fields are respected:
to all versions of the package.
- (Optional) `requires-dist`: The dependencies of the package (e.g., `werkzeug>=0.14`).
- (Optional) `requires-python`: The Python version required by the package (e.g., `>=3.10`).
- (Optional) `provides-extras`: The extras provided by the package.
- (Optional) `provides-extra`: The extras provided by the package.
**Default value**: `[]`

6
uv.schema.json generated
View File

@ -174,7 +174,7 @@
]
},
"dependency-metadata": {
"description": "Pre-defined static metadata for dependencies of the project (direct or transitive). When\nprovided, enables the resolver to use the specified metadata instead of querying the\nregistry or building the relevant package from source.\n\nMetadata should be provided in adherence with the [Metadata 2.3](https://packaging.python.org/en/latest/specifications/core-metadata/)\nstandard, though only the following fields are respected:\n\n- `name`: The name of the package.\n- (Optional) `version`: The version of the package. If omitted, the metadata will be applied\n to all versions of the package.\n- (Optional) `requires-dist`: The dependencies of the package (e.g., `werkzeug>=0.14`).\n- (Optional) `requires-python`: The Python version required by the package (e.g., `>=3.10`).\n- (Optional) `provides-extras`: The extras provided by the package.",
"description": "Pre-defined static metadata for dependencies of the project (direct or transitive). When\nprovided, enables the resolver to use the specified metadata instead of querying the\nregistry or building the relevant package from source.\n\nMetadata should be provided in adherence with the [Metadata 2.3](https://packaging.python.org/en/latest/specifications/core-metadata/)\nstandard, though only the following fields are respected:\n\n- `name`: The name of the package.\n- (Optional) `version`: The version of the package. If omitted, the metadata will be applied\n to all versions of the package.\n- (Optional) `requires-dist`: The dependencies of the package (e.g., `werkzeug>=0.14`).\n- (Optional) `requires-python`: The Python version required by the package (e.g., `>=3.10`).\n- (Optional) `provides-extra`: The extras provided by the package.",
"type": [
"array",
"null"
@ -1302,7 +1302,7 @@
]
},
"dependency-metadata": {
"description": "Pre-defined static metadata for dependencies of the project (direct or transitive). When\nprovided, enables the resolver to use the specified metadata instead of querying the\nregistry or building the relevant package from source.\n\nMetadata should be provided in adherence with the [Metadata 2.3](https://packaging.python.org/en/latest/specifications/core-metadata/)\nstandard, though only the following fields are respected:\n\n- `name`: The name of the package.\n- (Optional) `version`: The version of the package. If omitted, the metadata will be applied\n to all versions of the package.\n- (Optional) `requires-dist`: The dependencies of the package (e.g., `werkzeug>=0.14`).\n- (Optional) `requires-python`: The Python version required by the package (e.g., `>=3.10`).\n- (Optional) `provides-extras`: The extras provided by the package.",
"description": "Pre-defined static metadata for dependencies of the project (direct or transitive). When\nprovided, enables the resolver to use the specified metadata instead of querying the\nregistry or building the relevant package from source.\n\nMetadata should be provided in adherence with the [Metadata 2.3](https://packaging.python.org/en/latest/specifications/core-metadata/)\nstandard, though only the following fields are respected:\n\n- `name`: The name of the package.\n- (Optional) `version`: The version of the package. If omitted, the metadata will be applied\n to all versions of the package.\n- (Optional) `requires-dist`: The dependencies of the package (e.g., `werkzeug>=0.14`).\n- (Optional) `requires-python`: The Python version required by the package (e.g., `>=3.10`).\n- (Optional) `provides-extra`: The extras provided by the package.",
"type": [
"array",
"null"
@ -2195,7 +2195,7 @@
"name": {
"$ref": "#/definitions/PackageName"
},
"provides-extras": {
"provides-extra": {
"type": "array",
"default": [],
"items": {