@@ -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
4146def 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