Skip to content

Commit a9de409

Browse files
committed
Parse the PKG-INFO file from sdist archives.
1 parent ff57b75 commit a9de409

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

metadata_please/sdist.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,14 @@ def basic_metadata_from_zip_sdist(zf: ZipFile) -> BasicMetadata:
3333
if not requires:
3434
return BasicMetadata((), frozenset(), "-")
3535

36-
data = zf.read(requires[0])
37-
assert data is not None
38-
return BasicMetadata.from_sdist_pkg_info_and_requires(b"", data)
36+
requires_data = zf.read(requires[0])
37+
assert requires_data is not None
38+
39+
pkg_info = next(f for f in zf.namelist() if f.endswith("/PKG-INFO"))
40+
pkg_info_data = zf.read(pkg_info)
41+
assert pkg_info_data is not None
42+
43+
return BasicMetadata.from_sdist_pkg_info_and_requires(pkg_info_data, requires_data)
3944

4045

4146
def from_tar_sdist(tf: TarFile) -> bytes:
@@ -58,6 +63,7 @@ def from_tar_sdist(tf: TarFile) -> bytes:
5863
buf.append(f"Requires-Dist: {req}\n")
5964
for extra in sorted(extras):
6065
buf.append(f"Provides-Extra: {extra}\n")
66+
6167
return ("".join(buf)).encode("utf-8")
6268

6369

@@ -68,7 +74,14 @@ def basic_metadata_from_tar_sdist(tf: TarFile) -> BasicMetadata:
6874
if not requires:
6975
return BasicMetadata((), frozenset())
7076

71-
fo = tf.extractfile(requires[0])
72-
assert fo is not None
77+
requires_fo = tf.extractfile(requires[0])
78+
assert requires_fo is not None
79+
80+
pkg_info = next(f for f in tf.getnames() if f.endswith("/PKG-INFO"))
81+
82+
pkg_info_fo = tf.extractfile(pkg_info)
83+
assert pkg_info_fo is not None
7384

74-
return BasicMetadata.from_sdist_pkg_info_and_requires(b"", fo.read())
85+
return BasicMetadata.from_sdist_pkg_info_and_requires(
86+
pkg_info_fo.read(), requires_fo.read()
87+
)

0 commit comments

Comments
 (0)