Skip to content

Error: key "python_version" not found in dictionary #2818

@vonschultz

Description

@vonschultz

🐞 bug report

Affected Rule

The issue is caused by the rule: multi_pip_parse

Is this a regression?

Yes, the previous version in which this bug was not present was: 1.3.0.

git bisect says first problematic commit is bfad507.

Description

Error: key "python_version" not found in dictionary from marker_expr in python/private/pypi/pep508_evaluate.bzl

🔬 Minimal Reproduction

When you have rules_python checked out:

cd examples/multi_python_versions/
echo 'websockets ; python_version > "3.9"' >| requirements/requirements.in 
for n in 9 10 11; do
    bazelisk run --@rules_python//python/config_settings:python_version=3.$n \
        //requirements:requirements_3_$n.update
done
bazelisk query --enable_workspace --noenable_bzlmod '@pypi//...'

It is worth noting that bazelisk query --noenable_workspace --enable_bzlmod '@pypi//...' does work, e.g. it works with Bzlmod, but is broken without.

🔥 Exception or Error


   Traceback (most recent call last):
	File "[...]/external/rules_python+/python/private/pypi/pip_repository.bzl", line 74, column 50, in _pip_repository_impl
		requirements_by_platform = parse_requirements(
	File "[...]/external/rules_python+/python/private/pypi/parse_requirements.bzl", line 159, column 51, in parse_requirements
		env_marker_target_platforms = evaluate_markers(reqs_with_env_markers)
	File "[...]/external/rules_python+/python/private/pypi/evaluate_markers.bzl", line 35, column 24, in evaluate_markers
		if evaluate(req.marker, env = env(platform_from_str(platform, None))):
	File "[...]/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 146, column 27, in evaluate
		tokens = ast.parse(env = env, tokens = tokens, strict = strict)
	File "[...]/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 231, column 40, in lambda
		parse = lambda **kwargs: _parse(self, **kwargs),
	File "[...]/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 258, column 27, in _parse
		expr = marker_expr(env = env, strict = strict, *tokens[:3])
	File "[...]/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 322, column 19, in marker_expr
		left = env[left]
Error: key "python_version" not found in dictionary

🌍 Your Environment

Operating System:

Ubuntu 24.04

Output of bazel version:

  
Bazelisk version: v1.20.0
Build label: 8.2.1
Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
Build time: Thu Apr 17 18:22:55 2025 (1744914175)
Build timestamp: 1744914175
Build timestamp as int: 1744914175
  

Rules_python version:

main, first problematic commit is bfad507.

Anything else relevant?

Metadata

Metadata

Assignees

Labels

type: pippip/pypi integration

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy