)]}'
{
  "commit": "846dfd0c5699da8cc2e42067e8ccd0f5a1704328",
  "tree": "4018ad7878d330a82fe71de411c7853a659727bb",
  "parents": [
    "1f6cc5cb610fd431e034b537d72d73db2d39ebe3"
  ],
  "author": {
    "name": "Ignas Anikevicius",
    "email": "240938+aignas@users.noreply.github.com",
    "time": "Thu Nov 20 15:27:34 2025 +0900"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Nov 20 06:27:34 2025 +0000"
  },
  "message": "feat(toolchain): drop 3.8 and print info level messages about it (#3387)\n\nBefore this PR we had to have at least one 3.8 toolchain to not break\nthings.\nWith this we should be good to drop it.\n\nAny python_version 3.8 registrations will be dropped if there are no\nactual\nURLs configured, which means that 3.8 will not be selected. The same\nwith\npip.parse, we will just ignore it and won\u0027t add it to the hub. \n\nIn order to ensure that `is_python_3.x` flags continue working, we\njust alias them to `@platforms//:incompatible`. No deprecation message\nis\nprinted.\n\nWork towards #2704 \n\nNext step for anyone interested and who has more time than me these\ndays:\n- [ ] Remove the 3.9 URLs and add them individually to our examples to\nshow\n      that one can do that.\n- [ ] Update the examples to no longer use 3.9, because it is a\nmaintenance burden.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3089b9c6cf5c0dec23a6ab3526a8250d584e1b6b",
      "old_mode": 33188,
      "old_path": "python/private/config_settings.bzl",
      "new_id": "91fbbba8cb2d95a4f30640c6d3ffb5d4b0d2c2b1",
      "new_mode": 33188,
      "new_path": "python/private/config_settings.bzl"
    },
    {
      "type": "modify",
      "old_id": "0292d6c77d38473b6511f5009fc77a38f8992c44",
      "old_mode": 33188,
      "old_path": "python/private/full_version.bzl",
      "new_id": "0be5b44daffb593416dd4e4cead86962d00d1b34",
      "new_mode": 33188,
      "new_path": "python/private/full_version.bzl"
    },
    {
      "type": "modify",
      "old_id": "7cf60ff85f7773373ccbaf8c60c8adede3d35d2d",
      "old_mode": 33188,
      "old_path": "python/private/pypi/hub_builder.bzl",
      "new_id": "bd6008128bb12129b37c4c1c7c70182244052cee",
      "new_mode": 33188,
      "new_path": "python/private/pypi/hub_builder.bzl"
    },
    {
      "type": "modify",
      "old_id": "a1fe80e0ceb83f84f08f416782805045c5870bab",
      "old_mode": 33188,
      "old_path": "python/private/python.bzl",
      "new_id": "22f4753a62d2a566e2d7510f0a4f53ed18c66114",
      "new_mode": 33188,
      "new_path": "python/private/python.bzl"
    },
    {
      "type": "modify",
      "old_id": "7e1b36b207affb7ea47cd6339040785f0a4808a2",
      "old_mode": 33188,
      "old_path": "python/versions.bzl",
      "new_id": "842fb39658963ba7496c0899efaba72d92ce2411",
      "new_mode": 33188,
      "new_path": "python/versions.bzl"
    },
    {
      "type": "modify",
      "old_id": "f2e87274f8a7bc70a0888b165c7fe293ceb55b3b",
      "old_mode": 33188,
      "old_path": "tests/python/python_tests.bzl",
      "new_id": "ff02cc859e639f936f59c557324330a1b5d84cec",
      "new_mode": 33188,
      "new_path": "tests/python/python_tests.bzl"
    }
  ]
}
