Skip to content

More general support for platform_release #2821

Description

@baxelrod-bdai

🐞 bug report

Description

The >= operator should be supported for platform_release.

🔬 Minimal Reproduction

requirements.in has just:

keyboard

BUILD.bazel has:

load("@rules_uv//uv:pip.bzl", "pip_compile")
pip_compile(
name = "generate_requirements",
extra_args = [
"--universal",
],
requirements_in = "requirements.in",
requirements_txt = "requirements.lock",
)

Running bazel run //:generate_requirements creates a .lock file with lots of entries like:

pyobjc-framework-businesschat==11.0 ; platform_release >= '18.0' and sys_platform == 'darwin' \
--hash=sha256:1f732fdace31d2abdd14b3054f27a5e0f4591c7e1bef069b6aeb4f9c8d9ec487 \
--hash=sha256:20fe1c8c848ef3c2e132172d9a007a8aa65b08875a9ca5c27afbfc4396b16dbb \
--hash=sha256:47a2e4da9b061daa89a6367cb0e6bb8cdea0627379dd6d5095a8fd20243d8613
# via pyobjc
pyobjc-framework-calendarstore==11.0 ; platform_release >= '9.0' and sys_platform == 'darwin' \
--hash=sha256:40173f729df56b70ec14f9680962a248c3ce7b4babb46e8b0d760a13975ef174 \
--hash=sha256:67ddc18c96bba42118fc92f1117b053c58c8888edb74193f0be67a10051cc9e2 \
--hash=sha256:9b310fe66ac12e0feb7c8e3166034bec357a45f7f8b8916e93eddc6f199d08c8
# via pyobjc

Then when you try to bazel run anything, you get the crash:

ERROR: /home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl:348:20: Traceback (most recent call last):
File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 611, column 25, in _pip_impl
mods = parse_modules(module_ctx)
File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 482, column 36, in parse_modules
out = _create_whl_repos(
File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 158, column 50, in _create_whl_repos
requirements_by_platform = parse_requirements(
File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 231, column 40, in lambda
parse = lambda **kwargs: _parse(self, **kwargs),
File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 330, column 25, in marker_expr
return _env_expr(left, op, right)
File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 348, column 20, in _env_expr
return fail("TODO: op unsupported: '{}'".format(op))
Error in fail: TODO: op unsupported: '>='
ERROR: error evaluating module extension @@rules_python+//python/extensions:pip.bzl%pip

🌍 Your Environment

Operating System:


Linux baxelrod-ThinkPad 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

Output of bazel version:


Bazelisk version: v1.19.0
Build label: 8.1.1
Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
Build time: Tue Feb 25 18:50:42 2025 (1740509442)
Build timestamp: 1740509442
Build timestamp as int: 1740509442

Rules_python version:

bazel_dep(name = "rules_python", version = "1.4.0-rc1")
bazel_dep(name = "rules_uv", version = "0.68.0")

Anything else relevant?

Slack thread: https://bazelbuild.slack.com/archives/CA306CEV6/p1745423125646599

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
     blocks
    (function() {
    function addCopyButtons() {
    document.querySelectorAll('pre code').forEach(function(codeBlock) {
    if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
    codeBlock.parentElement.setAttribute('data-copy-added', 'true');
    var btn = document.createElement('button');
    btn.textContent = 'Copy';
    btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
    btn.onmouseover = function() { this.style.opacity = '1'; };
    btn.onmouseout = function() { this.style.opacity = '0.7'; };
    btn.onclick = function() {
    navigator.clipboard.writeText(codeBlock.textContent).then(function() {
    btn.textContent = 'Copied!';
    setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
    });
    };
    codeBlock.parentElement.style.position = 'relative';
    codeBlock.parentElement.appendChild(btn);
    });
    }
    addCopyButtons();
    // Re-run on dynamic content
    var observer = new MutationObserver(addCopyButtons);
    observer.observe(document.body, { childList: true, subtree: true });
    })();
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    More general support for platform_release · Issue #2821 · bazel-contrib/rules_python · GitHub
    Skip to content

    More general support for platform_release #2821

    Description

    @baxelrod-bdai

    🐞 bug report

    Description

    The >= operator should be supported for platform_release.

    🔬 Minimal Reproduction

    requirements.in has just:

    keyboard
    

    BUILD.bazel has:

    load("@rules_uv//uv:pip.bzl", "pip_compile")
    pip_compile(
    name = "generate_requirements",
    extra_args = [
    "--universal",
    ],
    requirements_in = "requirements.in",
    requirements_txt = "requirements.lock",
    )
    

    Running bazel run //:generate_requirements creates a .lock file with lots of entries like:

    pyobjc-framework-businesschat==11.0 ; platform_release >= '18.0' and sys_platform == 'darwin' \
    --hash=sha256:1f732fdace31d2abdd14b3054f27a5e0f4591c7e1bef069b6aeb4f9c8d9ec487 \
    --hash=sha256:20fe1c8c848ef3c2e132172d9a007a8aa65b08875a9ca5c27afbfc4396b16dbb \
    --hash=sha256:47a2e4da9b061daa89a6367cb0e6bb8cdea0627379dd6d5095a8fd20243d8613
    # via pyobjc
    pyobjc-framework-calendarstore==11.0 ; platform_release >= '9.0' and sys_platform == 'darwin' \
    --hash=sha256:40173f729df56b70ec14f9680962a248c3ce7b4babb46e8b0d760a13975ef174 \
    --hash=sha256:67ddc18c96bba42118fc92f1117b053c58c8888edb74193f0be67a10051cc9e2 \
    --hash=sha256:9b310fe66ac12e0feb7c8e3166034bec357a45f7f8b8916e93eddc6f199d08c8
    # via pyobjc
    

    Then when you try to bazel run anything, you get the crash:

    ERROR: /home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl:348:20: Traceback (most recent call last):
    File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 611, column 25, in _pip_impl
    mods = parse_modules(module_ctx)
    File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 482, column 36, in parse_modules
    out = _create_whl_repos(
    File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 158, column 50, in _create_whl_repos
    requirements_by_platform = parse_requirements(
    File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 231, column 40, in lambda
    parse = lambda **kwargs: _parse(self, **kwargs),
    File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 330, column 25, in marker_expr
    return _env_expr(left, op, right)
    File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 348, column 20, in _env_expr
    return fail("TODO: op unsupported: '{}'".format(op))
    Error in fail: TODO: op unsupported: '>='
    ERROR: error evaluating module extension @@rules_python+//python/extensions:pip.bzl%pip
    

    🌍 Your Environment

    Operating System:

    
    Linux baxelrod-ThinkPad 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
    

    Output of bazel version:

    
    Bazelisk version: v1.19.0
    Build label: 8.1.1
    Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
    Build time: Tue Feb 25 18:50:42 2025 (1740509442)
    Build timestamp: 1740509442
    Build timestamp as int: 1740509442
    

    Rules_python version:

    bazel_dep(name = "rules_python", version = "1.4.0-rc1")
    bazel_dep(name = "rules_uv", version = "0.68.0")
    

    Anything else relevant?

    Slack thread: https://bazelbuild.slack.com/archives/CA306CEV6/p1745423125646599

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      No labels
      No labels

      Projects

      No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' More general support for platform_release · Issue #2821 · bazel-contrib/rules_python · GitHub
      Skip to content

      More general support for platform_release #2821

      Description

      @baxelrod-bdai

      🐞 bug report

      Description

      The >= operator should be supported for platform_release.

      🔬 Minimal Reproduction

      requirements.in has just:

      keyboard
      

      BUILD.bazel has:

      load("@rules_uv//uv:pip.bzl", "pip_compile")
      pip_compile(
      name = "generate_requirements",
      extra_args = [
      "--universal",
      ],
      requirements_in = "requirements.in",
      requirements_txt = "requirements.lock",
      )
      

      Running bazel run //:generate_requirements creates a .lock file with lots of entries like:

      pyobjc-framework-businesschat==11.0 ; platform_release >= '18.0' and sys_platform == 'darwin' \
      --hash=sha256:1f732fdace31d2abdd14b3054f27a5e0f4591c7e1bef069b6aeb4f9c8d9ec487 \
      --hash=sha256:20fe1c8c848ef3c2e132172d9a007a8aa65b08875a9ca5c27afbfc4396b16dbb \
      --hash=sha256:47a2e4da9b061daa89a6367cb0e6bb8cdea0627379dd6d5095a8fd20243d8613
      # via pyobjc
      pyobjc-framework-calendarstore==11.0 ; platform_release >= '9.0' and sys_platform == 'darwin' \
      --hash=sha256:40173f729df56b70ec14f9680962a248c3ce7b4babb46e8b0d760a13975ef174 \
      --hash=sha256:67ddc18c96bba42118fc92f1117b053c58c8888edb74193f0be67a10051cc9e2 \
      --hash=sha256:9b310fe66ac12e0feb7c8e3166034bec357a45f7f8b8916e93eddc6f199d08c8
      # via pyobjc
      

      Then when you try to bazel run anything, you get the crash:

      ERROR: /home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl:348:20: Traceback (most recent call last):
      File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 611, column 25, in _pip_impl
      mods = parse_modules(module_ctx)
      File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 482, column 36, in parse_modules
      out = _create_whl_repos(
      File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 158, column 50, in _create_whl_repos
      requirements_by_platform = parse_requirements(
      File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 231, column 40, in lambda
      parse = lambda **kwargs: _parse(self, **kwargs),
      File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 330, column 25, in marker_expr
      return _env_expr(left, op, right)
      File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 348, column 20, in _env_expr
      return fail("TODO: op unsupported: '{}'".format(op))
      Error in fail: TODO: op unsupported: '>='
      ERROR: error evaluating module extension @@rules_python+//python/extensions:pip.bzl%pip
      

      🌍 Your Environment

      Operating System:

      
      Linux baxelrod-ThinkPad 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
      

      Output of bazel version:

      
      Bazelisk version: v1.19.0
      Build label: 8.1.1
      Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
      Build time: Tue Feb 25 18:50:42 2025 (1740509442)
      Build timestamp: 1740509442
      Build timestamp as int: 1740509442
      

      Rules_python version:

      bazel_dep(name = "rules_python", version = "1.4.0-rc1")
      bazel_dep(name = "rules_uv", version = "0.68.0")
      

      Anything else relevant?

      Slack thread: https://bazelbuild.slack.com/archives/CA306CEV6/p1745423125646599

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Projects

        No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' More general support for platform_release · Issue #2821 · bazel-contrib/rules_python · GitHub
        Skip to content

        More general support for platform_release #2821

        Description

        @baxelrod-bdai

        🐞 bug report

        Description

        The >= operator should be supported for platform_release.

        🔬 Minimal Reproduction

        requirements.in has just:

        keyboard
        

        BUILD.bazel has:

        load("@rules_uv//uv:pip.bzl", "pip_compile")
        pip_compile(
        name = "generate_requirements",
        extra_args = [
        "--universal",
        ],
        requirements_in = "requirements.in",
        requirements_txt = "requirements.lock",
        )
        

        Running bazel run //:generate_requirements creates a .lock file with lots of entries like:

        pyobjc-framework-businesschat==11.0 ; platform_release >= '18.0' and sys_platform == 'darwin' \
        --hash=sha256:1f732fdace31d2abdd14b3054f27a5e0f4591c7e1bef069b6aeb4f9c8d9ec487 \
        --hash=sha256:20fe1c8c848ef3c2e132172d9a007a8aa65b08875a9ca5c27afbfc4396b16dbb \
        --hash=sha256:47a2e4da9b061daa89a6367cb0e6bb8cdea0627379dd6d5095a8fd20243d8613
        # via pyobjc
        pyobjc-framework-calendarstore==11.0 ; platform_release >= '9.0' and sys_platform == 'darwin' \
        --hash=sha256:40173f729df56b70ec14f9680962a248c3ce7b4babb46e8b0d760a13975ef174 \
        --hash=sha256:67ddc18c96bba42118fc92f1117b053c58c8888edb74193f0be67a10051cc9e2 \
        --hash=sha256:9b310fe66ac12e0feb7c8e3166034bec357a45f7f8b8916e93eddc6f199d08c8
        # via pyobjc
        

        Then when you try to bazel run anything, you get the crash:

        ERROR: /home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl:348:20: Traceback (most recent call last):
        File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 611, column 25, in _pip_impl
        mods = parse_modules(module_ctx)
        File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 482, column 36, in parse_modules
        out = _create_whl_repos(
        File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 158, column 50, in _create_whl_repos
        requirements_by_platform = parse_requirements(
        File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 231, column 40, in lambda
        parse = lambda **kwargs: _parse(self, **kwargs),
        File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 330, column 25, in marker_expr
        return _env_expr(left, op, right)
        File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 348, column 20, in _env_expr
        return fail("TODO: op unsupported: '{}'".format(op))
        Error in fail: TODO: op unsupported: '>='
        ERROR: error evaluating module extension @@rules_python+//python/extensions:pip.bzl%pip
        

        🌍 Your Environment

        Operating System:

        
        Linux baxelrod-ThinkPad 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
        

        Output of bazel version:

        
        Bazelisk version: v1.19.0
        Build label: 8.1.1
        Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
        Build time: Tue Feb 25 18:50:42 2025 (1740509442)
        Build timestamp: 1740509442
        Build timestamp as int: 1740509442
        

        Rules_python version:

        bazel_dep(name = "rules_python", version = "1.4.0-rc1")
        bazel_dep(name = "rules_uv", version = "0.68.0")
        

        Anything else relevant?

        Slack thread: https://bazelbuild.slack.com/archives/CA306CEV6/p1745423125646599

        Metadata

        Metadata

        Assignees

        No one assigned

          Labels

          No labels
          No labels

          Projects

          No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' More general support for platform_release · Issue #2821 · bazel-contrib/rules_python · GitHub
          Skip to content

          More general support for platform_release #2821

          Description

          @baxelrod-bdai

          🐞 bug report

          Description

          The >= operator should be supported for platform_release.

          🔬 Minimal Reproduction

          requirements.in has just:

          keyboard
          

          BUILD.bazel has:

          load("@rules_uv//uv:pip.bzl", "pip_compile")
          pip_compile(
          name = "generate_requirements",
          extra_args = [
          "--universal",
          ],
          requirements_in = "requirements.in",
          requirements_txt = "requirements.lock",
          )
          

          Running bazel run //:generate_requirements creates a .lock file with lots of entries like:

          pyobjc-framework-businesschat==11.0 ; platform_release >= '18.0' and sys_platform == 'darwin' \
          --hash=sha256:1f732fdace31d2abdd14b3054f27a5e0f4591c7e1bef069b6aeb4f9c8d9ec487 \
          --hash=sha256:20fe1c8c848ef3c2e132172d9a007a8aa65b08875a9ca5c27afbfc4396b16dbb \
          --hash=sha256:47a2e4da9b061daa89a6367cb0e6bb8cdea0627379dd6d5095a8fd20243d8613
          # via pyobjc
          pyobjc-framework-calendarstore==11.0 ; platform_release >= '9.0' and sys_platform == 'darwin' \
          --hash=sha256:40173f729df56b70ec14f9680962a248c3ce7b4babb46e8b0d760a13975ef174 \
          --hash=sha256:67ddc18c96bba42118fc92f1117b053c58c8888edb74193f0be67a10051cc9e2 \
          --hash=sha256:9b310fe66ac12e0feb7c8e3166034bec357a45f7f8b8916e93eddc6f199d08c8
          # via pyobjc
          

          Then when you try to bazel run anything, you get the crash:

          ERROR: /home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl:348:20: Traceback (most recent call last):
          File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 611, column 25, in _pip_impl
          mods = parse_modules(module_ctx)
          File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 482, column 36, in parse_modules
          out = _create_whl_repos(
          File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 158, column 50, in _create_whl_repos
          requirements_by_platform = parse_requirements(
          File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 231, column 40, in lambda
          parse = lambda **kwargs: _parse(self, **kwargs),
          File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 330, column 25, in marker_expr
          return _env_expr(left, op, right)
          File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 348, column 20, in _env_expr
          return fail("TODO: op unsupported: '{}'".format(op))
          Error in fail: TODO: op unsupported: '>='
          ERROR: error evaluating module extension @@rules_python+//python/extensions:pip.bzl%pip
          

          🌍 Your Environment

          Operating System:

          
          Linux baxelrod-ThinkPad 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
          

          Output of bazel version:

          
          Bazelisk version: v1.19.0
          Build label: 8.1.1
          Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
          Build time: Tue Feb 25 18:50:42 2025 (1740509442)
          Build timestamp: 1740509442
          Build timestamp as int: 1740509442
          

          Rules_python version:

          bazel_dep(name = "rules_python", version = "1.4.0-rc1")
          bazel_dep(name = "rules_uv", version = "0.68.0")
          

          Anything else relevant?

          Slack thread: https://bazelbuild.slack.com/archives/CA306CEV6/p1745423125646599

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Projects

            No projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' More general support for platform_release · Issue #2821 · bazel-contrib/rules_python · GitHub
            Skip to content

            More general support for platform_release #2821

            Description

            @baxelrod-bdai

            🐞 bug report

            Description

            The >= operator should be supported for platform_release.

            🔬 Minimal Reproduction

            requirements.in has just:

            keyboard
            

            BUILD.bazel has:

            load("@rules_uv//uv:pip.bzl", "pip_compile")
            pip_compile(
            name = "generate_requirements",
            extra_args = [
            "--universal",
            ],
            requirements_in = "requirements.in",
            requirements_txt = "requirements.lock",
            )
            

            Running bazel run //:generate_requirements creates a .lock file with lots of entries like:

            pyobjc-framework-businesschat==11.0 ; platform_release >= '18.0' and sys_platform == 'darwin' \
            --hash=sha256:1f732fdace31d2abdd14b3054f27a5e0f4591c7e1bef069b6aeb4f9c8d9ec487 \
            --hash=sha256:20fe1c8c848ef3c2e132172d9a007a8aa65b08875a9ca5c27afbfc4396b16dbb \
            --hash=sha256:47a2e4da9b061daa89a6367cb0e6bb8cdea0627379dd6d5095a8fd20243d8613
            # via pyobjc
            pyobjc-framework-calendarstore==11.0 ; platform_release >= '9.0' and sys_platform == 'darwin' \
            --hash=sha256:40173f729df56b70ec14f9680962a248c3ce7b4babb46e8b0d760a13975ef174 \
            --hash=sha256:67ddc18c96bba42118fc92f1117b053c58c8888edb74193f0be67a10051cc9e2 \
            --hash=sha256:9b310fe66ac12e0feb7c8e3166034bec357a45f7f8b8916e93eddc6f199d08c8
            # via pyobjc
            

            Then when you try to bazel run anything, you get the crash:

            ERROR: /home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl:348:20: Traceback (most recent call last):
            File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 611, column 25, in _pip_impl
            mods = parse_modules(module_ctx)
            File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 482, column 36, in parse_modules
            out = _create_whl_repos(
            File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 158, column 50, in _create_whl_repos
            requirements_by_platform = parse_requirements(
            File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 231, column 40, in lambda
            parse = lambda **kwargs: _parse(self, **kwargs),
            File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 330, column 25, in marker_expr
            return _env_expr(left, op, right)
            File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 348, column 20, in _env_expr
            return fail("TODO: op unsupported: '{}'".format(op))
            Error in fail: TODO: op unsupported: '>='
            ERROR: error evaluating module extension @@rules_python+//python/extensions:pip.bzl%pip
            

            🌍 Your Environment

            Operating System:

            
            Linux baxelrod-ThinkPad 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
            

            Output of bazel version:

            
            Bazelisk version: v1.19.0
            Build label: 8.1.1
            Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
            Build time: Tue Feb 25 18:50:42 2025 (1740509442)
            Build timestamp: 1740509442
            Build timestamp as int: 1740509442
            

            Rules_python version:

            bazel_dep(name = "rules_python", version = "1.4.0-rc1")
            bazel_dep(name = "rules_uv", version = "0.68.0")
            

            Anything else relevant?

            Slack thread: https://bazelbuild.slack.com/archives/CA306CEV6/p1745423125646599

            Metadata

            Metadata

            Assignees

            No one assigned

              Labels

              No labels
              No labels

              Projects

              No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); More general support for platform_release · Issue #2821 · bazel-contrib/rules_python · GitHub
              Skip to content

              More general support for platform_release #2821

              Description

              @baxelrod-bdai

              🐞 bug report

              Description

              The >= operator should be supported for platform_release.

              🔬 Minimal Reproduction

              requirements.in has just:

              keyboard
              

              BUILD.bazel has:

              load("@rules_uv//uv:pip.bzl", "pip_compile")
              pip_compile(
              name = "generate_requirements",
              extra_args = [
              "--universal",
              ],
              requirements_in = "requirements.in",
              requirements_txt = "requirements.lock",
              )
              

              Running bazel run //:generate_requirements creates a .lock file with lots of entries like:

              pyobjc-framework-businesschat==11.0 ; platform_release >= '18.0' and sys_platform == 'darwin' \
              --hash=sha256:1f732fdace31d2abdd14b3054f27a5e0f4591c7e1bef069b6aeb4f9c8d9ec487 \
              --hash=sha256:20fe1c8c848ef3c2e132172d9a007a8aa65b08875a9ca5c27afbfc4396b16dbb \
              --hash=sha256:47a2e4da9b061daa89a6367cb0e6bb8cdea0627379dd6d5095a8fd20243d8613
              # via pyobjc
              pyobjc-framework-calendarstore==11.0 ; platform_release >= '9.0' and sys_platform == 'darwin' \
              --hash=sha256:40173f729df56b70ec14f9680962a248c3ce7b4babb46e8b0d760a13975ef174 \
              --hash=sha256:67ddc18c96bba42118fc92f1117b053c58c8888edb74193f0be67a10051cc9e2 \
              --hash=sha256:9b310fe66ac12e0feb7c8e3166034bec357a45f7f8b8916e93eddc6f199d08c8
              # via pyobjc
              

              Then when you try to bazel run anything, you get the crash:

              ERROR: /home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl:348:20: Traceback (most recent call last):
              File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 611, column 25, in _pip_impl
              mods = parse_modules(module_ctx)
              File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 482, column 36, in parse_modules
              out = _create_whl_repos(
              File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/extension.bzl", line 158, column 50, in _create_whl_repos
              requirements_by_platform = parse_requirements(
              File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 231, column 40, in lambda
              parse = lambda **kwargs: _parse(self, **kwargs),
              File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/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 "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 330, column 25, in marker_expr
              return _env_expr(left, op, right)
              File "/home/baxelrod/.cache/bazel/_bazel_baxelrod/223f490fa0c2f2ec38707ddac3dd6272/external/rules_python+/python/private/pypi/pep508_evaluate.bzl", line 348, column 20, in _env_expr
              return fail("TODO: op unsupported: '{}'".format(op))
              Error in fail: TODO: op unsupported: '>='
              ERROR: error evaluating module extension @@rules_python+//python/extensions:pip.bzl%pip
              

              🌍 Your Environment

              Operating System:

              
              Linux baxelrod-ThinkPad 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
              

              Output of bazel version:

              
              Bazelisk version: v1.19.0
              Build label: 8.1.1
              Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
              Build time: Tue Feb 25 18:50:42 2025 (1740509442)
              Build timestamp: 1740509442
              Build timestamp as int: 1740509442
              

              Rules_python version:

              bazel_dep(name = "rules_python", version = "1.4.0-rc1")
              bazel_dep(name = "rules_uv", version = "0.68.0")
              

              Anything else relevant?

              Slack thread: https://bazelbuild.slack.com/archives/CA306CEV6/p1745423125646599

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Projects

                No projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions