bazel-contrib / bazel-contrib/rules_python
importlib.metadata.files() doesn't work because RECORD is missing
- Dominant language
- Starlark
- Stars
- 688
- Forks
- 721
- Avg merge
- 14h 49m
- Merged PRs (30d)
- 81
Description
It appears that `importlib.metadata.files()` is broken with the pypi integration because the RECORD file gets ommited.
Per docs at https://docs.python.org/3/library/importlib.metadata.html#distribution-files
> In the case where the metadata file listing files (RECORD or SOURCES.txt) is missing, files() will return
This came to my attention via @mering trying to use the rtree package, which tries to use its distribution metadata to find some C libraries to load.
Excluding RECORD seems somewhat intentional, though? The code has this comment:
https://github.com/bazel-contrib/rules_python/blob/main/python/private/pypi/whl_library_targets.bzl#L315-L318
> RECORD is known to contain sha256 checksums of files which might include the checksums
> of generated files produced when wheels are installed. The file is ignored to avoid
> Bazel caching issues.
What's the caching issue, exactly? For a downloaded whl, what generated files is it referring to? If a whl is built at repo time from an sdist, then files shouldn't be changing, and the hash should be stable, so how does a cache issue come up?
Contributor guide
Assessment
This issue has not been assessed yet.