-
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".