@@ -25,14 +25,7 @@ def _commit_info() -> tuple[str, int]:
2525 return h , int (t )
2626
2727
28- def _make_info (filename : str ) -> dict [str , Any ]:
29- h , t = _commit_info ()
30-
31- with open (filename , "rb" ) as f :
32- sha256 = hashlib .sha256 (f .read ()).hexdigest ()
33-
34- metadata_bytes = b""
35-
28+ def _get_metadata_bytes (filename : str ) -> bytes :
3629 with zipfile .ZipFile (filename ) as zipf :
3730 (metadata ,) = (
3831 name
@@ -41,19 +34,29 @@ def _make_info(filename: str) -> dict[str, Any]:
4134 )
4235 with zipf .open (metadata ) as f :
4336 metadata_bytes = f .read ()
44- metadata_sha256 = hashlib .sha256 (metadata_bytes ).hexdigest ()
45- info = email .message_from_bytes (metadata_bytes )
37+ return metadata_bytes
38+
39+
40+ def _make_info (filename : str ) -> dict [str , Any ]:
41+ h , t = _commit_info ()
42+
43+ with open (filename , "rb" ) as f :
44+ sha256 = hashlib .sha256 (f .read ()).hexdigest ()
45+
46+ metadata_bytes = _get_metadata_bytes (filename )
47+ metadata_sha256 = hashlib .sha256 (metadata_bytes ).hexdigest ()
48+ info = email .message_from_bytes (metadata_bytes )
4649
4750 dist_info = {
4851 "requires_dist" : info .get_all ("requires-dist" ),
4952 "requires_python" : info .get ("requires-python" ),
5053 }
5154
55+ # this is intended to be exactly the structure dumb-pypi generates
5256 return {
5357 "filename" : os .path .basename (filename ),
5458 "hash" : f"sha256={ sha256 } " ,
5559 "core_metadata" : f"sha256={ metadata_sha256 } " ,
56- "_metadata" : metadata_bytes ,
5760 "upload_timestamp" : t ,
5861 "uploaded_by" : f"git@{ h } " ,
5962 ** {k : v for k , v in dist_info .items () if v },
@@ -99,13 +102,11 @@ def main(argv: Sequence[str] | None = None) -> int:
99102 seen .add (basename )
100103 package_info = _make_info (filename )
101104
102- metadata_data = package_info .pop ("_metadata" )
103-
104105 new_packages .append (package_info )
105106 shutil .copy (filename , wheels_dir )
106107
107108 with open (f"{ wheels_dir } /{ basename } .metadata" , "wb" ) as f :
108- f .write (metadata_data )
109+ f .write (_get_metadata_bytes ( filename ) )
109110
110111 with tempfile .TemporaryDirectory () as tmpdir :
111112 prev_json = os .path .join (tmpdir , "previous.json" )
0 commit comments