Revert treating 'Dynamic' values as case-insensitive (#18692)
#18669 is the cause of #18690. This PR reverts #18669 to address the regression.
This commit is contained in:
committed by
GitHub
parent
63f63b0ca2
commit
82aa312db5
@@ -79,7 +79,7 @@ impl ResolutionMetadata {
|
||||
.collect::<Box<_>>();
|
||||
let dynamic = headers
|
||||
.get_all_values("Dynamic")
|
||||
.any(|field| field.eq_ignore_ascii_case("Version"));
|
||||
.any(|field| field == "Version");
|
||||
|
||||
Ok(Self {
|
||||
name,
|
||||
@@ -112,15 +112,12 @@ impl ResolutionMetadata {
|
||||
// If any of the fields we need are marked as dynamic, we can't use the `PKG-INFO` file.
|
||||
let mut dynamic = false;
|
||||
for field in headers.get_all_values("Dynamic") {
|
||||
let field = field.as_str();
|
||||
if field.eq_ignore_ascii_case("Requires-Python") {
|
||||
return Err(MetadataError::DynamicField("Requires-Python"));
|
||||
} else if field.eq_ignore_ascii_case("Requires-Dist") {
|
||||
return Err(MetadataError::DynamicField("Requires-Dist"));
|
||||
} else if field.eq_ignore_ascii_case("Provides-Extra") {
|
||||
return Err(MetadataError::DynamicField("Provides-Extra"));
|
||||
} else if field.eq_ignore_ascii_case("Version") {
|
||||
dynamic = true;
|
||||
match field.as_str() {
|
||||
"Requires-Python" => return Err(MetadataError::DynamicField("Requires-Python")),
|
||||
"Requires-Dist" => return Err(MetadataError::DynamicField("Requires-Dist")),
|
||||
"Provides-Extra" => return Err(MetadataError::DynamicField("Provides-Extra")),
|
||||
"Version" => dynamic = true,
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -337,25 +334,6 @@ mod tests {
|
||||
let meta = ResolutionMetadata::parse_pkg_info(s.as_bytes()).unwrap_err();
|
||||
assert!(matches!(meta, MetadataError::DynamicField("Requires-Dist")));
|
||||
|
||||
// Dynamic field values should be matched case-insensitively.
|
||||
let s = "Metadata-Version: 2.3\nName: asdf\nVersion: 1.0\nDynamic: requires-dist";
|
||||
let meta = ResolutionMetadata::parse_pkg_info(s.as_bytes()).unwrap_err();
|
||||
assert!(matches!(meta, MetadataError::DynamicField("Requires-Dist")));
|
||||
|
||||
let s = "Metadata-Version: 2.3\nName: asdf\nVersion: 1.0\nDynamic: requires-python";
|
||||
let meta = ResolutionMetadata::parse_pkg_info(s.as_bytes()).unwrap_err();
|
||||
assert!(matches!(
|
||||
meta,
|
||||
MetadataError::DynamicField("Requires-Python")
|
||||
));
|
||||
|
||||
let s = "Metadata-Version: 2.3\nName: asdf\nVersion: 1.0\nDynamic: provides-extra";
|
||||
let meta = ResolutionMetadata::parse_pkg_info(s.as_bytes()).unwrap_err();
|
||||
assert!(matches!(
|
||||
meta,
|
||||
MetadataError::DynamicField("Provides-Extra")
|
||||
));
|
||||
|
||||
let s = "Metadata-Version: 2.3\nName: asdf\nVersion: 1.0\nRequires-Dist: foo";
|
||||
let meta = ResolutionMetadata::parse_pkg_info(s.as_bytes()).unwrap();
|
||||
assert_eq!(meta.name, PackageName::from_str("asdf").unwrap());
|
||||
|
||||
Reference in New Issue
Block a user