Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Fix broken logger statement in parse_requirements.bzl #2017

Merged
merged 2 commits into from
Jun 26, 2024

Conversation

mark-thm
Copy link
Contributor

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

@mark-thm mark-thm requested a review from groodt as a code owner June 26, 2024 20:20
@rickeylev
Copy link
Contributor

Thanks for the fix! I pushed an update to the changelog.

I wonder if there's a similar error a couple lines below, in the if yanked branch? It looks like logger can be None, but it unconditionally calls logger there.

@rickeylev rickeylev enabled auto-merge June 26, 2024 21:51
@rickeylev rickeylev added this pull request to the merge queue Jun 26, 2024
@aignas
Copy link
Collaborator

aignas commented Jun 26, 2024

Thanks for the PR. Logger might be None only in tests, but I'll go through the code once more to see if there are more places like this.

Merged via the queue into bazelbuild:main with commit 11133b3 Jun 26, 2024
4 checks passed
@mark-thm mark-thm deleted the patch-1 branch June 26, 2024 23:09
renovate bot referenced this pull request in bazel-contrib/rules_bazel_integration_test Jul 5, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [rules_python](https://togithub.com/bazelbuild/rules_python) |
http_archive | minor | `0.33.2` -> `0.34.0` |

---

### Release Notes

<details>
<summary>bazelbuild/rules_python (rules_python)</summary>

###
[`v0.34.0`](https://togithub.com/bazelbuild/rules_python/releases/tag/0.34.0)

[Compare
Source](https://togithub.com/bazelbuild/rules_python/compare/0.33.2...0.34.0)

#### Using Bzlmod with Bazel 6

**NOTE: bzlmod support is still beta. APIs subject to change.**

Add to your `MODULE.bazel` file:

```starlark
bazel_dep(name = "rules_python", version = "0.34.0")

pip = use_extension("@&#8203;rules_python//python/extensions:pip.bzl", "pip")

pip.parse(
    hub_name = "pip",
    python_version = "3.11",
    requirements_lock = "//:requirements_lock.txt",
)

use_repo(pip, "pip")
```

#### Using WORKSPACE

Paste this snippet into your `WORKSPACE` file:

```starlark
load("@&#8203;bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "rules_python",
    sha256 = "778aaeab3e6cfd56d681c89f5c10d7ad6bf8d2f1a72de9de55b23081b2d31618",
    strip_prefix = "rules_python-0.34.0",
    url = "https://github.com/bazelbuild/rules_python/releases/download/0.34.0/rules_python-0.34.0.tar.gz",
)

load("@&#8203;rules_python//python:repositories.bzl", "py_repositories")

py_repositories()
```

##### Gazelle plugin

Paste this snippet into your `WORKSPACE` file:

```starlark
load("@&#8203;bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
    name = "rules_python_gazelle_plugin",
    sha256 = "778aaeab3e6cfd56d681c89f5c10d7ad6bf8d2f1a72de9de55b23081b2d31618",
    strip_prefix = "rules_python-0.34.0/gazelle",
    url = "https://github.com/bazelbuild/rules_python/releases/download/0.34.0/rules_python-0.34.0.tar.gz",
)

### To compile the rules_python gazelle extension from source,
### we must fetch some third-party go dependencies that it uses.

load("@&#8203;rules_python_gazelle_plugin//:deps.bzl", _py_gazelle_deps = "gazelle_deps")

_py_gazelle_deps()
```

#### What's Changed

- fix: Remove transitive legacy struct provider usage by
[@&#8203;fmeum](https://togithub.com/fmeum) in
[https://github.com/bazelbuild/rules_python/pull/1957](https://togithub.com/bazelbuild/rules_python/pull/1957)
- docs: fix doc for how to use new bootstrap impl by
[@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/1959](https://togithub.com/bazelbuild/rules_python/pull/1959)
- chore: various cleanups to make google imports/patching easier by
[@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/1958](https://togithub.com/bazelbuild/rules_python/pull/1958)
- build(deps): bump idna from 3.4 to 3.7 in /tools/publish by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/bazelbuild/rules_python/pull/1849](https://togithub.com/bazelbuild/rules_python/pull/1849)
- build(deps): bump cryptography from 41.0.6 to 42.0.4 in /tools/publish
by [@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/bazelbuild/rules_python/pull/1772](https://togithub.com/bazelbuild/rules_python/pull/1772)
- ci: add a custom dependabot file by
[@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/1960](https://togithub.com/bazelbuild/rules_python/pull/1960)
- build(deps): bump pygments from 2.17.2 to 2.18.0 in /docs/sphinx by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/bazelbuild/rules_python/pull/1966](https://togithub.com/bazelbuild/rules_python/pull/1966)
- build(deps): bump actions/checkout from 2 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/bazelbuild/rules_python/pull/1961](https://togithub.com/bazelbuild/rules_python/pull/1961)
- build(deps): bump actions/stale from 3 to 9 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/bazelbuild/rules_python/pull/1962](https://togithub.com/bazelbuild/rules_python/pull/1962)
- build(deps): bump markupsafe from 2.1.3 to 2.1.5 in /docs/sphinx by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/bazelbuild/rules_python/pull/1964](https://togithub.com/bazelbuild/rules_python/pull/1964)
- build(deps): bump softprops/action-gh-release from 1 to 2 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/bazelbuild/rules_python/pull/1963](https://togithub.com/bazelbuild/rules_python/pull/1963)
- build(deps): bump typing-extensions from 4.9.0 to 4.12.2 in
/docs/sphinx by [@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/bazelbuild/rules_python/pull/1965](https://togithub.com/bazelbuild/rules_python/pull/1965)
- fix(bzlmod): use same target in requirement('foo') and
all_requirements by [@&#8203;jvolkman](https://togithub.com/jvolkman) in
[https://github.com/bazelbuild/rules_python/pull/1973](https://togithub.com/bazelbuild/rules_python/pull/1973)
- refactor(bzlmod): generate fewer targets for pip_config_settings by
[@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/1974](https://togithub.com/bazelbuild/rules_python/pull/1974)
- chore: access ctx.version_file to inform Bazel stamping info is needed
by [@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/1952](https://togithub.com/bazelbuild/rules_python/pull/1952)
- build(deps): bump urllib3 from 1.26.18 to 1.26.19 in /tools/publish by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/bazelbuild/rules_python/pull/1981](https://togithub.com/bazelbuild/rules_python/pull/1981)
- build(deps): bump babel from 2.13.1 to 2.15.0 in /docs/sphinx by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/bazelbuild/rules_python/pull/1983](https://togithub.com/bazelbuild/rules_python/pull/1983)
- docs: Fix a few typos in docs and function names by
[@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/1978](https://togithub.com/bazelbuild/rules_python/pull/1978)
- fix: enable auto exec groups using attribute by
[@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/1986](https://togithub.com/bazelbuild/rules_python/pull/1986)
- docs: Remove proposals by
[@&#8203;groodt](https://togithub.com/groodt) in
[https://github.com/bazelbuild/rules_python/pull/1990](https://togithub.com/bazelbuild/rules_python/pull/1990)
- chore: use `**` globs instead of explcit BUILD.bazel reference in
distribution filegroups by
[@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/1991](https://togithub.com/bazelbuild/rules_python/pull/1991)
- refactor(internal): allow setting linking mode for internal cc_details
APIs by [@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/1982](https://togithub.com/bazelbuild/rules_python/pull/1982)
- fix(toolchain): disable exec toolchain by default by
[@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/1968](https://togithub.com/bazelbuild/rules_python/pull/1968)
- fix: Resolve the test manifest with the runfiles lib. by
[@&#8203;lberki](https://togithub.com/lberki) in
[https://github.com/bazelbuild/rules_python/pull/1993](https://togithub.com/bazelbuild/rules_python/pull/1993)
- fix: allow creating PyRuntimeInfo without specifying
interpreter_version_info by
[@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/1992](https://togithub.com/bazelbuild/rules_python/pull/1992)
- doc: Changelog updates for 0.33.2 by
[@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/1995](https://togithub.com/bazelbuild/rules_python/pull/1995)
- refactor!: Remove entrypoint by
[@&#8203;groodt](https://togithub.com/groodt) in
[https://github.com/bazelbuild/rules_python/pull/1987](https://togithub.com/bazelbuild/rules_python/pull/1987)
- refactor: lookup exec interpreter using toolchain resolution by
[@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/1997](https://togithub.com/bazelbuild/rules_python/pull/1997)
- fix: Add `configure=True` for internal_config_repo by
[@&#8203;meteorcloudy](https://togithub.com/meteorcloudy) in
[https://github.com/bazelbuild/rules_python/pull/1998](https://togithub.com/bazelbuild/rules_python/pull/1998)
- chore: remove dead code from whl_target_platforms by
[@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/2001](https://togithub.com/bazelbuild/rules_python/pull/2001)
- fix(bzlmod): pass only non-default values to whl_library by
[@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/2002](https://togithub.com/bazelbuild/rules_python/pull/2002)
- refactor: move PyPI related extension and repository_rule setup to its
own dir by [@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/2003](https://togithub.com/bazelbuild/rules_python/pull/2003)
- docs: Removes dead link after docs were migrated to sphinx by
[@&#8203;groodt](https://togithub.com/groodt) in
[https://github.com/bazelbuild/rules_python/pull/2005](https://togithub.com/bazelbuild/rules_python/pull/2005)
- refactor: Remove unused template substitution by
[@&#8203;groodt](https://togithub.com/groodt) in
[https://github.com/bazelbuild/rules_python/pull/2004](https://togithub.com/bazelbuild/rules_python/pull/2004)
- refactor: move the remaining PyPI related functions to private/pypi by
[@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/2006](https://togithub.com/bazelbuild/rules_python/pull/2006)
- chore: adjust CODEOWNERS by
[@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/2008](https://togithub.com/bazelbuild/rules_python/pull/2008)
- fix: make first default output the executable again by
[@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/2010](https://togithub.com/bazelbuild/rules_python/pull/2010)
- refactor: call a function to define internal pypi flags instead of
listcomp by [@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/2011](https://togithub.com/bazelbuild/rules_python/pull/2011)
- chore: bump sphinxdocs deps by
[@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/2013](https://togithub.com/bazelbuild/rules_python/pull/2013)
- fix(whl_library): correctly handle arch-specific deps in wheels by
[@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/2007](https://togithub.com/bazelbuild/rules_python/pull/2007)
- fix(multiplatform): Add i386 Linux support by
[@&#8203;nicbadiu](https://togithub.com/nicbadiu) in
[https://github.com/bazelbuild/rules_python/pull/1999](https://togithub.com/bazelbuild/rules_python/pull/1999)
- fix: Fix broken logger statement in parse_requirements.bzl by
[@&#8203;mark-thm](https://togithub.com/mark-thm) in
[https://github.com/bazelbuild/rules_python/pull/2017](https://togithub.com/bazelbuild/rules_python/pull/2017)
- feat: add runtime_env toolchain suite to replace "autodetecting"
toolchain by [@&#8203;rickeylev](https://togithub.com/rickeylev) in
[https://github.com/bazelbuild/rules_python/pull/2018](https://togithub.com/bazelbuild/rules_python/pull/2018)
- fix(bzlmod): only expose common packages via the requirements
constants by [@&#8203;aignas](https://togithub.com/aignas) in
[https://github.com/bazelbuild/rules_python/pull/1955](https://togithub.com/bazelbuild/rules_python/pull/1955)
- feat(gazelle): Add directives for label format & normalisation by
[@&#8203;wingsofovnia](https://togithub.com/wingsofovnia) in
[https://github.com/bazelbuild/rules_python/pull/1976](https://togithub.com/bazelbuild/rules_python/pull/1976)
- chore: Remove unused renovate.json by
[@&#8203;groodt](https://togithub.com/groodt) in
[https://github.com/bazelbuild/rules_python/pull/2021](https://togithub.com/bazelbuild/rules_python/pull/2021)
- (chore): Remove the extra indirection and `bzlmod` folder by
[@&#8203;groodt](https://togithub.com/groodt) in
[https://github.com/bazelbuild/rules_python/pull/2022](https://togithub.com/bazelbuild/rules_python/pull/2022)

#### New Contributors

- [@&#8203;lberki](https://togithub.com/lberki) made their first
contribution in
[https://github.com/bazelbuild/rules_python/pull/1993](https://togithub.com/bazelbuild/rules_python/pull/1993)
- [@&#8203;nicbadiu](https://togithub.com/nicbadiu) made their first
contribution in
[https://github.com/bazelbuild/rules_python/pull/1999](https://togithub.com/bazelbuild/rules_python/pull/1999)
- [@&#8203;mark-thm](https://togithub.com/mark-thm) made their first
contribution in
[https://github.com/bazelbuild/rules_python/pull/2017](https://togithub.com/bazelbuild/rules_python/pull/2017)
- [@&#8203;wingsofovnia](https://togithub.com/wingsofovnia) made their
first contribution in
[https://github.com/bazelbuild/rules_python/pull/1976](https://togithub.com/bazelbuild/rules_python/pull/1976)

**Full Changelog**:
bazelbuild/rules_python@0.33.1...0.34.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/bazel-contrib/rules_bazel_integration_test).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjEuOSIsInVwZGF0ZWRJblZlciI6IjM3LjQyMS45IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants