Skip to content

Commit 11133b3

Browse files
mark-thmrickeylev
andauthored
fix: Fix broken logger statement in parse_requirements.bzl (#2017)
parse_requirements.bzl includes a broken logger statement by passing a string instead of a lambda. The result is that when a hash is no longer available on pypi (say, due to a release being yanked) that rules_python causes Bazel to halt. Since we use Bazel to generate requirements files, this means the only solution is to use non-Bazel tooling to get back to a functional state before then running Bazel tooling to update the requirements file -- all down to a faulty log statement. This PR corrects the faulty log statement. A more thorough fix might be to update the logger to warn if its invoked with a string instead of a lambda rather than failing. An example traceback which led to this discovery: ``` ERROR: Traceback (most recent call last): File ".../external/rules_python~/python/private/bzlmod/pip.bzl", line 472, column 52, in _pip_impl is_hub_reproducible = _create_whl_repos(module_ctx, pip_attr, hub_whl_map, whl_overrides, hub_group_map, simpleapi_cache) File ".../external/rules_python~/python/private/bzlmod/pip.bzl", line 187, column 50, in _create_whl_repos requirements_by_platform = parse_requirements( File ".../external/rules_python~/python/private/parse_requirements.bzl", line 348, column 37, in parse_requirements whls, sdist = _add_dists( File ".../external/rules_python~/python/private/parse_requirements.bzl", line 452, column 24, in _add_dists logger.warn("Could not find a whl or an sdist with sha256={}".format(sha256)) File ".../external/rules_python~/python/private/repo_utils.bzl", line 78, column 39, in lambda warn = lambda message_cb: _log(0, "WARNING", message_cb), File ".../external/rules_python~/python/private/repo_utils.bzl", line 72, column 71, in _log print("\nrules_python: {}: ".format(level.upper()), message_cb()) # buildifier: disable=print Error: 'string' object is not callable ``` --------- Co-authored-by: Richard Levasseur <[email protected]>
1 parent 49d180f commit 11133b3

File tree

2 files changed

+2
-1
lines changed

2 files changed

+2
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ A brief description of the categories of changes:
4545
platform specific wheel and use `experimental_target_platforms`.
4646
Fixes [#1996](https://github.com/bazelbuild/rules_python/issues/1996).
4747
* (rules) The first element of the default outputs is now the executable again.
48+
* (pip) Fixed crash when pypi packages lacked a sha (e.g. yanked packages)
4849

4950
### Removed
5051
* (pip): Removes the `entrypoint` macro that was replaced by `py_console_script_binary` in 0.26.0.

python/private/pypi/parse_requirements.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ def _add_dists(requirement, index_urls, python_version, logger = None):
449449
continue
450450

451451
if logger:
452-
logger.warn("Could not find a whl or an sdist with sha256={}".format(sha256))
452+
logger.warn(lambda: "Could not find a whl or an sdist with sha256={}".format(sha256))
453453

454454
yanked = {}
455455
for dist in whls + [sdist]:

0 commit comments

Comments
 (0)