diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ea956574d..8982a5f716 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,7 @@ A brief description of the categories of changes: * Nothing yet ### Fixed -* Nothing yet +* (whl_filegroup): Provide per default also the `RECORD` file ### Added * Nothing yet @@ -83,7 +83,6 @@ A brief description of the categories of changes: * (toolchain) The {bzl:obj}`gen_python_config_settings` has been fixed to include the flag_values from the platform definitions. - ### Added * (bzlmod): Toolchain overrides can now be done using the new {bzl:obj}`python.override`, {bzl:obj}`python.single_version_override` and diff --git a/python/private/whl_filegroup/extract_wheel_files.py b/python/private/whl_filegroup/extract_wheel_files.py index e81e6a32ff..01d0bc6c9e 100644 --- a/python/private/whl_filegroup/extract_wheel_files.py +++ b/python/private/whl_filegroup/extract_wheel_files.py @@ -6,7 +6,7 @@ from collections.abc import Iterable from pathlib import Path -WhlRecord = dict[str, tuple[str, int]] +WhlRecord = Iterable[str] def get_record(whl_path: Path) -> WhlRecord: @@ -20,18 +20,16 @@ def get_record(whl_path: Path) -> WhlRecord: except ValueError: raise RuntimeError(f"{whl_path} doesn't contain exactly one .dist-info/RECORD") record_lines = zipf.read(record_file).decode().splitlines() - return { - file: (filehash, int(filelen)) + return ( + line.split(",")[0] for line in record_lines - for file, filehash, filelen in [line.split(",")] - if filehash # Skip RECORD itself, which has no hash or length - } + ) def get_files(whl_record: WhlRecord, regex_pattern: str) -> list[str]: """Get files in a wheel that match a regex pattern.""" p = re.compile(regex_pattern) - return [filepath for filepath in whl_record.keys() if re.match(p, filepath)] + return [filepath for filepath in whl_record if re.match(p, filepath)] def extract_files(whl_path: Path, files: Iterable[str], outdir: Path) -> None: diff --git a/tests/whl_filegroup/extract_wheel_files_test.py b/tests/whl_filegroup/extract_wheel_files_test.py index 2ea175b79a..387e56cde3 100644 --- a/tests/whl_filegroup/extract_wheel_files_test.py +++ b/tests/whl_filegroup/extract_wheel_files_test.py @@ -10,34 +10,17 @@ class WheelRecordTest(unittest.TestCase): def test_get_wheel_record(self) -> None: record = extract_wheel_files.get_record(_WHEEL) - expected = { - "examples/wheel/lib/data.txt": ( - "sha256=9vJKEdfLu8bZRArKLroPZJh1XKkK3qFMXiM79MBL2Sg", - 12, - ), - "examples/wheel/lib/module_with_data.py": ( - "sha256=8s0Khhcqz3yVsBKv2IB5u4l4TMKh7-c_V6p65WVHPms", - 637, - ), - "examples/wheel/lib/simple_module.py": ( - "sha256=z2hwciab_XPNIBNH8B1Q5fYgnJvQTeYf0ZQJpY8yLLY", - 637, - ), - "examples/wheel/main.py": ( - "sha256=sgg5iWN_9inYBjm6_Zw27hYdmo-l24fA-2rfphT-IlY", - 909, - ), - "example_minimal_package-0.0.1.dist-info/WHEEL": ( - "sha256=sobxWSyDDkdg_rinUth-jxhXHqoNqlmNMJY3aTZn2Us", - 91, - ), - "example_minimal_package-0.0.1.dist-info/METADATA": ( - "sha256=cfiQ2hFJhCKCUgbwtAwWG0fhW6NTzw4cr1uKOBcV_IM", - 76, - ), - } + expected = ( + "examples/wheel/lib/data.txt", + "examples/wheel/lib/module_with_data.py", + "examples/wheel/lib/simple_module.py", + "examples/wheel/main.py", + "example_minimal_package-0.0.1.dist-info/WHEEL", + "example_minimal_package-0.0.1.dist-info/METADATA", + "example_minimal_package-0.0.1.dist-info/RECORD", + ) self.maxDiff = None - self.assertDictEqual(record, expected) + self.assertEqual(list(record), list(expected)) def test_get_files(self) -> None: pattern = "(examples/wheel/lib/.*\.txt$|.*main)"