)]}'
{
  "commit": "bfad5078acee76f9743e6f1210784288571b0c0c",
  "tree": "862a1004835cb202a0bce100b7d63f02955c886e",
  "parents": [
    "67e233f491c16f9083181c40957223724e7a61b8"
  ],
  "author": {
    "name": "Ignas Anikevicius",
    "email": "240938+aignas@users.noreply.github.com",
    "time": "Sun Mar 30 23:21:05 2025 +0900"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Mar 30 14:21:05 2025 +0000"
  },
  "message": "refactor(pypi): implement PEP508 compliant marker evaluation (#2692)\n\nThis implements the PEP508 compliant marker evaluation in starlark and\nremoves the need for the Python interpreter when evaluating requirements\nfiles passed to `pip.parse`. This makes the evaluation faster and allows\nus to fix a few known issues (#2690).\n\nIn the future the intent is to move the `METADATA` parsing to pure\nstarlark so that the `RequiresDist` could be parsed in starlark at the\nmacro evaluation or analysis phases. This should make it possible to\nmore easily solve the design problem that more and more things need to\nbe passed to `whl_library` as args to have a robust dependency parsing:\n* #2319 needs the full Python version to have correct cross-platform\ncompatible `METADATA` parsing and passing it to `Python` and back makes\n  it difficult/annoying to implement.\n* Parsing the `METADATA` file requires the precise list of target\n  platform or the list of available packages in the `requirements.txt`.\n  This means that without it we cannot trim the dependency tree in the\n  `whl_library`. Doing this at macro loading phase allows us to depend\n  on `.bzl` files in the `hub_repository` and more effectively pass\n  information.\n\nI can remotely see that this could become useful in `py_wheel` or an\nbuilding\nwheels from sdists as the environment markers may be present in various\nsource\nmetadata as well. What is more `uv.lock` file has the env markers as\npart of\nthe lock file information, so this might be useful there.\n\nWork towards #2423\nWork towards #260\nSplit from #2629",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "79eb4dba46ad8d183198283ff4985ca82d70c1ab",
      "old_mode": 33188,
      "old_path": "python/private/pypi/BUILD.bazel",
      "new_id": "21e05f2895c955cf3cb4a2572754367f2fe02546",
      "new_mode": 33188,
      "new_path": "python/private/pypi/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "028657f716f7b808f673af6b2a727494fe01219a",
      "old_mode": 33188,
      "old_path": "python/private/pypi/evaluate_markers.bzl",
      "new_id": "1d4c30753f58f2f933fcd225a9a1c9e5d96878fb",
      "new_mode": 33188,
      "new_path": "python/private/pypi/evaluate_markers.bzl"
    },
    {
      "type": "modify",
      "old_id": "be3067d04acd8d66831285bf548c7f5d77982300",
      "old_mode": 33188,
      "old_path": "python/private/pypi/extension.bzl",
      "new_id": "490bd05f11b3a6e2202300ce8ae34595ee907177",
      "new_mode": 33188,
      "new_path": "python/private/pypi/extension.bzl"
    },
    {
      "type": "modify",
      "old_id": "dbff44ecb333742b3c441956b2fa8b3f89bf6b41",
      "old_mode": 33188,
      "old_path": "python/private/pypi/parse_requirements.bzl",
      "new_id": "7aadc15eac01a81852f0e9b98a9a531f4274d614",
      "new_mode": 33188,
      "new_path": "python/private/pypi/parse_requirements.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e74352def2ee5bec510986d8aa338c0b91fa34c9",
      "new_mode": 33188,
      "new_path": "python/private/pypi/pep508.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "17d41871d188f378a28be68cf01ba29f7a3f1c91",
      "new_mode": 33188,
      "new_path": "python/private/pypi/pep508_env.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f45eb75cdb21650a7f3bbe395291453dea33f2c2",
      "new_mode": 33188,
      "new_path": "python/private/pypi/pep508_evaluate.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "618ffaf17a633e2b85910f9e422271914a10c2c7",
      "new_mode": 33188,
      "new_path": "python/private/pypi/pep508_req.bzl"
    },
    {
      "type": "modify",
      "old_id": "7976cfaae96b9ca65742ae05ccb088ce18758b76",
      "old_mode": 33188,
      "old_path": "python/private/pypi/pip_repository.bzl",
      "new_id": "01a541cf2f2c835c80f9d73cffed84f7b6abbd14",
      "new_mode": 33188,
      "new_path": "python/private/pypi/pip_repository.bzl"
    },
    {
      "type": "delete",
      "old_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "old_mode": 33188,
      "old_path": "python/private/pypi/requirements_parser/BUILD.bazel",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "c899a943cc0f51c6c44230363f32c2393cecc5f2",
      "old_mode": 33261,
      "old_path": "python/private/pypi/requirements_parser/resolve_target_platforms.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "73d6b130aed3a92b5e012c920ea9d8611b8f7a4c",
      "old_mode": 33188,
      "old_path": "python/private/semver.bzl",
      "new_id": "cc9ae6ecb6f2f9839372ff189b1fa0c1e23122f7",
      "new_mode": 33188,
      "new_path": "python/private/semver.bzl"
    },
    {
      "type": "modify",
      "old_id": "1b18d2a3391f4f19ba0421427e9e3dff012e5349",
      "old_mode": 33188,
      "old_path": "tests/pypi/extension/extension_tests.bzl",
      "new_id": "858c026df84ebf37e98b987afe6d9c0a172666c5",
      "new_mode": 33188,
      "new_path": "tests/pypi/extension/extension_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "8edc2689bf4eb823f3bcdab66552a1e70bb45d26",
      "old_mode": 33188,
      "old_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl",
      "new_id": "7bbd696afa7297fc04b15b80a7728eb045b1f38b",
      "new_mode": 33188,
      "new_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b795db0591b3bf0bf925cb9a47cd391c71540c20",
      "new_mode": 33188,
      "new_path": "tests/pypi/pep508/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "80b70f4dad73c1bea13269a3ed1ac09471a3ad71",
      "new_mode": 33188,
      "new_path": "tests/pypi/pep508/evaluate_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "9d13402c9210edfd327ede59df9618337cca7983",
      "old_mode": 33188,
      "old_path": "tests/semver/semver_test.bzl",
      "new_id": "aef3deca82ad8dcfc43278cb80aaf837a9831fd9",
      "new_mode": 33188,
      "new_path": "tests/semver/semver_test.bzl"
    }
  ]
}
