)]}'
{
  "commit": "a6cb620f0c0c34082040b0560d4dd2e11e39715e",
  "tree": "b7d4b25887124ff91d75d1b811509c9fd8830113",
  "parents": [
    "8d31c5f297412d0d28d0f28327aab570e3f8adcb"
  ],
  "author": {
    "name": "Ignas Anikevicius",
    "email": "240938+aignas@users.noreply.github.com",
    "time": "Sun May 19 12:38:03 2024 +0900"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun May 19 03:38:03 2024 +0000"
  },
  "message": "feat(pip): support specifying requirements per (os, arch) (#1885)\n\nThis PR implements a better way of specifying the requirements files for\ndifferent (os, cpu) tuples. It allows for more granular specification\nthan what\nis available today and allows for future extension to have all of the\nsources\nin the select statements in the hub repository.\n\nThis is replacing the previous selection of the requirements and there\nare a\nfew differences in behaviour that should not be visible to the external\nuser.\nInstead of selecting the right file which we should then use to create\n`whl_library` instances we parse all of the provided requirements files\nand\nmerge them based on the contents. The merging is done based on the\nblocks\nwithin the requirement file and this allows the starlark code to\nunderstand if\nwe are working with different versions of the same package on different\ntarget\nplatforms.\n\nFixes #1868\nWork towards #1643, #735",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "09b9aaf7ee46a176c90133e502a85d499ab93df8",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "430c5c84f471074e46ecae53b223cabcb00fbbe0",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "8acde16c331f9a9f1e4d69cb72e744381f45dc67",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "7064dfc84f75a7547d919d8e57610b33807e14c3",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "e73c0c6a560c506f19db0e18da0eebcb0afaef13",
      "old_mode": 33188,
      "old_path": "docs/sphinx/pip.md",
      "new_id": "e1c8e343f071b4966d2bb1dfa4b96e820b71b332",
      "new_mode": 33188,
      "new_path": "docs/sphinx/pip.md"
    },
    {
      "type": "modify",
      "old_id": "1134487145e94462f016837f88f92e7421432629",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/MODULE.bazel",
      "new_id": "0d30161147c6633fd00b7a499d3a53bfd8c0f476",
      "new_mode": 33188,
      "new_path": "examples/bzlmod/MODULE.bazel"
    },
    {
      "type": "delete",
      "old_id": "47eb7ca0fb58b186b4ed2b81e9cf6ff8365a43d5",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/tests/dupe_requirements/BUILD.bazel",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "1139dc52523e6be01e67046f53e8b9d1396b8dfc",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/tests/dupe_requirements/dupe_requirements_test.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "b1f623395aafbda4c101f8cd1d050d98ef321995",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/tests/dupe_requirements/requirements.in",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "785f5566248ba5fcbf1376b4c9df9cd562769d0d",
      "old_mode": 33188,
      "old_path": "examples/bzlmod/tests/dupe_requirements/requirements.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "b0e38f2218333e570614ebdb84b79d2ce797d62c",
      "old_mode": 33188,
      "old_path": "examples/pip_parse/MODULE.bazel",
      "new_id": "f9ca90833f5a79987e93febe2d4135e7fa2503a5",
      "new_mode": 33188,
      "new_path": "examples/pip_parse/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "de5d187262ddba0fc80efd33aaaeec4729305f7f",
      "old_mode": 33188,
      "old_path": "examples/pip_parse_vendored/requirements.bzl",
      "new_id": "5c2391bd4c580f6278639ffa22a031c78643880d",
      "new_mode": 33188,
      "new_path": "examples/pip_parse_vendored/requirements.bzl"
    },
    {
      "type": "modify",
      "old_id": "e794075af0a7488f8b37dfe7c1d8e96ab0be3110",
      "old_mode": 33188,
      "old_path": "python/pip_install/BUILD.bazel",
      "new_id": "91f2ec7b59e67218ab94716120c35ca835441010",
      "new_mode": 33188,
      "new_path": "python/pip_install/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "db6736836f6c42d53a60ca010b9a3792c33b6758",
      "old_mode": 33188,
      "old_path": "python/pip_install/pip_repository.bzl",
      "new_id": "17d80838e04e84a5ac7a2729a4b9434b13cde1ce",
      "new_mode": 33188,
      "new_path": "python/pip_install/pip_repository.bzl"
    },
    {
      "type": "modify",
      "old_id": "8e17720374eb72858624820352e92b5bfa1cba33",
      "old_mode": 33188,
      "old_path": "python/pip_install/pip_repository_requirements.bzl.tmpl",
      "new_id": "07b4b08148e33a9107651ae17d99b1d520749a53",
      "new_mode": 33188,
      "new_path": "python/pip_install/pip_repository_requirements.bzl.tmpl"
    },
    {
      "type": "modify",
      "old_id": "181175679a5b33bafd0fc932c293e2309cd01f5a",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "45f50effb04b514abba271327a766e837f78a289",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9edd3380bb5f88753d79ceb78dc4125364a4980f",
      "old_mode": 33188,
      "old_path": "python/private/bzlmod/BUILD.bazel",
      "new_id": "2eab575726f17a780c04efc804f10770b08fa95d",
      "new_mode": 33188,
      "new_path": "python/private/bzlmod/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "ce681259edcf96a1535389ff3daf5e8b5cc01858",
      "old_mode": 33188,
      "old_path": "python/private/bzlmod/pip.bzl",
      "new_id": "80ee852573fd054fd6db0b4fa4f24535491a142f",
      "new_mode": 33188,
      "new_path": "python/private/bzlmod/pip.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "633062f399052aa3f71587fa3052bf0a6fa586f6",
      "new_mode": 33188,
      "new_path": "python/private/normalize_platform.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f9d7a0538650f620bc617c687be93a65e8c66fb5",
      "new_mode": 33188,
      "new_path": "python/private/parse_requirements.bzl"
    },
    {
      "type": "modify",
      "old_id": "28f1007b48ffb3724ecd37cfbe99f01e3359a013",
      "old_mode": 33188,
      "old_path": "python/private/pypi_index.bzl",
      "new_id": "64d908e32b533f353493a86644b6cd60f518d2cf",
      "new_mode": 33188,
      "new_path": "python/private/pypi_index.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "470a8c9f5a018212276289bc67a43b7ca6825329",
      "new_mode": 33188,
      "new_path": "python/private/pypi_index_sources.bzl"
    },
    {
      "type": "modify",
      "old_id": "4e17f2b4c7bf153ba6e5575d683d1bcd3d67bce7",
      "old_mode": 33188,
      "old_path": "python/private/whl_target_platforms.bzl",
      "new_id": "14e178a66bbf5d00f86da14f3771d9af56441438",
      "new_mode": 33188,
      "new_path": "python/private/whl_target_platforms.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3d7976e406dec5290db1789bc9853309661379b6",
      "new_mode": 33188,
      "new_path": "tests/private/parse_requirements/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0d6cd4e0e02738ecb5dc863aa29713e32d21fd49",
      "new_mode": 33188,
      "new_path": "tests/private/parse_requirements/parse_requirements_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "e2122b5eebc5803c561893af6b40e70a9e53dcc2",
      "old_mode": 33188,
      "old_path": "tests/private/pypi_index/pypi_index_tests.bzl",
      "new_id": "fa381065b16164824c99d78234bfddc4dc9885c9",
      "new_mode": 33188,
      "new_path": "tests/private/pypi_index/pypi_index_tests.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "212615f48036a0872ecf2bc564eb448081aa9457",
      "new_mode": 33188,
      "new_path": "tests/private/pypi_index_sources/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "48d790fc68984e6ae0c5fdf5ac0471c08c27128c",
      "new_mode": 33188,
      "new_path": "tests/private/pypi_index_sources/pypi_index_sources_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "0d6f97d7a5a66d06b9644a5203922f4c75a414bd",
      "old_mode": 33188,
      "old_path": "tests/private/whl_target_platforms/select_whl_tests.bzl",
      "new_id": "bed6d6633c31ba3a3d3ea5629ef62e7650ceb867",
      "new_mode": 33188,
      "new_path": "tests/private/whl_target_platforms/select_whl_tests.bzl"
    }
  ]
}
