-
Notifications
You must be signed in to change notification settings - Fork 6
Description
I don't understand what this code is supposed to be doing, but it doesn't seem right.
When parsing an SDistType::Zip
, parse_zip
is called with "PKG-INFO"
:
python-pkginfo-rs/src/distribution.rs
Line 154 in dc97929
SDistType::Zip => Self::parse_zip(path, "PKG-INFO"), |
parse_zip
finds all the contained file paths that end with "PKG-INFO"
:
python-pkginfo-rs/src/distribution.rs
Lines 206 to 210 in dc97929
let metadata_files: Vec<_> = archive | |
.file_names() | |
.filter(|name| name.ends_with(metadata_file_suffix)) | |
.map(ToString::to_string) | |
.collect(); |
If there is one path ending with "PKG-INFO"
, it is used:
python-pkginfo-rs/src/distribution.rs
Lines 213 to 217 in dc97929
[metadata_file] => { | |
let mut buf = Vec::new(); | |
archive.by_name(metadata_file)?.read_to_end(&mut buf)?; | |
Metadata::parse(&buf) | |
} |
If there are two paths ending with "PKG-INFO"
and either of them ends with ".egg-info/PKG-INFO"
, the first one is used:
python-pkginfo-rs/src/distribution.rs
Lines 218 to 225 in dc97929
[file1, file2] | |
if file1.ends_with(".egg-info/PKG-INFO") | |
|| file2.ends_with(".egg-info/PKG-INFO") => | |
{ | |
let mut buf = Vec::new(); | |
archive.by_name(file1)?.read_to_end(&mut buf)?; | |
Metadata::parse(&buf) | |
} |
I don't understand in what cases there would be two paths that end with "PKG-INFO"
, but it seems like if the code is checking that one of them ends with ".egg-info/PKG-INFO"
, the path that gets used should be related to the result of that check. It also seems like there is a problem if both of the paths end with ".egg-info/PKG-INFO"
.