)]}'
{
  "commit": "965dd51065e0a9bebd157518b19a2b1bb5f24321",
  "tree": "5ad6bcadbbca9245986e051850682bab65d177e6",
  "parents": [
    "ca91cea20a19a73ad81eccd4a497b72acc842633"
  ],
  "author": {
    "name": "Yuji Wang",
    "email": "146617342+Yanpei-Wang@users.noreply.github.com",
    "time": "Wed Apr 02 22:57:41 2025 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Apr 02 14:57:41 2025 +0000"
  },
  "message": "feat(pypi/parse_requirements): get dists by version when no hash provied (#2695)\n\nThis pull request modifies the SimpleAPI HTML parsing to add a new\nfield where we can get the `sha256` values by package version. This\nallows us to very easily fallback to all packages of a particular\nversion when using `experimental_index_url` if the hashes are not\nspecified.\n\nThe code deciding which packages to query the SimpleAPI for has been\nalso modified to only omit queries for packages that are included via\ndirect URL references.\n\nIf we fail to get the data from the SimpleAPI, we will fallback to\n`pip` and try to install it via the legacy behaviour.\n\nFixes #2023\nWork towards #260\nWork towards #1357\nWork towards #2363\n\n---------\n\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5974a656a66c9742278640122289b82b14c17bf4",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "bbcf2561c8693c1280711dd550ef07b9e5375aff",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "039200dfd460f5bfc0b55f0c5ab1984ba3166b2e",
      "old_mode": 33188,
      "old_path": "docs/pypi-dependencies.md",
      "new_id": "6cc0da6cb492a2512b055f75ec1976087002f5c2",
      "new_mode": 33188,
      "new_path": "docs/pypi-dependencies.md"
    },
    {
      "type": "modify",
      "old_id": "490bd05f11b3a6e2202300ce8ae34595ee907177",
      "old_mode": 33188,
      "old_path": "python/private/pypi/extension.bzl",
      "new_id": "f782e69a454670d0736f054b0d368a728aea54f9",
      "new_mode": 33188,
      "new_path": "python/private/pypi/extension.bzl"
    },
    {
      "type": "modify",
      "old_id": "7aadc15eac01a81852f0e9b98a9a531f4274d614",
      "old_mode": 33188,
      "old_path": "python/private/pypi/parse_requirements.bzl",
      "new_id": "3280ce8df124233440c3aa0b8298e83e55f8cffa",
      "new_mode": 33188,
      "new_path": "python/private/pypi/parse_requirements.bzl"
    },
    {
      "type": "modify",
      "old_id": "e549e7618133aa0f5cbd27e54ac980f3df23d158",
      "old_mode": 33188,
      "old_path": "python/private/pypi/parse_simpleapi_html.bzl",
      "new_id": "8c6f739fe3b870e8b08ce6172d3744bf4cf98349",
      "new_mode": 33188,
      "new_path": "python/private/pypi/parse_simpleapi_html.bzl"
    },
    {
      "type": "modify",
      "old_id": "ef39fb8723479ae7055eb351b2ffe3e258b8d648",
      "old_mode": 33188,
      "old_path": "python/private/pypi/simpleapi_download.bzl",
      "new_id": "e8d7d0941ad50ef62e8e9a55277387b622104303",
      "new_mode": 33188,
      "new_path": "python/private/pypi/simpleapi_download.bzl"
    },
    {
      "type": "modify",
      "old_id": "38ac9dcd9247a137bb3a5c6ec8bc81179bc9c69f",
      "old_mode": 33188,
      "old_path": "python/private/pypi/whl_library.bzl",
      "new_id": "2904f85f1bda1fc862ad04c5d7ca9c4b8fc0ae34",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_library.bzl"
    },
    {
      "type": "modify",
      "old_id": "48bbd1a9b279cd3491c2d2e4757f68c3597982c5",
      "old_mode": 33188,
      "old_path": "python/private/pypi/whl_repo_name.bzl",
      "new_id": "02a7c8142c79b0cac3c595002f209d95908bdedb",
      "new_mode": 33188,
      "new_path": "python/private/pypi/whl_repo_name.bzl"
    },
    {
      "type": "modify",
      "old_id": "858c026df84ebf37e98b987afe6d9c0a172666c5",
      "old_mode": 33188,
      "old_path": "tests/pypi/extension/extension_tests.bzl",
      "new_id": "3a91c7b1083d0bb57b05166a2fe4dc13b915978b",
      "new_mode": 33188,
      "new_path": "tests/pypi/extension/extension_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "7bbd696afa7297fc04b15b80a7728eb045b1f38b",
      "old_mode": 33188,
      "old_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl",
      "new_id": "c50482127be5b1f9baf81de2024da54c49edb8d0",
      "new_mode": 33188,
      "new_path": "tests/pypi/parse_requirements/parse_requirements_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "d3c42a88649491b5c5cbd163d38e3f8f42e45a21",
      "old_mode": 33188,
      "old_path": "tests/pypi/parse_simpleapi_html/parse_simpleapi_html_tests.bzl",
      "new_id": "abaa7a6a4997e133e7e5ce4c397e3e78eaddd128",
      "new_mode": 33188,
      "new_path": "tests/pypi/parse_simpleapi_html/parse_simpleapi_html_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "964d3e25eaedf511d1c1c1dbc6bc3dfc4d4e2d97",
      "old_mode": 33188,
      "old_path": "tests/pypi/simpleapi_download/simpleapi_download_tests.bzl",
      "new_id": "ce214d6e349ec0a46f546049faf8379393fbc76d",
      "new_mode": 33188,
      "new_path": "tests/pypi/simpleapi_download/simpleapi_download_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "000941b55b2a12571598826d378e0cc786a980b3",
      "old_mode": 33188,
      "old_path": "tests/pypi/whl_repo_name/whl_repo_name_tests.bzl",
      "new_id": "f0d1d059e1b760c30f24d3e2d8e3fc0c2243dd82",
      "new_mode": 33188,
      "new_path": "tests/pypi/whl_repo_name/whl_repo_name_tests.bzl"
    }
  ]
}
