)]}'
{
  "log": [
    {
      "commit": "2605b063433c4241ea7c6ae51c4929a6ce769322",
      "tree": "8daa1d8eb8d130e91d15909128eff7dd96faf78f",
      "parents": [
        "0c86bf6089724c53957706a57f8cf5093a8050fc",
        "fbff48e34f70701ffa0a4b8a9a94063d2df21c27"
      ],
      "author": {
        "name": "Ulises Mendez Martinez",
        "email": "umendez@google.com",
        "time": "Tue Sep 15 15:42:40 2026 -0700"
      },
      "committer": {
        "name": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Sep 15 15:42:40 2026 -0700"
      },
      "message": "Upgrade bazelbuild-rules_python to 1.7.0 am: fbff48e34f\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/external/bazelbuild-rules_python/+/42159511\n\nChange-Id: If6a931fec1795b9f5fe67499e70c3068d7d3f697\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "fbff48e34f70701ffa0a4b8a9a94063d2df21c27",
      "tree": "8daa1d8eb8d130e91d15909128eff7dd96faf78f",
      "parents": [
        "e2c2b0aa8f711fe28d756660f19e3ae9d2bc387a",
        "d3ea893113375b0c0f788c3315d8a8f488d69af6"
      ],
      "author": {
        "name": "Ulises Mendez Martinez",
        "email": "umendez@google.com",
        "time": "Mon Sep 14 12:16:51 2026 +0000"
      },
      "committer": {
        "name": "Ulises Mendez Martinez",
        "email": "umendez@google.com",
        "time": "Mon Sep 14 12:17:00 2026 +0000"
      },
      "message": "Upgrade bazelbuild-rules_python to 1.7.0\n\nIn preparation for the Bazel 9 upgrade, upgrade rules_python\nto 1.7.0.\n\nBug: 495395547\nTest: tools/bazel test //build/kernel/kleaf/tests/zip_test:zip_content_test\nChange-Id: I584ecc11ec007bd9edaad159fe06285cf3165825\n"
    },
    {
      "commit": "0c86bf6089724c53957706a57f8cf5093a8050fc",
      "tree": "7a908bf053d5d6b49898904d16ba7e78beacb47a",
      "parents": [
        "7882d1426d5bbb25f2854ec3d74c6c114cfe7207",
        "e2c2b0aa8f711fe28d756660f19e3ae9d2bc387a"
      ],
      "author": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Mon Sep 14 03:27:34 2026 -0700"
      },
      "committer": {
        "name": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Sep 14 03:27:34 2026 -0700"
      },
      "message": "Revert \"ANDROID: kleaf: fix 2-stage bootstrapping with our hermetic Python.\" am: e2c2b0aa8f\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/external/bazelbuild-rules_python/+/40823040\n\nChange-Id: Ic8111ba96eec2ce9e7fafff4572843e0dea6ceb0\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "7882d1426d5bbb25f2854ec3d74c6c114cfe7207",
      "tree": "7f5cf890c5305e8db21a4d44c22ddd20f9ce2d9b",
      "parents": [
        "9f81aae31d8f963b08a958eb3517a9b325df01cc",
        "3b048dc3a7ff0f5224e3e80e70bfe14ac9ea64c1"
      ],
      "author": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Mon Sep 14 03:27:19 2026 -0700"
      },
      "committer": {
        "name": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Sep 14 03:27:19 2026 -0700"
      },
      "message": "Revert \"ANDROID: kleaf: fix 2-stage bootstrapping for recursive Python invocations.\" am: 3b048dc3a7\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/external/bazelbuild-rules_python/+/40821419\n\nChange-Id: If6c5eb5daaf29019219150d586e7f25943998b27\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "9f81aae31d8f963b08a958eb3517a9b325df01cc",
      "tree": "34c61435803f033a98a2502105f8e7953ff87070",
      "parents": [
        "571592f347f363a88facb851536befcbf6f73700",
        "02474eb4201862f4fcc17f65cb1104dfe0bae557"
      ],
      "author": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Mon Sep 14 03:27:07 2026 -0700"
      },
      "committer": {
        "name": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Sep 14 03:27:07 2026 -0700"
      },
      "message": "Revert \"ANDROID: Properly import site for zip.\" am: 02474eb420\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/external/bazelbuild-rules_python/+/40821418\n\nChange-Id: I0cc6bc7446f252561c99d9405fbca7a2cb5e4f1e\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "e2c2b0aa8f711fe28d756660f19e3ae9d2bc387a",
      "tree": "7a908bf053d5d6b49898904d16ba7e78beacb47a",
      "parents": [
        "3b048dc3a7ff0f5224e3e80e70bfe14ac9ea64c1"
      ],
      "author": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Mon Jul 06 20:53:33 2026 +0000"
      },
      "committer": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Mon Jul 06 20:53:33 2026 +0000"
      },
      "message": "Revert \"ANDROID: kleaf: fix 2-stage bootstrapping with our hermetic Python.\"\n\nThis reverts commit 86939a5023807c8a44f504e956068a0e822e52c1.\n\nReason for revert: GKI builds have transitioned to the Clang-bundled Python interpreter, which supports standard site-packages and .pth file processing, making the manual bootstrap import override unnecessary.\n\nBug: 526725799\nTest: tools/bazel run //common:kernel_aarch64_dist\nChange-Id: I5ac90e85c86106a86e3f50a3548ecff613aeb164\n"
    },
    {
      "commit": "3b048dc3a7ff0f5224e3e80e70bfe14ac9ea64c1",
      "tree": "7f5cf890c5305e8db21a4d44c22ddd20f9ce2d9b",
      "parents": [
        "02474eb4201862f4fcc17f65cb1104dfe0bae557"
      ],
      "author": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Mon Jul 06 20:53:31 2026 +0000"
      },
      "committer": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Mon Jul 06 20:53:31 2026 +0000"
      },
      "message": "Revert \"ANDROID: kleaf: fix 2-stage bootstrapping for recursive Python invocations.\"\n\nThis reverts commit 6cdaba72628dbc8659dd3403b46b5f73b1bf0f06.\n\nReason for revert: GKI builds have transitioned to the Clang-bundled Python interpreter, which isolates the environment correctly and supports standard venv startup, making the PYTHONPATH/OLDPYTHONPATH hacks obsolete.\n\nBug: 526725799\nTest: tools/bazel run //common:kernel_aarch64_dist\nChange-Id: I89736e3f797ae4bfca1d9d62208e9802a3952a22\n"
    },
    {
      "commit": "02474eb4201862f4fcc17f65cb1104dfe0bae557",
      "tree": "34c61435803f033a98a2502105f8e7953ff87070",
      "parents": [
        "23bb625690b2422603340abf38b5597d6a17e874"
      ],
      "author": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Mon Jul 06 20:53:28 2026 +0000"
      },
      "committer": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Mon Jul 06 20:53:28 2026 +0000"
      },
      "message": "Revert \"ANDROID: Properly import site for zip.\"\n\nThis reverts commit 9d7577b2692581cc980bc4e237ac76a0dd05e481.\n\nReason for revert: GKI builds have transitioned to the Clang-bundled Python interpreter, which supports standard site-packages and venv startup out-of-the-box, eliminating the need for this workaround.\n\nBug: 526725799\nTest: tools/bazel run //common:kernel_aarch64_dist\nChange-Id: I8b1bea1bdc925d0c5aba66e7decf39d7320d3e5c\n"
    },
    {
      "commit": "571592f347f363a88facb851536befcbf6f73700",
      "tree": "684c628bd93a37c2016d316efb286146ade5bbbf",
      "parents": [
        "447619ebb6153984776704962ed26d79faca5b6c",
        "23bb625690b2422603340abf38b5597d6a17e874"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
        "time": "Mon Mar 23 03:50:37 2026 -0700"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Mar 23 03:50:37 2026 -0700"
      },
      "message": "Merge \"ANDROID: Properly import site for zip.\" into main am: 23bb625690\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/external/bazelbuild-rules_python/+/39028079\n\nChange-Id: I24cc0416dd385c1f5b7c34fa8e9a05cde80ed98e\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "23bb625690b2422603340abf38b5597d6a17e874",
      "tree": "684c628bd93a37c2016d316efb286146ade5bbbf",
      "parents": [
        "172cab392210193fa72fd75608ade8ab7aa415e4",
        "9d7577b2692581cc980bc4e237ac76a0dd05e481"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "android-test-infra-autosubmit@system.gserviceaccount.com",
        "time": "Mon Mar 23 03:24:48 2026 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 23 03:24:48 2026 -0700"
      },
      "message": "Merge \"ANDROID: Properly import site for zip.\" into main"
    },
    {
      "commit": "9d7577b2692581cc980bc4e237ac76a0dd05e481",
      "tree": "f224e66f9841a8b0567f5973f6a471f033d977df",
      "parents": [
        "6cdaba72628dbc8659dd3403b46b5f73b1bf0f06"
      ],
      "author": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Fri Mar 20 00:06:20 2026 +0000"
      },
      "committer": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Fri Mar 20 19:37:28 2026 +0000"
      },
      "message": "ANDROID: Properly import site for zip.\n\nFor ZIP files created by selecting the python_zip_file\noutput_group of a py_binary, stage 1 uses zip_main_template instead,\nwhich does not properly guess the VENV home because our hermetic python\ndoes not support site packages.\n\nBug: 493138451\nChange-Id: I2eea78152b34cecf81cf79151ac538fb14e9de1d\n"
    },
    {
      "commit": "447619ebb6153984776704962ed26d79faca5b6c",
      "tree": "34c61435803f033a98a2502105f8e7953ff87070",
      "parents": [
        "e29e7e3ad52b062aef6683e0841fcaf852ee6591",
        "172cab392210193fa72fd75608ade8ab7aa415e4"
      ],
      "author": {
        "name": "Kate Ageeva",
        "email": "evageeva@google.com",
        "time": "Tue Jan 27 16:07:56 2026 -0800"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 27 16:07:56 2026 -0800"
      },
      "message": "Backfill commit SHAs for tagged Git versions am: 172cab3922\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/external/bazelbuild-rules_python/+/38073433\n\nChange-Id: I33877d815216dbb48586c12673ef48dbace7c940\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "172cab392210193fa72fd75608ade8ab7aa415e4",
      "tree": "34c61435803f033a98a2502105f8e7953ff87070",
      "parents": [
        "6cdaba72628dbc8659dd3403b46b5f73b1bf0f06"
      ],
      "author": {
        "name": "Kate Ageeva",
        "email": "evageeva@google.com",
        "time": "Mon Jan 26 19:27:52 2026 -0800"
      },
      "committer": {
        "name": "Kate Ageeva",
        "email": "evageeva@google.com",
        "time": "Mon Jan 26 19:27:52 2026 -0800"
      },
      "message": "Backfill commit SHAs for tagged Git versions\n\nChange-Id: Ib478ef42ecd2e77843a07401f3bbfabc4bc32ffa\n"
    },
    {
      "commit": "d3ea893113375b0c0f788c3315d8a8f488d69af6",
      "tree": "055c9fc3f8727aafa6cee9e992085cddaba2a06e",
      "parents": [
        "7c1bb2c83863b074f7c413eff8524ce97956e519"
      ],
      "author": {
        "name": "Yun Peng",
        "email": "pcloudy@google.com",
        "time": "Thu Nov 06 02:54:56 2025 +0100"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Sun Nov 09 13:23:48 2025 -0800"
      },
      "message": "Add batch_commands to presubmit.yml (#3389)\n\nFix bcr presubmit build on windows\n\n(cherry picked from commit c181f93c9f473cf73bb1522720d12280d8f46b2c)\n"
    },
    {
      "commit": "7c1bb2c83863b074f7c413eff8524ce97956e519",
      "tree": "d46d1bcd732b747df413f0011af338f1a4aa5df4",
      "parents": [
        "5499b2af310ca86d580f11e3a1392ca06c6faff9"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Mon Nov 10 04:43:48 2025 +0900"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Sun Nov 09 13:23:48 2025 -0800"
      },
      "message": "chore: switch bcr to 8.x instead of last_rc (#3395)\n\nIt seems that we forgot to complete this TODO item.\n\nWork towards #3392\n\n(cherry picked from commit bc196f57aa495843053cd059890b76a77e796b63)\n"
    },
    {
      "commit": "5499b2af310ca86d580f11e3a1392ca06c6faff9",
      "tree": "eb3bc957002cd8819771fed33c6cdffcc7ee9b7b",
      "parents": [
        "09e92f454579d60ab99801538b9da44ed76ed5f1"
      ],
      "author": {
        "name": "Joel Sing",
        "email": "jsing@canva.com",
        "time": "Thu Nov 06 12:43:19 2025 +1100"
      },
      "committer": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Thu Nov 06 11:02:20 2025 +0900"
      },
      "message": "fix: make CI pass with the next version of Bazel (9.0.0rc1) (#3393)\n\nExplicitly load CcToolchainConfigInfo in the fake cc toolchain config.\n\nFor examples/bzlmod, bump rules_rust to a newer version so that it pulls\nin dependencies that work correctly with Bazel 9.0.0rc1.\n\nWork towards #3392\n\n(cherry picked from commit 49b66308af877661f318d2f7b22f5c59847695eb)\n"
    },
    {
      "commit": "09e92f454579d60ab99801538b9da44ed76ed5f1",
      "tree": "47068f2c3b3d96ddc84ab69e00b20c43084a69bc",
      "parents": [
        "1298bd5e6a788d86f1f8766ee8816f54c06771e2"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Wed Oct 29 15:58:30 2025 -0700"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Wed Oct 29 17:44:18 2025 -0700"
      },
      "message": "gazelle: set min rules_python version as 1.4 (#3383)\n\nrules_python 1.4 is when the python.defaults tag class was introduced,\nwhich is used in the example\u0027s module file.\n\nFixes BCR presubmit failures in\nhttps://github.com/bazelbuild/bazel-central-registry/pull/6330 and\nhttps://github.com/bazelbuild/bazel-central-registry/pull/6241\n\n(cherry picked from commit d08cf537541ffc99bbd98dd71949a507516a4ff8)\n"
    },
    {
      "commit": "1298bd5e6a788d86f1f8766ee8816f54c06771e2",
      "tree": "77d4c627f6eed221ff8fd32cb56c0f36c730454c",
      "parents": [
        "c7a406ca55634d8cecf7e9b32ec0718bcdc938b7"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Mon Oct 27 22:56:10 2025 -0700"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 28 19:39:10 2025 -0700"
      },
      "message": "build: change gazelle rules_python override to use bazelrc (#3382)\n\nThis is because the `--override_module` flag in BCR presubmit configs\ncan\u0027t affect local_path_override in MODULE.bazel.\n\nPer\nhttps://github.com/bazelbuild/bazel-central-registry/pull/6241#issuecomment-3431422637\n\n(cherry picked from commit caab0fae80927e308e7aa18186ebf8c2b811b79e)\n"
    },
    {
      "commit": "c7a406ca55634d8cecf7e9b32ec0718bcdc938b7",
      "tree": "279e7a6aacaab8d0442189ab44c2b0e5643e2280",
      "parents": [
        "c2b746375df428d73b716526839f1a9ebf7f4689"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Fri Oct 24 16:51:05 2025 +0900"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 28 19:38:57 2025 -0700"
      },
      "message": "revert(pypi): revert the default for pipstar (#3373)\n\nA user mentioned that flipping the pipstar default caused\na regression in their setup in [this comment]. Until we have\na better understanding and a regression test for that, we should\nrevert the flip. Adjusted the CHANGELOG notes for this.\n\nRelated to #2949\n\n[this comment]:\nhttps://github.com/bazel-contrib/rules_python/issues/2949#issuecomment-3417501543\n\n(cherry picked from commit 3c3e0be43fce2cdf279fa42252fc958c05eb0779)\n"
    },
    {
      "commit": "c2b746375df428d73b716526839f1a9ebf7f4689",
      "tree": "57100e8b3c417c1efbdd0587e96d9ce3a1fb1635",
      "parents": [
        "66f1d47a070e49274cb89e066b0f68ec3ca7a7fb"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Mon Oct 20 06:29:19 2025 -0700"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 28 19:38:46 2025 -0700"
      },
      "message": "chore: make pypi release workflow perform checkout (#3371)\n\nThe pypi workflow step is now a separate job, so it doesn\u0027t start with\nthe code checkout\ndone already. Run the checkout action so it is available so the bazel\nupload\ncommand can run.\n\n(cherry picked from commit cf594f780c91f13d48e77faad34df48ac57398da)\n"
    },
    {
      "commit": "66f1d47a070e49274cb89e066b0f68ec3ca7a7fb",
      "tree": "1e552244a7c4b8fa1f1bb1f92ff366404dd780fd",
      "parents": [
        "ebc664004665260d38f560d08b077e83341a3bb6",
        "6f80d342b1a0711dbb36eeff05b900733be7bf39"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Sun Oct 19 16:23:40 2025 -0700"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Sun Oct 19 16:23:40 2025 -0700"
      },
      "message": "Merge branch \u0027main\u0027 into release/1.7\n"
    },
    {
      "commit": "6f80d342b1a0711dbb36eeff05b900733be7bf39",
      "tree": "6d0dd57709935a1fc683570ae428eaa5024abccc",
      "parents": [
        "f92ad7136ff411755ec8d8361af8263fd8efe6f2"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Sun Oct 19 16:07:47 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 19 23:07:47 2025 +0000"
      },
      "message": "chore: fix release workflow (#3366)\n\nMy original change to use the bazel-contrib BCR publishing workflow was\nhorribly broken.\nThis fixes a variety of issues.\n\n* Fix the workflow call secrets variable name\n* Allow getting the BCR publishing token from the workflow arg (the\nrelease\n  workflow calls it)\n* Fix the overall syntax of the workflows. It was just entirely invalid\nin\n  several regards.\n* Fix the yaml -\u003e yml file name reference. NGL, it took me longer than\nI\u0027d\n  like to admit to see that, eh.\n\nAlong the way, some cleanups and improvements\n\n* Allow specifying a particular tag to release, while using workflow\nstate from\na different commit. This allows us to make fixes on main, and then use\nit to\n  manually re-trigger a tag to be released.\n* Add descriptions for workflow inputs\n* Allow bcr token to be passed to release. This will allow e.g.\nautomatically\n  scheduled releases.\n* Quote shell variables because its good practice."
    },
    {
      "commit": "f92ad7136ff411755ec8d8361af8263fd8efe6f2",
      "tree": "4b0a0a1cd7417157ac5043a3aae3e7c8910024a3",
      "parents": [
        "e487b6dddd2c3b233f94e4a343d9cf0cb32d60ec"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Fri Oct 17 16:09:48 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 17 23:09:48 2025 +0000"
      },
      "message": "chore: make gazelle bcr tests compatible with bcr presubmit environment (#3365)\n\nBCR recently changed how it extracts archives in its presubmits: instead\nof extracting\nthe whole archive, only the specified portion (`gazelle/` in this case)\nis extracted.\nThis broke the gazelle tests because they reference files above the\ngazelle directory.\n\nTo fix, move the module it runs as a test under the gazelle directory.\n\nBecause the test module also refers to rules_python, which is above the\ngazelle\ndirectory, the bcr presubmit has disable that override using\n`--override_module`.\nThis means, going forward, the gazelle module, when bcr tests it, will\nuse the\nversion in the MODULE file (rather than the vendored copy).\n\nFixes https://github.com/bazel-contrib/rules_python/issues/3364"
    },
    {
      "commit": "e487b6dddd2c3b233f94e4a343d9cf0cb32d60ec",
      "tree": "b62aca338eab7687d6f8fd44ed79f0b3470a29cf",
      "parents": [
        "b9ec06fc498f8b01a9779120100cc009a2c83b33"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Thu Oct 16 20:49:21 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 16 20:49:21 2025 -0700"
      },
      "message": "chore: fix create_archive_and_notes to ignore release tool markers (#3355)\n\nThe create_archive_and_notes.sh script is incorrectly detecting the\nversion markers\nin the tool meant to rewrite them. To fix, ignore those files."
    },
    {
      "commit": "b9ec06fc498f8b01a9779120100cc009a2c83b33",
      "tree": "a8d53ac0c858709b84d1b979eee6e16eb68db83d",
      "parents": [
        "cd49a1cab10a1953c6228063bbb12948307ba44c"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Thu Oct 16 16:16:49 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 16 16:16:49 2025 -0700"
      },
      "message": "chore: switch to use publish-to-bcr workflow (#3359)\n\nThe GitHub App is deprecated, so switch to the more modern workflow.\n\nThis will also allow us to eventually use attestations.\n\nAlong the way...\n\n* Split up the release workflow into some different sub-jobs\n* Run PyPI upload last, as its the most irrevocable step of the process."
    },
    {
      "commit": "cd49a1cab10a1953c6228063bbb12948307ba44c",
      "tree": "0e15df57373723ffc5317715803cd33c824c7fa7",
      "parents": [
        "f1e585fc9927aeaf87cf43845e1d37289f881e99"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Thu Oct 16 23:07:10 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 16 14:07:10 2025 +0000"
      },
      "message": "fix(doc): fix the release notes for the starlarkification of the flags (#3361)\n\nIt seems that the changelog got merged for `1.7.0`, but the\n`VERSION_NEXT_FEATURE` got added to the docs instead of `1.7.0`. This is\nfixing\nthat so that we can merge/cherry-pick again to the release branch."
    },
    {
      "commit": "ebc664004665260d38f560d08b077e83341a3bb6",
      "tree": "a5cf5090a959be21e0bdd612a5451c0c90dd1c22",
      "parents": [
        "896c700bcc79e998d6b20b9db4fcd9f8f599b8b2",
        "f1e585fc9927aeaf87cf43845e1d37289f881e99"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Thu Oct 16 17:10:57 2025 +0900"
      },
      "committer": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Thu Oct 16 17:10:57 2025 +0900"
      },
      "message": "Merge branch \u0027main\u0027 into release/1.7\n"
    },
    {
      "commit": "f1e585fc9927aeaf87cf43845e1d37289f881e99",
      "tree": "5d3697b42e0298f48b1640e45eaf74fa26a10210",
      "parents": [
        "46167f5008fb1e4c90783efadef1c8293d599554"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Thu Oct 16 14:02:09 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 16 05:02:09 2025 +0000"
      },
      "message": "chore(toolchain): use the last build and add 3.15.0a1 (#3357)\n\nUpdating the toolchain versions to fix a bug in `3.13.8`. This will make\nthe release better to everyone.\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "46167f5008fb1e4c90783efadef1c8293d599554",
      "tree": "0e0abf3c81e0be66362b257a99ccb78a26bfa497",
      "parents": [
        "7cf098e9897ecada15955dce3a45332208a739a1"
      ],
      "author": {
        "name": "Kristian Hartikainen",
        "email": "kristian.hartikainen@gmail.com",
        "time": "Wed Oct 15 14:07:42 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 15 11:07:42 2025 -0700"
      },
      "message": "doc: Fix `pip.default` arguments in multi-platform example (#3358)\n\nI was playing around with the [multi-platform PyPI\nexample](https://rules-python.readthedocs.io/en/latest/howto/multi-platform-pypi-deps.html)\nand noticed that the `pip.default` arguments were wrong.\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e"
    },
    {
      "commit": "7cf098e9897ecada15955dce3a45332208a739a1",
      "tree": "0234cdaa5e60ab7574e432bcb1ab7752ee1a7727",
      "parents": [
        "587f6e916d6bdd097b1b59b8c7a7b8128ed94dcb"
      ],
      "author": {
        "name": "Mai Hussien",
        "email": "70515749+mai93@users.noreply.github.com",
        "time": "Wed Oct 15 11:05:01 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 15 11:05:01 2025 -0700"
      },
      "message": "build: Starlarkify python flags (#3334)\n\nAdd starlark flags for `--python_path`, `--build_python_zip` and\n`--incompatible_default_to_explicit_init_py`.\n\n- The transitions logic is updated to set both the native and starlark\nversions of the flags to allow alternating between them until the native\nones are removed.\n- `--build_python_zip` is changed to `boolean` instead of `Tristate`\nwith default value set to `True` on `windows` and `False` otherwise.\n- `scope \u003d universal` attribute is added to the starlark flags so they\ncan be propagated to exec config on Bazel 9. This required upgrading\n`bazel_skylib` version to have `scope` attribute defined.\n\nWork towards: https://github.com/bazel-contrib/rules_python/issues/3252\n\ncc @gregestren\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e\nCo-authored-by: Richard Levasseur \u003crlevasseur@google.com\u003e"
    },
    {
      "commit": "587f6e916d6bdd097b1b59b8c7a7b8128ed94dcb",
      "tree": "e2fd8e9e5d7080a81ec4637ac0fc217c812dd8dd",
      "parents": [
        "8f64e2c50f0d0581b8f2931ec30e71fd00fc7bcb"
      ],
      "author": {
        "name": "Josh Cannon",
        "email": "joshdcannon@gmail.com",
        "time": "Tue Oct 14 21:29:53 2025 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 14 19:29:53 2025 -0700"
      },
      "message": "docs: Fix GitHub PR links (#3346)\n\nFix the `gh-pr` special markup to use the right URL.\n\nIt was using `/pulls/` which is a search, when it should be `/pull/`"
    },
    {
      "commit": "896c700bcc79e998d6b20b9db4fcd9f8f599b8b2",
      "tree": "038d44ac5fd77f7bcaff690fc6d76a97f9c4f526",
      "parents": [
        "dc65c658ee142adee88f815fb7ef721a6e8578a5"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 14 18:12:07 2025 -0700"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 14 18:12:07 2025 -0700"
      },
      "message": "chore: create_archive_and_notes.sh: correctly capture and check grep result\n"
    },
    {
      "commit": "dc65c658ee142adee88f815fb7ef721a6e8578a5",
      "tree": "a0bfadb04082658c2c7fc591b0579a3321b53004",
      "parents": [
        "d6c42e10940b28e932c6df5678a2d930a02635e2"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 14 16:14:58 2025 -0700"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 14 16:14:58 2025 -0700"
      },
      "message": "chore: explicitly check for exit code 0 for create_archive_and_notes.sh grep\n"
    },
    {
      "commit": "d6c42e10940b28e932c6df5678a2d930a02635e2",
      "tree": "e143da23555bd9a81066ae7014a13b987a17da93",
      "parents": [
        "5c4ad7229067d8cda79881510c029feaee504695"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 14 16:08:16 2025 -0700"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 14 16:08:16 2025 -0700"
      },
      "message": "chore: remove debugging early exit from create_archive_and_notes.sh\n"
    },
    {
      "commit": "5c4ad7229067d8cda79881510c029feaee504695",
      "tree": "83ccc33e2028bbb5bf840a014f0485c4ee3f5790",
      "parents": [
        "43a5acf8cedfce07fd4f933c9165f75e0b4d88c9"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 14 16:03:44 2025 -0700"
      },
      "committer": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Oct 14 16:03:44 2025 -0700"
      },
      "message": "chore: fix create_archive_and_notes to ignore release tool markers\n"
    },
    {
      "commit": "8f64e2c50f0d0581b8f2931ec30e71fd00fc7bcb",
      "tree": "ef8bc7ec8ca08b518fe33f8f7c5b6492d29fb255",
      "parents": [
        "43a5acf8cedfce07fd4f933c9165f75e0b4d88c9"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Wed Oct 15 07:47:52 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 14 22:47:52 2025 +0000"
      },
      "message": "test(venv): functional test for pth files (#3343)\n\nAs requested in #3340, this adds a functional test for it all.\n\nTests for #3339\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "43a5acf8cedfce07fd4f933c9165f75e0b4d88c9",
      "tree": "d5f65ae270917e33af6cab89d1a2b9d394a30315",
      "parents": [
        "8069fa5916bc8e9ef1d282f5882ff2bdf11ad229"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Sun Oct 12 00:51:44 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 12 07:51:44 2025 +0000"
      },
      "message": "chore: release 1.7 prep (#3341)\n\n* Update changelog\n* Update version markers\n\nWork towards https://github.com/bazel-contrib/rules_python/issues/3338"
    },
    {
      "commit": "8069fa5916bc8e9ef1d282f5882ff2bdf11ad229",
      "tree": "ef4e59a0368a3e04e65985eb2e331d6d5490d5b8",
      "parents": [
        "f3e83e7119532f90ca58d9b1af91a50d4d1ea417"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Sun Oct 12 00:50:44 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 12 07:50:44 2025 +0000"
      },
      "message": "internal: make release to chdir before looking for version markers (#3342)\n\nThe release tool wasn\u0027t determining the next version correctly because\nit was\nin the wrong directory when that logic ran. To fix, chdir before that\nlogic kicks off."
    },
    {
      "commit": "f3e83e7119532f90ca58d9b1af91a50d4d1ea417",
      "tree": "9c63a27919d24deddcc94345e4b75c760c6935a3",
      "parents": [
        "f84640bec471629c25d76052ed858eb3c0dd3a14"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Sun Oct 12 01:16:59 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 11 16:16:59 2025 +0000"
      },
      "message": "fix(venv): include pth files at the root of the site-packages folder (#3340)\n\nBefore this PR we would not include `pth` files at the root of the\n`site-packages` folder, but we would include if they are further down\nthe tree.\n\nFixes #3339\nFixes #2071"
    },
    {
      "commit": "f84640bec471629c25d76052ed858eb3c0dd3a14",
      "tree": "7edf9c38c53b797d03a2db6b846749408ac76ebb",
      "parents": [
        "a2f14eb4f7349bd18530d8057e96f093570fd103"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Sat Oct 11 02:35:48 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 11 09:35:48 2025 +0000"
      },
      "message": "fix(venv): symlink shared libraries directly  (#3331)\n\nIt seems `$ORIGIN` resolves prior to symlink resolution. This makes it\nresolve\ndifferently depending on if the directory or file itself is symlinked.\n\nTo fix, special case shared libraries and have them symlinked directly.\nSince an\nexplicit file is the target, `VenvSymlinkEntry.link_to_file` is added to\nhold the\nFile object that will be linked to.\n\nAn unfortunate side-effect of this logic is any package with `lib*.so`\nfiles\nwill be more expensive to build (depset flattened at analysis time, more\nfiles\nsymlinked), but it beats not working at all. Optimizing that can be done\nin\nanother change.\n\nTests added to generate libraries that look like what something from\nPyPI\ndoes. Manually verified a case using jax and jax plugins.\n\nFixes https://github.com/bazel-contrib/rules_python/issues/3228"
    },
    {
      "commit": "a2f14eb4f7349bd18530d8057e96f093570fd103",
      "tree": "061b3cbfe19bbf42cf76e0dbfc37a8e62c4b213d",
      "parents": [
        "7eebd602432332e4c5b11439a6d85cb600dc3baf"
      ],
      "author": {
        "name": "Jan Winkler",
        "email": "45763961+janwinkler1@users.noreply.github.com",
        "time": "Sat Oct 11 06:59:01 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 11 04:59:01 2025 +0000"
      },
      "message": "fix(rules): make `py_console_script_binary` compatible with symbolic macros (#3195)\n\nFixes target naming to follow symbolic macro conventions introduced in\nBazel 8.0.\n\n---------\n\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e"
    },
    {
      "commit": "7eebd602432332e4c5b11439a6d85cb600dc3baf",
      "tree": "9aef78b536037a012964f17016f80406ccfe93b2",
      "parents": [
        "5c13539708a80560729424e341603ac59d6ecece"
      ],
      "author": {
        "name": "Alex Trotta",
        "email": "44127594+Ahajha@users.noreply.github.com",
        "time": "Sat Oct 11 00:20:56 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 11 04:20:56 2025 +0000"
      },
      "message": "feat(toolchains): Add latest Python versions (#3336)\n\nPer request in\nhttps://github.com/bazel-contrib/rules_python/pull/3330#discussion_r2412231508\n\n---------\n\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e"
    },
    {
      "commit": "5c13539708a80560729424e341603ac59d6ecece",
      "tree": "8cf17dff51cb018ec4cad6da74356872e41869f1",
      "parents": [
        "33fd322c7dec57fdff24311e655e03f274f8b2a5"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Fri Oct 10 09:28:26 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 10 00:28:26 2025 +0000"
      },
      "message": "feat(pypi): support aarch64 windows on pipstar (#3226)\n\nThis adds the necessary bits for Windows ARM64 support when evaluating\nenv markers in requirements files and selecting the right wheels in\n`experimental_index_url`.\n\nRelated #2276"
    },
    {
      "commit": "33fd322c7dec57fdff24311e655e03f274f8b2a5",
      "tree": "c6ac4181ec8bff1f92f5babef9f50f1041614145",
      "parents": [
        "ec1df016325f1ac5a949aa7db90b056f558eb6c4"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Thu Oct 09 17:19:37 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 10 00:19:37 2025 +0000"
      },
      "message": "fix(venv): group venv prefixes by path component, not raw path (#3333)\n\nWhen files overlap between packages, and dist-info directories are\npresent, it results in a prefix list like `foo foo-bar foo/bar`. When\nsorted as raw strings, hyphen sorts before slash, so the continuity of\npath prefixes is violated and they are grouped separately. An error then\noccurs because both `foo/` and `foo/bar` are created, but the latter is\na sub-path of the former.\n\nTo fix, change the sort key to a tuple of path components. This makes\n`foo foo-bar foo/bar` sort as `(foo,) (foo, bar), (foo-bar, )`,\nresulting in the correct order.\n\nFixes https://github.com/bazel-contrib/rules_python/issues/3204"
    },
    {
      "commit": "ec1df016325f1ac5a949aa7db90b056f558eb6c4",
      "tree": "5cda1268cfeb8a84902926b9774806c9101f84bd",
      "parents": [
        "edd5b1eb41efe8d86a4f3fdb73f3456ed5873a55"
      ],
      "author": {
        "name": "Alex Trotta",
        "email": "44127594+Ahajha@users.noreply.github.com",
        "time": "Tue Oct 07 14:34:27 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 07 18:34:27 2025 +0000"
      },
      "message": "feat(toolchains): Add 3.14.0 (#3330)\n\nPer the title: 3.14.0 was released today."
    },
    {
      "commit": "edd5b1eb41efe8d86a4f3fdb73f3456ed5873a55",
      "tree": "09088432f69d932f509badf129d546665f178f84",
      "parents": [
        "83cea7772914db849a0159e775134b75f4d9fd87"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Tue Oct 07 08:16:05 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 06 23:16:05 2025 +0000"
      },
      "message": "docs(pipstar): add more docs to make it ready for release (#3323)\n\nFollowup to #3225 to add more documentation."
    },
    {
      "commit": "83cea7772914db849a0159e775134b75f4d9fd87",
      "tree": "121946e7d349b36bf0c44edfb9e742c7e93873e4",
      "parents": [
        "37c629bfc12e2f9c282fe3bc6ef2195807e56688"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 06 16:13:45 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 06 23:13:45 2025 +0000"
      },
      "message": "build(deps): bump markdown-it-py from 3.0.0 to 4.0.0 in /docs (#3326)\n\nBumps\n[markdown-it-py](https://github.com/executablebooks/markdown-it-py) from\n3.0.0 to 4.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for\nPython 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It\nv14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca\nhref\u003d\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca\nhref\u003d\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca\nhref\u003d\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca\nhref\u003d\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca\nhref\u003d\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca\nhref\u003d\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca\nhref\u003d\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca\nhref\u003d\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca\nhref\u003d\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca\nhref\u003d\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca\nhref\u003d\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python\n3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It\nv14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e\n🚀 RELEASE v4.0.0 (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e\n👌 fix quadratic complexity in reference parser (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e\n📚 DOCS: Fix typos (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e\n🔧 simplify logic in scanDelims (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e\n👌 limit the number of autocompleted cells in a table (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e\n⬆️ Comply with Commonmark 0.31.2 (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e\n🔧 Improve spec update script (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e\n⬆️ Drop support for Python 3.9 (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e\n📚 DOCS: Fix a few old URLs (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e\n🔧 Update pre-commit and upload-artifact (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dmarkdown-it-py\u0026package-manager\u003dpip\u0026previous-version\u003d3.0.0\u0026new-version\u003d4.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "37c629bfc12e2f9c282fe3bc6ef2195807e56688",
      "tree": "bb8e37d52f9824f008e28464100a6223bdb70f72",
      "parents": [
        "42dfe57ec85b0ac6dace2f7e797618e5b0911f90"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 06 16:13:16 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 06 23:13:16 2025 +0000"
      },
      "message": "build(deps): bump certifi from 2025.8.3 to 2025.10.5 in /docs (#3327)\n\nBumps [certifi](https://github.com/certifi/python-certifi) from 2025.8.3\nto 2025.10.5.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e\n2025.10.05 (\u003ca\nhref\u003d\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e\nAdd Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e\nBump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca\nhref\u003d\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e\nBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca\nhref\u003d\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e\nBump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e\nBump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/compare/2025.08.03...2025.10.05\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dcertifi\u0026package-manager\u003dpip\u0026previous-version\u003d2025.8.3\u0026new-version\u003d2025.10.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "42dfe57ec85b0ac6dace2f7e797618e5b0911f90",
      "tree": "ed7497e900dc879d1b08e7ea295f051a6798ec4d",
      "parents": [
        "3076f90a7dcce55eff4f63b1969d33f55a6be37e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 06 16:12:57 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 06 23:12:57 2025 +0000"
      },
      "message": "build(deps): bump markdown-it-py from 3.0.0 to 4.0.0 in /tools/publish (#3329)\n\nBumps\n[markdown-it-py](https://github.com/executablebooks/markdown-it-py) from\n3.0.0 to 4.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for\nPython 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It\nv14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca\nhref\u003d\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca\nhref\u003d\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca\nhref\u003d\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca\nhref\u003d\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca\nhref\u003d\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca\nhref\u003d\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca\nhref\u003d\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca\nhref\u003d\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca\nhref\u003d\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca\nhref\u003d\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca\nhref\u003d\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca\nhref\u003d\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python\n3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It\nv14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e\n🚀 RELEASE v4.0.0 (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e\n👌 fix quadratic complexity in reference parser (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e\n📚 DOCS: Fix typos (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e\n🔧 simplify logic in scanDelims (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e\n👌 limit the number of autocompleted cells in a table (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e\n⬆️ Comply with Commonmark 0.31.2 (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e\n🔧 Improve spec update script (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e\n⬆️ Drop support for Python 3.9 (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e\n📚 DOCS: Fix a few old URLs (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e\n🔧 Update pre-commit and upload-artifact (\u003ca\nhref\u003d\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dmarkdown-it-py\u0026package-manager\u003dpip\u0026previous-version\u003d3.0.0\u0026new-version\u003d4.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3076f90a7dcce55eff4f63b1969d33f55a6be37e",
      "tree": "fd7b319454d7ee79864016d1780b8fb421398d55",
      "parents": [
        "1ebc93f19de1420ea12c59e3bfb315fec92e54f5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 06 16:10:41 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 06 23:10:41 2025 +0000"
      },
      "message": "build(deps): bump certifi from 2025.8.3 to 2025.10.5 in /tools/publish (#3328)\n\nBumps [certifi](https://github.com/certifi/python-certifi) from 2025.8.3\nto 2025.10.5.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e\n2025.10.05 (\u003ca\nhref\u003d\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e\nAdd Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e\nBump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca\nhref\u003d\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e\nBump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca\nhref\u003d\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e\nBump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e\nBump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/certifi/python-certifi/compare/2025.08.03...2025.10.05\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dcertifi\u0026package-manager\u003dpip\u0026previous-version\u003d2025.8.3\u0026new-version\u003d2025.10.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1ebc93f19de1420ea12c59e3bfb315fec92e54f5",
      "tree": "9b38cac2eec02f03b570a6ea7644689fc8b6c070",
      "parents": [
        "79f654686646e2ab213741bc4774ea9d69895b54"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Sun Oct 05 13:26:45 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 05 04:26:45 2025 +0000"
      },
      "message": "feat(pypi): enable pipstar by default (#3225)\n\nBefore this PR we were using our python helpers to parse the whl\nMETADATA for a\nparticular host (or experimentally - target) platform and the fixed\ndependency\nlist would be written to the `BUILD.bazel` files materialized by the\n`whl_library` repository rule.\n\nThis PR adds extra plumbing to leverage the Starlark implementation of\nthe\nMETADATA file parsing (a.k.a. pipstar) which moves the evaluation to\nanalysis\nphase as we will get the target platform details via the\n`env_marker_config_setting` from the `toolchain` used for the\ndependencies.\n\nSince users are normally working with a subset of platforms that the\nMETADATA\nwould pull in, we are writing the list of packages from the requirements\nfile to\na `bzl` file so that `pipstar` knows which packages to consider when\nparsing the\nMETADATA. This will ensure that `bazel query` continues to work.\n\nSince just passing the list of packages to the `whl_library` would cause\nrefetches of all of the `whl_library` dependencies when we add or remove\na\npackage, we pass a path where to load the symbol called `packages` from,\nwhich\nmeans that only the analysis phase will be affected because the macros\nwill be\nre-evaluated if one adds or removes a package.\n\nWe still need to download the correct platform-specific wheels for the\nright\nplatform in order to fully resolve the referenced tickets. With this PR\nwe are\ndeprecating the `experimental_target_platforms` attribute since it has\nno longer\nany effect.\n\nFixes #2949\nWork towards #260\nWork towards #2241\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "79f654686646e2ab213741bc4774ea9d69895b54",
      "tree": "6a158d9e66986c3ac81b7987763b57e1e66aea9e",
      "parents": [
        "309e93e32a12fc1105c8935acea6d75f810c34bc"
      ],
      "author": {
        "name": "Mai Hussien",
        "email": "70515749+mai93@users.noreply.github.com",
        "time": "Fri Oct 03 15:37:07 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 03 22:37:07 2025 +0000"
      },
      "message": "chore: reject py2 runtimes and remove usages of ctx.fragments.py.disable_py2 (#3319)\n\nThis removes the usages of the disable_py2 fragment attribute. This also\nmakes py2\nruntimes rejected (both when set on py_runtime and PyRuntimeInfo)\n\nBecause Python 2 support was dropped long ago and other parts of the\ncode reject,\nignore, or don\u0027t work with Python 2 already, this is not considered a\nbreaking change.\n\nWork towards: https://github.com/bazel-contrib/rules_python/issues/3252\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crlevasseur@google.com\u003e"
    },
    {
      "commit": "309e93e32a12fc1105c8935acea6d75f810c34bc",
      "tree": "6e517de721e34ab1a9099c874b318742e741d395",
      "parents": [
        "852e95419c603f4e34bc5f0e813daff48d1f9f54"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Fri Oct 03 08:17:09 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 03 15:17:09 2025 +0000"
      },
      "message": "fix(toolchains): correctly register musl/freethreaded toolchains for workspace (#3314)\n\nThe musl/freethreaded runtimes weren\u0027t being activated when the flags\nwere set. This was\nbecause the toolchains weren\u0027t having `target_settings` set, which means\nextra settings,\nsuch as musl/freethreaded-ness were ignored when matching. The net\nresult is the regular\ntoolchain, because it\u0027s registered earlier, would always match earlier.\n\nTo fix, set the target_settings in the toolchain() call. This matches\nthe bzlmod behavior.\n\nAlso update the toolchain resolution tests to verify resolution.\n\nFixes https://github.com/bazel-contrib/rules_python/issues/3262"
    },
    {
      "commit": "852e95419c603f4e34bc5f0e813daff48d1f9f54",
      "tree": "ba27df96ef44eed43fbb2100899033a167881174",
      "parents": [
        "997d6f7afc565e45e4c5120613d4d9369bb6d6b8"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Sat Oct 04 00:12:45 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 03 15:12:45 2025 +0000"
      },
      "message": "fix(pip): do not use experimental_index_url for publish_deps (#3311)\n\nCurrently, experimental_index_url will trigger network access (by the\nbzlmod extension\nlogic) as it figures out the wheels. This is problematic because this\nnetwork\naccess always occurs, even if a user isn\u0027t using the publish tool.\nAdditionally,\nfailed network accesses can get Bazel into stuck state requiring `bazel\nshutdown`\nto fix it.\n\nTo fix, don\u0027t  use experimental_index_url for the publish tool deps.\n\nOnce bazelbuild/bazel#24777 is merged, we can roll it back,\nbut then we may need to check-in the `MODULE.bazel.lock` file into git.\n\nThis should be no-op for most users because the publisher is usually run\nfrom with `host \u003d\u003d exec`, but there is a small chance that people will\nhit #2241.\n\nWork towards #2937"
    },
    {
      "commit": "997d6f7afc565e45e4c5120613d4d9369bb6d6b8",
      "tree": "a192cbd2045b20e6b3070b848e2f0d08b9c93599",
      "parents": [
        "e9b4dfcc7f03e633e6c6e6808c358138356d02d3"
      ],
      "author": {
        "name": "Oleh Prypin",
        "email": "oprypin@google.com",
        "time": "Thu Oct 02 17:17:27 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 02 15:17:27 2025 +0000"
      },
      "message": "fix: wrong value of `has_py3_only_sources` in the PyInfo constructor (#3315)\n\nThe has_py3_only_sources field was being set to the has_py2_only_sources\nvariable"
    },
    {
      "commit": "e9b4dfcc7f03e633e6c6e6808c358138356d02d3",
      "tree": "eb24e20a8929ce65d05152f58acfdc9075c11666",
      "parents": [
        "394dda20df8e70367d9f3cc0278cfe13d93f6eea"
      ],
      "author": {
        "name": "Oleh Prypin",
        "email": "oprypin@google.com",
        "time": "Thu Oct 02 17:16:03 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 02 15:16:03 2025 +0000"
      },
      "message": "refactor: remove Google-specific stubs (#3316)\n\nThese were needed only to avoid patches inside Google."
    },
    {
      "commit": "394dda20df8e70367d9f3cc0278cfe13d93f6eea",
      "tree": "f503eacfe1a6daaaeb6825727659b6074e1ee599",
      "parents": [
        "f5ab3bcc7e89df2ac439027a5c0116d8dc03a49b"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Wed Oct 01 21:21:49 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 02 04:21:49 2025 +0000"
      },
      "message": "tests: add tests to verify toolchain registration (#3313)\n\nThis adds tests that verify toolchains are registered and resolving\ncorrectly for\nthe different variants and platforms for the runtimes.\n\nThis also shows that workspace mode isn\u0027t registering musl or\nfreethreaded builds\ncorrectly, so use them isn\u0027t as easy as simply setting the build flags.\nFor now,\nthe tests skip those in workspace mode.\n\nAlong the way, fix a bug where py_runtime would crash if it got the\npython version\nfrom the flag, and the version contained more than micro (e.g.\n\"3.14.0rc0\")"
    },
    {
      "commit": "f5ab3bcc7e89df2ac439027a5c0116d8dc03a49b",
      "tree": "b5bee6075d7511941abc32e5a171745ea87e7668",
      "parents": [
        "fb06c86322fc46a230ee2758dbae75f1c5eba97e"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Tue Sep 30 22:51:12 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 01 05:51:12 2025 +0000"
      },
      "message": "fix(toolchains): add musl list of freethreaded runtimes (workspace) (#3310)\n\nThe musl entry got lost as part of a refactoring. Add it back to the\nplatforms\nthat generate freethreaded variants.\n\nFixes https://github.com/bazel-contrib/rules_python/issues/3286"
    },
    {
      "commit": "fb06c86322fc46a230ee2758dbae75f1c5eba97e",
      "tree": "f6ea4a94128310471d17117fefa5c39f224d75a4",
      "parents": [
        "ecc339001eed1455a5ba2f85a6c31e7661f6e556"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Tue Sep 30 22:50:03 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 01 05:50:03 2025 +0000"
      },
      "message": "feat(toolchains): let local toolchains point to a label (#3304)\n\nCurrently, the local toolchain code requires using a path (or program\nname) to find\nthe Python interpreter. This comes up short when using Bazel to\ndownload an arbitrary runtime (or otherwise manage the creation of it,\ne.g.\ndownloading Python and building it from source in a repo rule). In such\ncases, the\nfile system location of the interpreter isn\u0027t known (it\u0027ll be in some\nBazel cache\ndirectory).\n\nTo fix, add the `interpreter_target` attribute to `local_runtime_repo`,\nwhich it\nlooks up the path for, then continues on as normal. As an example, the\ntest uses\na custom repository rule to download a particular version of Python\nappropriate\nto the OS."
    },
    {
      "commit": "ecc339001eed1455a5ba2f85a6c31e7661f6e556",
      "tree": "25fcf14730e9369a527a6b9bf23a83391bc4bfca",
      "parents": [
        "b913add58acb7c1932ca648a2fa1feb6983ba52e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Sep 30 17:28:30 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 30 08:28:30 2025 +0000"
      },
      "message": "build(deps): bump docutils from 0.22 to 0.22.2 in /tools/publish (#3289)\n\n[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don\u0027t worry if this takes some\ntime.\n\nNote: if you make any changes to this PR yourself, they will take\nprecedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\n[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don\u0027t worry if this takes some\ntime.\n\nNote: if you make any changes to this PR yourself, they will take\nprecedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps [docutils](https://github.com/rtfd/recommonmark) from 0.22 to\n0.22.2.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003ddocutils\u0026package-manager\u003dpip\u0026previous-version\u003d0.22\u0026new-version\u003d0.22.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b913add58acb7c1932ca648a2fa1feb6983ba52e",
      "tree": "b1905921df037a6dbcdbc12320a9507eef898a7f",
      "parents": [
        "e89605a2de41766c7855ef7b09551ba2f98868f3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Sep 30 08:26:10 2025 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 30 08:26:10 2025 +0000"
      },
      "message": "build(deps): bump markupsafe from 3.0.2 to 3.0.3 in /docs (#3307)\n\nBumps [markupsafe](https://github.com/pallets/markupsafe) from 3.0.2 to\n3.0.3.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/releases\"\u003emarkupsafe\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.0.3\u003c/h2\u003e\n\u003cp\u003eThis is the MarkupSafe 3.0.3 fix release, which fixes bugs but does\nnot otherwise change behavior and should not result in breaking changes\ncompared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca\nhref\u003d\"https://pypi.org/project/MarkupSafe/3.0.3/\"\u003ehttps://pypi.org/project/MarkupSafe/3.0.3/\u003c/a\u003e\nChanges: \u003ca\nhref\u003d\"https://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\"\u003ehttps://markupsafe.palletsprojects.com/page/changes/#version-3-0-3\u003c/a\u003e\nMilestone: \u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/milestone/15?closed\u003d1\"\u003ehttps://github.com/pallets/markupsafe/milestone/15?closed\u003d1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e\ninstead of \u003ccode\u003eUserWarning\u003c/code\u003e. \u003ca\nhref\u003d\"https://redirect.github.com/pallets/markupsafe/issues/487\"\u003e#487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialization PEP 489 for the C extension. \u003ca\nhref\u003d\"https://redirect.github.com/pallets/markupsafe/issues/494\"\u003e#494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. \u003ca\nhref\u003d\"https://redirect.github.com/pallets/markupsafe/issues/485\"\u003e#485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. \u003ca\nhref\u003d\"https://redirect.github.com/pallets/markupsafe/issues/503\"\u003e#503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. \u003ca\nhref\u003d\"https://redirect.github.com/pallets/markupsafe/issues/505\"\u003e#505\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/blob/main/CHANGES.rst\"\u003emarkupsafe\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.3\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-27\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e__version__\u003c/code\u003e raises \u003ccode\u003eDeprecationWarning\u003c/code\u003e\ninstead of \u003ccode\u003eUserWarning\u003c/code\u003e.\n:issue:\u003ccode\u003e487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdopt multi-phase initialisation (:pep:\u003ccode\u003e489\u003c/code\u003e) for the C\nextension.\n:issue:\u003ccode\u003e494\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Windows ARM64 wheels. :issue:\u003ccode\u003e485\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild Python 3.14 wheels. :issue:\u003ccode\u003e503\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBuild riscv64 wheels. :issue:\u003ccode\u003e505\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/commit/297fc8e356e6836a62087949245d09a28e9f1b13\"\u003e\u003ccode\u003e297fc8e\u003c/code\u003e\u003c/a\u003e\nrelease version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/commit/7e4e6ce249107c5f27fa6fe890e29da7a8dc8f0c\"\u003e\u003ccode\u003e7e4e6ce\u003c/code\u003e\u003c/a\u003e\nFree-threading: run with pytest-run-paralell (\u003ca\nhref\u003d\"https://redirect.github.com/pallets/markupsafe/issues/507\"\u003e#507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/commit/6100b9c0d466495a08d55b33cb172d7b5d8e9aa1\"\u003e\u003ccode\u003e6100b9c\u003c/code\u003e\u003c/a\u003e\nenable riscv64 wheels (\u003ca\nhref\u003d\"https://redirect.github.com/pallets/markupsafe/issues/506\"\u003e#506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/commit/c9d5ecfc7eec6f611b19cdc8e1cde1aaa65cb8eb\"\u003e\u003ccode\u003ec9d5ecf\u003c/code\u003e\u003c/a\u003e\nenable riscv64 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/commit/2f9b33753052e7c6df1464a7c900787d04ae9daf\"\u003e\u003ccode\u003e2f9b337\u003c/code\u003e\u003c/a\u003e\ntox for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/commit/78d951a9549dee9fc901c55fc79a74a5f01e96fc\"\u003e\u003ccode\u003e78d951a\u003c/code\u003e\u003c/a\u003e\nupdate dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/commit/bb6744e392e79611b110c5ba022238eb1b855cc2\"\u003e\u003ccode\u003ebb6744e\u003c/code\u003e\u003c/a\u003e\nadd entry\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/commit/65c4134ab16a3faccbcac2cba90da0db2b799542\"\u003e\u003ccode\u003e65c4134\u003c/code\u003e\u003c/a\u003e\nupgrade cibuildwheel, add \u003ccode\u003ecp314\u003c/code\u003e wheels and test on CPython\n3.14 (\u003ca\nhref\u003d\"https://redirect.github.com/pallets/markupsafe/issues/504\"\u003e#504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/commit/3a9bd88b84c9edba8b922bb12b84a59feed98788\"\u003e\u003ccode\u003e3a9bd88\u003c/code\u003e\u003c/a\u003e\nadd cp314 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/commit/aafe44d87bd7974bc82af8c4010dea9938441edf\"\u003e\u003ccode\u003eaafe44d\u003c/code\u003e\u003c/a\u003e\nremove slsa provenance (\u003ca\nhref\u003d\"https://redirect.github.com/pallets/markupsafe/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/pallets/markupsafe/compare/3.0.2...3.0.3\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dmarkupsafe\u0026package-manager\u003dpip\u0026previous-version\u003d3.0.2\u0026new-version\u003d3.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e89605a2de41766c7855ef7b09551ba2f98868f3",
      "tree": "96c0ffd091ec72d3333b143de5ac4536618d04c0",
      "parents": [
        "87906f060a4d68cf223476a27e117ba65fd1ea03"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Sep 30 17:25:32 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 30 08:25:32 2025 +0000"
      },
      "message": "build(deps): bump pyyaml from 6.0.2 to 6.0.3 in /docs (#3308)\n\nBumps [pyyaml](https://github.com/yaml/pyyaml) from 6.0.2 to 6.0.3.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e\n-- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e\nRelease 6.0.3 (\u003ca\nhref\u003d\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dpyyaml\u0026package-manager\u003dpip\u0026previous-version\u003d6.0.2\u0026new-version\u003d6.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "87906f060a4d68cf223476a27e117ba65fd1ea03",
      "tree": "e991285c6a9d2f6eceea7e5fd55c8fe68ed60392",
      "parents": [
        "c4935b1f3566a2793fae7d01f85ebe15a3addf71"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Mon Sep 29 01:08:28 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 29 08:08:28 2025 +0000"
      },
      "message": "fix: handle urls without release id format (#3306)\n\nSometimes when users customize the URLs for release, they use urls that\ndon\u0027t have\nthe same format the python-build-standalone URLs. Namely, they may not\nhave\nthe release_id component of the url. This would result in an error\nparsing such\nurls.\n\nTo fix, refine the url parsing to check if a component is a valid\nnumeric release id.\n\nFixes https://github.com/bazel-contrib/rules_python/issues/3285"
    },
    {
      "commit": "c4935b1f3566a2793fae7d01f85ebe15a3addf71",
      "tree": "80a625452c9bcab39ae4d62bbbd45d46977588c9",
      "parents": [
        "3ad6cb464e926609015632a9c5ded1232de34b5b"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Sun Sep 28 22:17:58 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 29 05:17:58 2025 +0000"
      },
      "message": "docs: add config bzlmod extension to docs (#3305)\n\nThe original PR omitted the target from the docs, so it was absent.\n\nAlong the way, fix some incorrect deps for its target so docs build."
    },
    {
      "commit": "3ad6cb464e926609015632a9c5ded1232de34b5b",
      "tree": "f3c33de5fd23dee0e3f1f38f4bcb3b75a578857d",
      "parents": [
        "08bd45101a5887a8b1449f39ff29764b3fe19d79"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Sun Sep 28 18:39:44 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 29 01:39:44 2025 +0000"
      },
      "message": "fix(uv): make uv lock rule work with platform python runtime (#3303)\n\nA platform runtime is when the interpreter is provided as an absolute\npath to Python\ninstead of bundled in the runfiles. The uv lock rule almost worked, it\njust didn\u0027t\nhandle the runtime files being empty in such a case.\n\nTo fix, use an empty depset to satisfy the subsequent APIs that use it."
    },
    {
      "commit": "08bd45101a5887a8b1449f39ff29764b3fe19d79",
      "tree": "963a0f60a86bf8f6a5ef8535fb22a805f99189f5",
      "parents": [
        "5dfd1993ab797b179e5e85064edd2638263dab73"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Sun Sep 28 18:38:01 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 29 01:38:01 2025 +0000"
      },
      "message": "docs: fix spelling of venvs_site_packages flag in changelog (#3302)\n\nThe flag name for the `--venvs_site_packages` flag was misspelled in the\nchangelog."
    },
    {
      "commit": "5dfd1993ab797b179e5e85064edd2638263dab73",
      "tree": "a5639730a00134a1a9312a1066bc11c392501ca2",
      "parents": [
        "65f4c6e08f11afc218b48907daaa942af43a77c5"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Sun Sep 28 14:56:02 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 28 21:56:02 2025 +0000"
      },
      "message": "chore: use python.defaults to set rules_python default python version (#3301)\n\npython.defaults is the modern way to set the default.\n\nSetting it this way also helps avoid a bug where if a root module has a\nsingle `python.toolchain()` call (which are implicitly treated as\n`is_default\u003dTrue`) and also sets the default using `python.defaults()`,\nsome validation logic gives an error about using both ways to set a\ndefault."
    },
    {
      "commit": "65f4c6e08f11afc218b48907daaa942af43a77c5",
      "tree": "84211cea2447cbef9e463712ec89e0ae44e8ce48",
      "parents": [
        "726ffa27b6698a7544e4c6825f0626bbbb07a983"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Sun Sep 28 12:09:48 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 28 03:09:48 2025 +0000"
      },
      "message": "refactor: rename symbols in re-exports (#3300)\n\nA followup to #3282 to finish up the cleanup and remove the unnecessary\n`starlark` usage in naming."
    },
    {
      "commit": "726ffa27b6698a7544e4c6825f0626bbbb07a983",
      "tree": "bef6253aefe46dc62f2c906bb66264185482c298",
      "parents": [
        "f2668295be2f73623ea0ed62f2942ecfd448c8d2"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Sun Sep 28 10:24:39 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 28 01:24:39 2025 +0000"
      },
      "message": "chore: cleanup bazel flags related to bazel 6 or below (#3282)\n\nSummary:\n* refactor: use rules_shell runfiles lib\n* refactor: remove watch helpers\n* refactor: remove usage of select helper\n* refactor: make enable_pystar fixed and cleanup code\n* refactor: remove migration tag helper\n* refactor: remove is_bazel_6_or_higher\n* refactor: remove is_bazel_6_4_or_higher\n* refactor: remove is_bazel_7_or_greater\n* remove: is_bazel_7_4_or_greater\n* fix: pipstar env var is now respected\n* chore: drop bazel 5 support code\n* chore: add an override for bzlmod example\n* chore: remove version specific globs, since the supported versions\n  support spaces in filenames and the file becomes redundant."
    },
    {
      "commit": "f2668295be2f73623ea0ed62f2942ecfd448c8d2",
      "tree": "680a3ec2d82bedc7604ec6f868e0b60f2e64f0ac",
      "parents": [
        "c5662583fed5d0418cfbc0f514935752ce950fae"
      ],
      "author": {
        "name": "Jeff Klukas",
        "email": "jklukas@netflix.com",
        "time": "Fri Sep 26 19:27:48 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 26 23:27:48 2025 +0000"
      },
      "message": "feat(runfiles): support for --incompatible_compact_repo_mapping_manifest (#3277)\n\nUnder bzlmod, the repo mapping can become quite large (i.e. tens of\nmegabytes)\nbecause its size scales as a factor of the number of repos in the\ntransitive\ndependencies.\n\nTo address this, the --incompatible_compact_repo_mapping_manifest flag\nwas introduced.\nThis changes the repo mapping formation to use prefixes (instead of\nexact repo names)\nfor mapping things.\n\nTo make this work with the runfiles library, the code has to be updated\nto handle\nthese prefixes instead of just exact strings.\n\nFixes #3022.\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e"
    },
    {
      "commit": "c5662583fed5d0418cfbc0f514935752ce950fae",
      "tree": "172bd2082d28f6431c461b46167a8f7fa11f4f3b",
      "parents": [
        "05735c8fa4ab81077a73baca2c9c6ec18091609a"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Fri Sep 26 16:25:36 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 26 23:25:36 2025 +0000"
      },
      "message": "docs: add example for a complex multi-platform pypi configuration (#3292)\n\nThe core PyPI docs and API reference docs have the basics for setting up\na multi-platform\nBazel build, but there\u0027s a lot of cross-referencing and reading between\nthe lines necessary.\n\nCreate a how to guide specifically on how to do it to better explain the\nnuances.\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "05735c8fa4ab81077a73baca2c9c6ec18091609a",
      "tree": "062f06d104f56954107813c3327c151b16d31b3f",
      "parents": [
        "5b5e58f4f6fe5e350826f34666570bf7d364e78d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Sep 23 11:25:14 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 18:25:14 2025 +0000"
      },
      "message": "build(deps): bump jaraco-functools from 4.1.0 to 4.3.0 in /tools/publish (#3288)\n\nBumps [jaraco-functools](https://github.com/jaraco/jaraco.functools)\nfrom 4.1.0 to 4.3.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/blob/main/NEWS.rst\"\u003ejaraco-functools\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev4.3.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd none_as function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.2.1\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch1\u003ev4.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u0027passthrough\u0027 function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded missing \u003ccode\u003esplat\u003c/code\u003e in stubs -- by\n:user:\u003ccode\u003eAvasam\u003c/code\u003e (\u003ca\nhref\u003d\"https://redirect.github.com/jaraco/jaraco.functools/issues/29\"\u003e#29\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/commit/9f4e0e2849659969577f40be40cabe026dd5fb0f\"\u003e\u003ccode\u003e9f4e0e2\u003c/code\u003e\u003c/a\u003e\nFinalize\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/commit/680b9aeed7c2f22f7a662b8c87af013d6ec4a076\"\u003e\u003ccode\u003e680b9ae\u003c/code\u003e\u003c/a\u003e\nAdd none_as function.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/commit/e4644e208414137c3c2618bd1c1c1dcf23a895bc\"\u003e\u003ccode\u003ee4644e2\u003c/code\u003e\u003c/a\u003e\nFinalize\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/commit/1836d9d7ff7c3552de2885df20ef7c07b2381219\"\u003e\u003ccode\u003e1836d9d\u003c/code\u003e\u003c/a\u003e\nAdd type annotations to passthrough.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/commit/48e5e77ed86c07ee28993f5995846f414206b811\"\u003e\u003ccode\u003e48e5e77\u003c/code\u003e\u003c/a\u003e\nFinalize\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/commit/dcb95f0762f755c7fa4abc4883ddad28508640c7\"\u003e\u003ccode\u003edcb95f0\u003c/code\u003e\u003c/a\u003e\nAdd \u0027passthrough\u0027 function.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/commit/c3a9785c985da57c6f3d40eea483b742a766a659\"\u003e\u003ccode\u003ec3a9785\u003c/code\u003e\u003c/a\u003e\nMerge \u003ca\nhref\u003d\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/commit/5a6c1532c206871bc2913349d97dda06e01b9963\"\u003e\u003ccode\u003e5a6c153\u003c/code\u003e\u003c/a\u003e\nBump to setuptools 77 or later.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/commit/b535e75e95389eb8a16e34b238e2483f498593c8\"\u003e\u003ccode\u003eb535e75\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#173\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/commit/d2b8d7750f78e870def98c4e04053af4acc86e29\"\u003e\u003ccode\u003ed2b8d77\u003c/code\u003e\u003c/a\u003e\nAdd coherent.licensed plugin to inject license texts into the\nbuild.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/jaraco/jaraco.functools/compare/v4.1.0...v4.3.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003djaraco-functools\u0026package-manager\u003dpip\u0026previous-version\u003d4.1.0\u0026new-version\u003d4.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5b5e58f4f6fe5e350826f34666570bf7d364e78d",
      "tree": "660e0dd2b7892b6b0dac46f97ca6d17f0fd015ba",
      "parents": [
        "45762fc5ee7eb3c3f8943f9a2a47303233a25800"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 22 19:41:22 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 02:41:22 2025 +0000"
      },
      "message": "build(deps): bump docutils from 0.21.2 to 0.22.2 in /docs (#3287)\n\nBumps [docutils](https://github.com/rtfd/recommonmark) from 0.21.2 to\n0.22.2.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca\nhref\u003d\"https://github.com/rtfd/recommonmark/commits\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003ddocutils\u0026package-manager\u003dpip\u0026previous-version\u003d0.21.2\u0026new-version\u003d0.22.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "45762fc5ee7eb3c3f8943f9a2a47303233a25800",
      "tree": "53d6c5cf3f1098688e0d2426a2c5b29de5cb9b52",
      "parents": [
        "fec87e4f987f6bed7344d03cb4277c50d33a2d71"
      ],
      "author": {
        "name": "Greg",
        "email": "gregestren@users.noreply.github.com",
        "time": "Mon Sep 22 22:40:01 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 02:40:01 2025 +0000"
      },
      "message": "refactor: read migrated native flags through a centralized accessor function (#3290)\n\nThis lets Python logic support either Starlark- or native-defined flags,\nbased on Bazel support:\n\n- Pre-Bazel 9.0: always use native flags\n- Bazel 9.0+: use Starlark flags if [incompatible\nchange](https://github.com/bazelbuild/bazel/pull/27056) that disables\n`ctx.fragments.py` and `ctx.fragments.bazel_py` is set\n- Include a developer override to trigger Starlark versions while\ntesting Starlarkification. Developers enable this by updating .bzl code\nin their local workspace. This can be removed as soon as\nStarlarkification is complete\n\nAlso check in a Starlark version of\n`--experimental_python_import_all_repositories` for testing.\n\n**This is a no-op. New flag sources of truth don\u0027t take effect without a\nsupporting bazel version that sets appropriate incompatible flags.**\n\n**Caveats:**\n\n- May not work with `configuration_field` as implemented. We can loosen\nthe incompatible flag lockdown if that\u0027s an issue.\n\nFor https://github.com/bazel-contrib/rules_python/issues/3252\n\nTODO list\n\n* [ ] Add docs to docs/api/rules_python/python/config_settings/index.md\nfor starlarkified flags"
    },
    {
      "commit": "fec87e4f987f6bed7344d03cb4277c50d33a2d71",
      "tree": "cfef5ac8bb7cb0c60f19ece7dc0065015fb9dd1a",
      "parents": [
        "cdfa93ea7994cfcb1f45e579efb645fb65b84cd4"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Mon Sep 22 11:21:05 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 22 02:21:05 2025 +0000"
      },
      "message": "docs: move 1.6.3 related changelog (#3284)\n\nThis fixes the changelog and manually changes the version updated tag.\n\nThe changes have been also cherry-picked to the release branch as I saw\nrelease fail in the [workflow]. Hence this has become a 1.6.3 instead.\n\n[workflow]:\nhttps://github.com/bazel-contrib/rules_python/actions/runs/17894155072/job/50878515841\n\nFixes #3273\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "cdfa93ea7994cfcb1f45e579efb645fb65b84cd4",
      "tree": "62ed967d28623cf97714c80cb948aab555a8ce7c",
      "parents": [
        "3b48bf81263526f28a41f07176859397033c2160"
      ],
      "author": {
        "name": "Nicholas Junge",
        "email": "nicholas.junge@web.de",
        "time": "Sun Sep 21 21:27:56 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 21 19:27:56 2025 +0000"
      },
      "message": "feat(toolchains): ABI3 Python headers target (#3274)\n\nUntil now, we silently link extensions with both stable and unstable ABI\nlibs,\nwith the latter taking precedence in symbol resolution, because it\nappears first\nin the linker command AND, crucially, contains all CPython symbols\npresent in\nthe stable ABI library, thus overriding them. This has the effect that\nstable\nABI extensions on Windows are usable only with the Python distribution\nthat they\nwere built on.\n\nTo fix, a separate ABI3 header target is introduced, and should be used\nfor C++\nextensions on Windows if stable ABI builds are requested.\n\nIdea as formulated by `@dgrunwald-qt` in\nhttps://github.com/nicholasjng/nanobind-bazel/issues/72#issuecomment-3249959583.\n\nThis is motivated by\nhttps://github.com/nicholasjng/nanobind-bazel/issues/72.\n\nThis change shifts stable ABI selection on Windows to the extension\ndeveloper, where\nit has arguably always been (they had to set the `Py_LIMITED_API`\nmacro).\n\nAn upside of this approach is that with a separate target, the question\n\"stable ABI\nor not\" can be decided on an extension-by-extension basis, giving\nmaximum flexibility\nto developers. This should not influence the wheel platform target,\nbecause a wheel\nis marked ABI3 if and only if all of its extensions are marked as ABI3.\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crlevasseur@google.com\u003e\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e"
    },
    {
      "commit": "3b48bf81263526f28a41f07176859397033c2160",
      "tree": "9577002dcf2aeb6c7e0627489ebd288465824015",
      "parents": [
        "df9e94ece96336a007a879285ca37eef3f548e63"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Sun Sep 21 22:18:44 2025 +0900"
      },
      "committer": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Sun Sep 21 22:18:44 2025 +0900"
      },
      "message": "docs: move 1.6.2 related changelog\n\nFixes #3273\n"
    },
    {
      "commit": "df9e94ece96336a007a879285ca37eef3f548e63",
      "tree": "c065f027672da234de398d85c370451560512671",
      "parents": [
        "5c6acb0f03a1d2d536281e6041c71eb6b75962a0"
      ],
      "author": {
        "name": "Greg",
        "email": "gregestren@users.noreply.github.com",
        "time": "Sat Sep 20 15:03:19 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 20 19:03:19 2025 +0000"
      },
      "message": "chore: remove non-toolchain runtime resolution logic. (#3280)\n\nFinding the Python runtime via toolchain resolution has been enabled by\ndefault for\nmany years. Toolchains are the preferred mechanism for specifying Python\nruntime info.\nUsage of the non-toolchain ways should be approximately zero, and they\u0027d\nbe considered\nunsupported anyways. Hence this is not considered a breaking change.\n\nThis PR removes support for\n\n- \"If toolchains disabled\" logic\n(`--incompatible_use_python_toolchains`)\n- `configuration_field` on `python_top` (`--python_top` flag)\n- `_py_interpreter` attribute (plumbing for python_top flag)\n\nWork towards https://github.com/bazel-contrib/rules_python/issues/3252.\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5c6acb0f03a1d2d536281e6041c71eb6b75962a0",
      "tree": "4e9ce4fff967501f673124ed504d3b1a9089ce50",
      "parents": [
        "0cd9bfafc7ebf4cde2e4f84cab6ae756753f9660"
      ],
      "author": {
        "name": "Alex Eagle",
        "email": "alex@aspect.dev",
        "time": "Sat Sep 20 04:27:53 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 20 11:27:53 2025 +0000"
      },
      "message": "chore(docs): remove duplicate bzlmod guidance (#3278)\n\nIt\u0027s out of date with\nhttps://github.com/bazel-contrib/rules_python/blob/main/BZLMOD_SUPPORT.md\nwhich says the feature is GA now"
    },
    {
      "commit": "0cd9bfafc7ebf4cde2e4f84cab6ae756753f9660",
      "tree": "ff86717a186062de87c274f46b65c14c351fbb02",
      "parents": [
        "ac177a6cc8840cc3f2c020d49eabc0186e25b122"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Wed Sep 17 22:27:29 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 18 05:27:29 2025 +0000"
      },
      "message": "tests: make py_cc_toolchain test of headers/includes work with Bazel 9 (#3276)\n\nBazel 9 has a small change in cc_library behavior: the includes\nattribute populates\nthe `.includes` instead of `.system_includes`. This is OK for\nrules_python, since both\nresult in the includes being added as system include paths.\n\nTo fix, change the test to look at both; as long as the include paths\nare in one,\nthen its OK.\n\nFixes https://github.com/bazel-contrib/rules_python/issues/3239"
    },
    {
      "commit": "ac177a6cc8840cc3f2c020d49eabc0186e25b122",
      "tree": "695002fcfa5332b0a2a2b6039510823fc0099f90",
      "parents": [
        "15b5da7d79b6eaa31f65fb771b2ac238f6254a8b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Sep 16 19:21:44 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 17 02:21:44 2025 +0000"
      },
      "message": "build(deps): bump pkginfo from 1.10.0 to 1.12.1.2 in /tools/publish (#3229)\n\nBumps [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) from\n1.10.0 to 1.12.1.2.\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dpkginfo\u0026package-manager\u003dpip\u0026previous-version\u003d1.10.0\u0026new-version\u003d1.12.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "15b5da7d79b6eaa31f65fb771b2ac238f6254a8b",
      "tree": "3fa34cc65f4a81b4e13db4c55009c26b6d341470",
      "parents": [
        "ea4b0404abbe762b6a3fada53f4539b6ee8e4afd"
      ],
      "author": {
        "name": "Mai Hussien",
        "email": "70515749+mai93@users.noreply.github.com",
        "time": "Tue Sep 16 17:16:02 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 17 00:16:02 2025 +0000"
      },
      "message": "build: remove no-op _native_rules_allowlist (#3275)\n\nRemove `_native_rules_allowlist` attribute as it is no-op\n\nThis is needed to allow removing the deprecated flag\n`--native_rules_allowlist` from bazel.\n\nWork towards: https://github.com/bazel-contrib/rules_python/issues/3252"
    },
    {
      "commit": "ea4b0404abbe762b6a3fada53f4539b6ee8e4afd",
      "tree": "05e38037e74e6cf0ea776751e5f44630b389a8f1",
      "parents": [
        "df8e93fc251133499f73bcfb5a876bdd51a81a42"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 15 23:31:33 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 16 06:31:33 2025 +0000"
      },
      "message": "build(deps): bump cffi from 1.17.1 to 2.0.0 in /tools/publish (#3270)\n\nBumps [cffi](https://github.com/python-cffi/cffi) from 1.17.1 to 2.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/releases\"\u003ecffi\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the\nfolks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;\u003d 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca\nhref\u003d\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;\u003d 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca\nhref\u003d\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e\nrelease 2.0.0 (\u003ca\nhref\u003d\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e\n2.0.0 post beta backports (\u003ca\nhref\u003d\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e\nRelease 2.0.0b1 (\u003ca\nhref\u003d\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e\nfix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e\nAdd support for the free-threaded build (\u003ca\nhref\u003d\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e\nChange the license from MIT to MIT-no-attribution, which is the same\nwithout ...\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e\nAdd Python 3.14 support/testing (\u003ca\nhref\u003d\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e\ndoc: update test commands in Section Testing/development tips (\u003ca\nhref\u003d\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e\ndoc: update year (\u003ca\nhref\u003d\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e\nissue 147: force-compute nested structs before parent structs. Occurs\nmainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dcffi\u0026package-manager\u003dpip\u0026previous-version\u003d1.17.1\u0026new-version\u003d2.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "df8e93fc251133499f73bcfb5a876bdd51a81a42",
      "tree": "a76c5f8b11249acc02cbbde8889ac6f3a1e7961f",
      "parents": [
        "cbc8774681a3c9cf70cf71ddf1a485e06cf20f59"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 15 23:31:11 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 16 06:31:11 2025 +0000"
      },
      "message": "build(deps): bump pycparser from 2.22 to 2.23 in /tools/publish (#3271)\n\nBumps [pycparser](https://github.com/eliben/pycparser) from 2.22 to\n2.23.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/eliben/pycparser/releases\"\u003epycparser\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease_v2.23\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow abstract declarator \u0026quot;static\u0026quot; (GH issue \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/issues/539\"\u003e#539\u003c/a\u003e)\nby \u003ca href\u003d\"https://github.com/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e in\n\u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca\nhref\u003d\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/550\"\u003eeliben/pycparser#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd dirent and socket typedefs. by \u003ca\nhref\u003d\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport for labels with no statement by \u003ca\nhref\u003d\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept empty \u0027case\u0027 or \u0027default\u0027 labels by \u003ca\nhref\u003d\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/564\"\u003eeliben/pycparser#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve parentheses for statement exprs by \u003ca\nhref\u003d\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hex float types by \u003ca\nhref\u003d\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/567\"\u003eeliben/pycparser#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit error for comments, with README link by \u003ca\nhref\u003d\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eshowemptyattrs option on Node.show() by \u003ca\nhref\u003d\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/570\"\u003eeliben/pycparser#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd fake typedefs for GNU Extension 128-bit integers. by \u003ca\nhref\u003d\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e\nin \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypedef for __kernel_sa_family_t in linux/socket.h by \u003ca\nhref\u003d\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e\nmade their first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href\u003d\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e made\ntheir first contribution in \u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca\nhref\u003d\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ehttps://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eliben/pycparser/commit/5b60167602e7914139b3e277266ccdff5c24dbf2\"\u003e\u003ccode\u003e5b60167\u003c/code\u003e\u003c/a\u003e\nPrepare for release 2.23\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eliben/pycparser/commit/7b24736bbb875a5c6c6f0520412f03aace75d0ee\"\u003e\u003ccode\u003e7b24736\u003c/code\u003e\u003c/a\u003e\nTypedef for __kernel_sa_family_t in _fake_typedefs.h (\u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eliben/pycparser/commit/90184f1f4eb1234fb9e7ae0c8b74eab9ea963482\"\u003e\u003ccode\u003e90184f1\u003c/code\u003e\u003c/a\u003e\nAdd fake typedefs for GNU Extension 128-bit integers. (\u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/issues/577\"\u003e#577\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eliben/pycparser/commit/f04fdcde3d95be4a632948718d0c46eac09c50ce\"\u003e\u003ccode\u003ef04fdcd\u003c/code\u003e\u003c/a\u003e\nshowemptyattrs option on Node.show() (\u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eliben/pycparser/commit/156eae7f42843d8a3e78a68995d9cc7485577e38\"\u003e\u003ccode\u003e156eae7\u003c/code\u003e\u003c/a\u003e\nExplicit error for comments, with README link (\u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/issues/569\"\u003e#569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eliben/pycparser/commit/2215299261306df71e2cec23bb3acd7b8f31f8db\"\u003e\u003ccode\u003e2215299\u003c/code\u003e\u003c/a\u003e\nfix: hex float types (\u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eliben/pycparser/commit/037bd31d4e0e69e8c4d80e45311ae46abc15dd4e\"\u003e\u003ccode\u003e037bd31\u003c/code\u003e\u003c/a\u003e\nfix: preserve parentheses for statement exprs (\u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eliben/pycparser/commit/9cecc090151b31d8821786bca3b25851a4a33272\"\u003e\u003ccode\u003e9cecc09\u003c/code\u003e\u003c/a\u003e\nAccept empty \u0027case\u0027 or \u0027default\u0027 labels (\u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/issues/564\"\u003e#564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eliben/pycparser/commit/7ae671d3ac44e1000bcbe7108b24bdb9187443ac\"\u003e\u003ccode\u003e7ae671d\u003c/code\u003e\u003c/a\u003e\nSupport for labels with no statement (\u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/eliben/pycparser/commit/42b542324859a108f2cf35bcfe21fe5877ceb091\"\u003e\u003ccode\u003e42b5423\u003c/code\u003e\u003c/a\u003e\nAdd dirent and socket typedefs. (\u003ca\nhref\u003d\"https://redirect.github.com/eliben/pycparser/issues/558\"\u003e#558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dpycparser\u0026package-manager\u003dpip\u0026previous-version\u003d2.22\u0026new-version\u003d2.23)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "cbc8774681a3c9cf70cf71ddf1a485e06cf20f59",
      "tree": "ffebc4781d32135cdf3149631cde04bc30db562c",
      "parents": [
        "77cf48db6914186efbaae05f6b9ae5941e760c7c"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Mon Sep 15 23:25:19 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 16 06:25:19 2025 +0000"
      },
      "message": "fix: venv site packages with pkgutil packages (#3268)\n\nCurrently, an error occurs if one packages files are intended to go into\na\nsub-directory of another package\u0027s directory. This can happen when\npkgutil-style\nnamespace packages are used, which results in multiple distributions\nwanting\nto install the same files (pkgutil `__init__.py` files) into the same\ntop-level\ndirectories. This eventually results in a Bazel error because Bazel\ndetects that\nthe one output is the prefix of another.\n\nTo fix, detect when distributions overlap in their paths and merge their\nfiles\nmanually. Internally, entries are sorted from shorted venv path to\nlongest,\nhowever, that\u0027s just an implementation detail.\n\nAlong the way, give agents better advice for bzl_library targets.\n\nFixes https://github.com/bazel-contrib/rules_python/issues/3204\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "77cf48db6914186efbaae05f6b9ae5941e760c7c",
      "tree": "8e4668cd4e43889254a5f9cca8535011f4d5e543",
      "parents": [
        "5fa1a87cd9d477311deaa6eb29e936c6ba7fd5fb"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Mon Sep 15 22:05:38 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 16 05:05:38 2025 +0000"
      },
      "message": "tests: add non-blocking ci config for bazel rolling (#3272)\n\nWith some core Bazel changes to flags coming that will affect us, and\nthe difficulty it\nis to keep the bazel-at-head-and-downstream pipeline green, I figured\nit\u0027d be a good idea\nto add a CI job that uses the weekly Bazel release so we can identify\nproblems sooner\nand more obviously.\n\nThe CI job only run on Ubuntu to save CI slots and is won\u0027t block merges\nif it has failures."
    },
    {
      "commit": "5fa1a87cd9d477311deaa6eb29e936c6ba7fd5fb",
      "tree": "15f66f59dd867cc8a031d15357b297659bbf46cb",
      "parents": [
        "668a551e0253ef205924e2bcecfc74468fae4983"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Tue Sep 16 11:55:46 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 16 02:55:46 2025 +0000"
      },
      "message": "fix(pypi): select the lowest available libc version by default (#3255)\n\nThe #3058 PR has subtly changed the default behaviour of\n`experimental_index_url` code path and I think in order to make things\neasier by default for our users we should go back to that behaviour.\n\nAnd in addition to this we are starting to make use of the Minimal\nVersion Selection algorithm for the platforms. This in general allows\nusers to configure the upper platform version for a particular wheel.\nThis meant that we had to change the semantics of the API a little:\n1. Use MVS for each platform platform tag.\n2. Make it such that earlier entries are overridden by later ones, i.e.\n   `[\"musllinux_*_x86_64\", \"musllinux_1_2_x86_64\"]` is effectively the\n   same as just `[\"musllinux_1_2_x86_64\"]`.\n\nA remaining thing that will be left as a followup for #2747 will be to\nfigure out how to allow users to ignore certain platform tags.\n\nFixes #3250\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "668a551e0253ef205924e2bcecfc74468fae4983",
      "tree": "e34e93425f2cbb83f2d928bf59743f7e807d91f0",
      "parents": [
        "029a4dc45cb34384d8ee2ceb57e7306eeec9f6dd"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Sun Sep 14 20:12:22 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 15 03:12:22 2025 +0000"
      },
      "message": "refactor: use common_labels.bzl for labels used across files (#3263)\n\nCleanup after the PR introducing the common labels file.\n\nTesting related labels (those starting with `//tests`) are left in\n`tests/support/support.bzl`.\n\nOnly labels that are used in two or more files are moved into\ncommon_labels. This avoids\nobscuring otherwise simple assignments like defaults for attributes. It\nalso acts as a\nsignal that, if something is in common_labels.bzl, be ware it\u0027s used in\nmultiple places.\n\nOnly non-testing related labels (those not under `//tests`) are moved\ninto common_labels."
    },
    {
      "commit": "e29e7e3ad52b062aef6683e0841fcaf852ee6591",
      "tree": "d7c03cc490e0ba4d2800440d226cc363228f873e",
      "parents": [
        "0d29aff08db3b640fa86b171ba3d8d48d3a7f4c1",
        "6cdaba72628dbc8659dd3403b46b5f73b1bf0f06"
      ],
      "author": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Thu Sep 11 15:54:51 2025 -0700"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Sep 11 15:54:51 2025 -0700"
      },
      "message": "ANDROID: kleaf: fix 2-stage bootstrapping for recursive Python invocations. am: 6cdaba7262\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/external/bazelbuild-rules_python/+/35633470\n\nChange-Id: I017656247220c6bc5aa64e893961947305bd0d46\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "029a4dc45cb34384d8ee2ceb57e7306eeec9f6dd",
      "tree": "b5b670814299836796114976fd7fad379b3b9fb0",
      "parents": [
        "35adf5c2379170eaf2e9529c8015fb9fba5770eb"
      ],
      "author": {
        "name": "Ben Axelrod",
        "email": "baxelrod@rai-inst.com",
        "time": "Thu Sep 11 15:56:51 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 11 19:56:51 2025 +0000"
      },
      "message": "docs: improve whl_library documentation (#3266)\n\nThe documentation for the `whl_patches` argument of `whl_library`\ncontained an error. I fixed it and also elaborated the text in places\nthat tripped me up.\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e"
    },
    {
      "commit": "6cdaba72628dbc8659dd3403b46b5f73b1bf0f06",
      "tree": "d7c03cc490e0ba4d2800440d226cc363228f873e",
      "parents": [
        "86939a5023807c8a44f504e956068a0e822e52c1"
      ],
      "author": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Thu Sep 11 19:34:42 2025 +0000"
      },
      "committer": {
        "name": "HONG Yifan",
        "email": "elsk@google.com",
        "time": "Thu Sep 11 19:47:14 2025 +0000"
      },
      "message": "ANDROID: kleaf: fix 2-stage bootstrapping for recursive Python invocations.\n\nFor recursive Python invocations (e.g. Kleaf integration test, where\nwe have `bazel run \u003cpy_binary\u003e` which calls another\n`bazel run \u003cpy_binary\u003e`), simply appending $venv_site_packages to\nPYTHONPATH won\u0027t work because the `import _bazel_site_init` of the\ninner py_binary will import the _bazel_site_init from the outer\npy_binary. To make this working properly, record an OLDPYTHONPATH\nvariable so in the inner py_binary, we append $venv_site_packages\nto OLDPYTHONPATH to form PYTHONPATH, removing the venv_site_packages\nof the outer py_binary.\n\nBug: 438286001\nChange-Id: I14197b7727065f9946ea7b32f7b13c09e3800e63\n"
    },
    {
      "commit": "35adf5c2379170eaf2e9529c8015fb9fba5770eb",
      "tree": "98224824cc18162e02652aa0b8ad5bba6df34859",
      "parents": [
        "b67b9b6f3a993ce901a8862b1dc8a25d7e0c4253"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Wed Sep 10 19:30:24 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 11 02:30:24 2025 +0000"
      },
      "message": "chore: add agents guidance for creating bzl_library targets (#3264)\n\nI found it was doing a very poor job, so some guidance is needed.\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b67b9b6f3a993ce901a8862b1dc8a25d7e0c4253",
      "tree": "632e0618b69247dccdd9791fa22bdd618504030b",
      "parents": [
        "cdd933879e9b2b172dde6360eff119485dd2f88a"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Tue Sep 09 13:33:06 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 09 20:33:06 2025 +0000"
      },
      "message": "docs: update changelog for config_settings attribute (#3257)\n\nAdd the config_settings and bzlmod/workspace apis to changelog.\n\nAlong the way, fix the filename for the common deps with pypi guide.\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "cdd933879e9b2b172dde6360eff119485dd2f88a",
      "tree": "6819b491f785d28a84a90579cd4fb6aa753db721",
      "parents": [
        "d91401ce196a6855c2856f211cc6f6c218a501db"
      ],
      "author": {
        "name": "Ed Schouten",
        "email": "eschouten@apple.com",
        "time": "Tue Sep 09 17:28:47 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 09 15:28:47 2025 +0000"
      },
      "message": "fix: don\u0027t call Args.add() with an integer (#3259)\n\nThe documentation for Bazel\u0027s Args states that standard conversion rules\nare only specified for strings, Files, and Labels. For all other types\nthe conversion to a string is done in an unspecified manner, which is\nwhy it should be avoided.\n\nLet\u0027s stay away from this unspecified behaviour by explicitly converting\nthe precompile optimization level to a string before calling Args.add()."
    },
    {
      "commit": "d91401ce196a6855c2856f211cc6f6c218a501db",
      "tree": "0bb91d59a00f33a8fd0f3341cb3a3d4a92a78ce1",
      "parents": [
        "37cb91a33fecc10597c67fef6fe0c35011cf7e67"
      ],
      "author": {
        "name": "Ed Schouten",
        "email": "eschouten@apple.com",
        "time": "Tue Sep 09 16:59:47 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 09 14:59:47 2025 +0000"
      },
      "message": "fix: ensure the stage1 bootstrap is executable (#3258)\n\nBazel tends to make files executable, even if ctx.actions.write() or\nctx.actions.expand_template() is called without is_executable \u003d True.\nHowever, in an analysis tool of mine that is a bit more pedantic than\nBazel this leads to the issue that py_binary() targets can\u0027t be executed\ndue to them not having a +x bit.\n\nConsidering that the stage2 bootstrap is marked executable, let\u0027s mark\nis_executable for consistency."
    },
    {
      "commit": "37cb91a33fecc10597c67fef6fe0c35011cf7e67",
      "tree": "671b79b6ab94c245c3a7e9253cbd343c6f5bace5",
      "parents": [
        "6df5cbb68b15b70ecff20d7054fb051edad41864"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Mon Sep 08 21:41:19 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 09 04:41:19 2025 +0000"
      },
      "message": "feat: allow registering arbitrary settings for py_binary transitions (#3248)\n\nThis implements the ability for users to add additional settings that\npy_binary, py_test,\nand py_wheel can transition on.\n\nThere were three main use cases motivating this feature:\n1. Making it easier to have multiple pypi dependency closures and shared\ndependencies.\n2. Making it easier to override flags for `py_wheel`.\n3. Making it easier to have per-target setting of things like\nbootstrap_impl, venv\n   site packages, etc.\n\nIt also adds most of our config settings to the the transition\ninputs/outputs for those\nrules, which allows users to per-target force particular settings\nwithout having to\nuse e.g. `with_cfg` to wrap a target with the desired transition\nsettings. It also\nlets use avoid adding dozens of attributes (one per setting); today\nthere are\nabout 17 flags.\n\nUnder the hood, this works by having a bzlmod api that users can pass\nlabels to. These\nlabels are put into a generated bzl file, which the rules load and add\nto their\nlist of transition inputs/outputs. On the target level, the\n`config_settings` attribute,\nwhich is a `dict[label, str]`, can be set to change the particular flags\nof interest.\n\nAlong the way...\n* Create a common_labels.bzl file for the shared label strings\n* Remove the defunct py_reconfig code in sh_py_run_test.\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "6df5cbb68b15b70ecff20d7054fb051edad41864",
      "tree": "6172b0bef576316e40e0fac9c77443b872ab48b8",
      "parents": [
        "43c3013a086cc140b795f17cd224118f650305d1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 08 19:47:24 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 09 02:47:24 2025 +0000"
      },
      "message": "build(deps): bump more-itertools from 10.7.0 to 10.8.0 in /tools/publish (#3254)\n\nBumps [more-itertools](https://github.com/more-itertools/more-itertools)\nfrom 10.7.0 to 10.8.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/releases\"\u003emore-itertools\u0027s\nreleases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 10.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat\u0027s Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typo in version history for 10.7.0 by bbayles in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/981\"\u003emore-itertools/more-itertools#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 980: Fix variable names: iterable vs iterator by rhettinger in\n\u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/982\"\u003emore-itertools/more-itertools#982\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove docstrings for dft, idft, and multinomial by rhettinger in\n\u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/983\"\u003emore-itertools/more-itertools#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a note about polynomial endianness by bbayles in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/984\"\u003emore-itertools/more-itertools#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license identifier by cdce8p in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/978\"\u003emore-itertools/more-itertools#978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove setup.py file by cdce8p in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/979\"\u003emore-itertools/more-itertools#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ederangements\u003c/code\u003e by itself by bbayles in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/985\"\u003emore-itertools/more-itertools#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd derangements by debruijn in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/946\"\u003emore-itertools/more-itertools#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 986: argmin and argmax by bbayles in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/988\"\u003emore-itertools/more-itertools#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit-out the integer math functions by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/990\"\u003emore-itertools/more-itertools#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpelling, grammar, punctuation, and usage by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/991\"\u003emore-itertools/more-itertools#991\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the return type of more_itertools.batched by qobilidop in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/993\"\u003emore-itertools/more-itertools#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duplicate words in version_history.rst by saadmanrafat in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/992\"\u003emore-itertools/more-itertools#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove islice_extended memory usage when start\u0026lt;0 and step\u0026gt;0\nby ben42code in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/995\"\u003emore-itertools/more-itertools#995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnittest islice_extended impact on iterated elements lifecycle by\nben42code in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/996\"\u003emore-itertools/more-itertools#996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003econvolve() is agnostic to endianness by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/997\"\u003emore-itertools/more-itertools#997\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSample simplification by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/998\"\u003emore-itertools/more-itertools#998\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1005: Document difference from builtin min() and max(). by\nrhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1008\"\u003emore-itertools/more-itertools#1008\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGeneral cleanups by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1007\"\u003emore-itertools/more-itertools#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken link by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1004\"\u003emore-itertools/more-itertools#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd option for nth_prime() to be approximated by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1002\"\u003emore-itertools/more-itertools#1002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebefore_and_after improvement by pochmann3 in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1012\"\u003emore-itertools/more-itertools#1012\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFast paths instead of applying an identity function by rhettinger in\n\u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1018\"\u003emore-itertools/more-itertools#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpeed-up _complex_sumprod() by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1000\"\u003emore-itertools/more-itertools#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove islice_extended memory usage when stop\u0026lt;0 and step\u0026gt;0 by\nben42code in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/999\"\u003emore-itertools/more-itertools#999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd derangements() to the doc indexes by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1020\"\u003emore-itertools/more-itertools#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove readability/findability with combinatoric subsections by\nrhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1022\"\u003emore-itertools/more-itertools#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 1009: Confused docstring for minmax() by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1021\"\u003emore-itertools/more-itertools#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003einterleave_longest\u003c/code\u003e by pochmann3 in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1027\"\u003emore-itertools/more-itertools#1027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1001: fix last() when \u003cstrong\u003ereversed\u003c/strong\u003e is None by\ninventshah in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1028\"\u003emore-itertools/more-itertools#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1029: fix batched IDE/help() docs by inventshah in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1031\"\u003emore-itertools/more-itertools#1031\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emark_ends\u003c/code\u003e by pochmann3 in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1035\"\u003emore-itertools/more-itertools#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd usage notes for sample() by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1037\"\u003emore-itertools/more-itertools#1037\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring and comment in private _nth_prime_bounds function by\nrhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1036\"\u003emore-itertools/more-itertools#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix linespacing by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1038\"\u003emore-itertools/more-itertools#1038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd running_median by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1039\"\u003emore-itertools/more-itertools#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erunning_median() with windowed data by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1040\"\u003emore-itertools/more-itertools#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin furo to 2024.08.06 by bbayles in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1043\"\u003emore-itertools/more-itertools#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix invisible REPL output in HTML dark mode by moreati in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1045\"\u003emore-itertools/more-itertools#1045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse python instead of python3 when running tests by ktbarrett in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1051\"\u003emore-itertools/more-itertools#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1044: Add new tool: extract() by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1056\"\u003emore-itertools/more-itertools#1056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest 3.14.0-rc.2 by bbayles in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1060\"\u003emore-itertools/more-itertools#1060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunzip\u003c/code\u003e: replace custom itemgetter by pochmann3 in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1059\"\u003emore-itertools/more-itertools#1059\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einterleave_randomly\u003c/code\u003e by ktbarrett in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1048\"\u003emore-itertools/more-itertools#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1003: Multidimensional reshape() by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1062\"\u003emore-itertools/more-itertools#1062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGet coverage to 100% by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1065\"\u003emore-itertools/more-itertools#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove count_cycle() by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1066\"\u003emore-itertools/more-itertools#1066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarify how derangements treats duplicate inputs by rhettinger in \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/pull/1069\"\u003emore-itertools/more-itertools#1069\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/commit/8c1a6ef241b51ff055e89219f050ccf4f15f37f6\"\u003e\u003ccode\u003e8c1a6ef\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/issues/1071\"\u003e#1071\u003c/a\u003e\nfrom more-itertools/version-10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/commit/24be4400152530567fc308578ce5e8072ad77982\"\u003e\u003ccode\u003e24be440\u003c/code\u003e\u003c/a\u003e\nAdd note for issue 1054\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/commit/3dd5980a6d73bb9902a4ab1fb1eb05d512081f86\"\u003e\u003ccode\u003e3dd5980\u003c/code\u003e\u003c/a\u003e\nAdd a note for issue 1063\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/commit/2ce52d104921364729df909c03f52ae7e2085f82\"\u003e\u003ccode\u003e2ce52d1\u003c/code\u003e\u003c/a\u003e\nUpdate docs for 10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/commit/eae915618a81fa1263484630c892408fc5670d5a\"\u003e\u003ccode\u003eeae9156\u003c/code\u003e\u003c/a\u003e\nBump version: 10.7.0 → 10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/commit/a80f1c56f513a2758445372f263efae6f7337561\"\u003e\u003ccode\u003ea80f1c5\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/issues/1068\"\u003e#1068\u003c/a\u003e\nfrom rhettinger/cleanup_tail\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/commit/57015894e4f043f33b98d5565b720054e926bc14\"\u003e\u003ccode\u003e5701589\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/issues/1067\"\u003e#1067\u003c/a\u003e\nfrom rhettinger/reshape_beautification\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/commit/58e0331c4e542ea950aa0e55bfecd2eeb9e641d8\"\u003e\u003ccode\u003e58e0331\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/more-itertools/more-itertools/issues/1069\"\u003e#1069\u003c/a\u003e\nfrom rhettinger/derangements_doc\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/commit/9a3d7e31e6956446453ee0a9224b842bf21e3022\"\u003e\u003ccode\u003e9a3d7e3\u003c/code\u003e\u003c/a\u003e\nClarify how derangements treats duplicate inputs\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/commit/c509b1434ebe5201a6f7298d7495da5914dd88d4\"\u003e\u003ccode\u003ec509b14\u003c/code\u003e\u003c/a\u003e\nClean-up tail(). Prefer try/except over the Sized ABC.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/more-itertools/more-itertools/compare/v10.7.0...v10.8.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dmore-itertools\u0026package-manager\u003dpip\u0026previous-version\u003d10.7.0\u0026new-version\u003d10.8.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "43c3013a086cc140b795f17cd224118f650305d1",
      "tree": "95a9b479900e59b818220269067028f3518aa6bb",
      "parents": [
        "9ba8c127a111f9695087ce22cb00c78cf75f5ec1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Sep 08 19:46:16 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 09 02:46:16 2025 +0000"
      },
      "message": "build(deps): bump zipp from 3.20.2 to 3.23.0 in /tools/publish (#3253)\n\nBumps [zipp](https://github.com/jaraco/zipp) from 3.20.2 to 3.23.0.\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca\nhref\u003d\"https://github.com/jaraco/zipp/blob/main/NEWS.rst\"\u003ezipp\u0027s\nchangelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev3.23.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a compatibility shim for Python 3.13 and earlier. (\u003ca\nhref\u003d\"https://redirect.github.com/jaraco/zipp/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev3.22.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBackported simplified tests from \u003ca\nhref\u003d\"https://redirect.github.com/python/cpython/issues/123424\"\u003epython/cpython#123424\u003c/a\u003e.\n(\u003ca\nhref\u003d\"https://redirect.github.com/jaraco/zipp/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003e.name\u003c/code\u003e, \u003ccode\u003e.stem\u003c/code\u003e, and other\nbasename-based properties on Windows when working with a zipfile on\ndisk. (\u003ca\nhref\u003d\"https://redirect.github.com/jaraco/zipp/issues/133\"\u003e#133\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev3.21.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performances of :meth:\u003ccode\u003ezipfile.Path.open\u003c/code\u003e for\nnon-reading modes. (1a1928d)\u003c/li\u003e\n\u003cli\u003eRely on cached_property to cache values on the instance.\u003c/li\u003e\n\u003cli\u003eRely on save_method_args to save method args.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/zipp/commit/ccb41118d730036782d809b71773b719c48a680d\"\u003e\u003ccode\u003eccb4111\u003c/code\u003e\u003c/a\u003e\nFinalize\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/zipp/commit/5b5725d143f7bbcddabd91cfed3a708f24a3ed66\"\u003e\u003ccode\u003e5b5725d\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/jaraco/zipp/issues/146\"\u003e#146\u003c/a\u003e from\njaraco/debt/backport-\u003ca\nhref\u003d\"https://redirect.github.com/jaraco/zipp/issues/133337\"\u003egh-133337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/zipp/commit/c1dca821330e29b11d55dde216464656480c6740\"\u003e\u003ccode\u003ec1dca82\u003c/code\u003e\u003c/a\u003e\nRemove unused dependency.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/zipp/commit/717d770655b041c7b5e94cb89393a62761058582\"\u003e\u003ccode\u003e717d770\u003c/code\u003e\u003c/a\u003e\nAdd a compatibility shim for Python 3.13 and earlier.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/zipp/commit/d860de467a5887a6f09e5b66e4ef51f2e9c516fa\"\u003e\u003ccode\u003ed860de4\u003c/code\u003e\u003c/a\u003e\n\u003ca\nhref\u003d\"https://redirect.github.com/jaraco/zipp/issues/133306\"\u003egh-133306\u003c/a\u003e:\nUse \\z instead of \\Z in regular expressions in the stdlib (\u003ca\nhref\u003d\"https://redirect.github.com/jaraco/zipp/issues/133337\"\u003eGH-133337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/zipp/commit/30fe7ce5b42187b7fbc25eb7072ee193bbbdf8bb\"\u003e\u003ccode\u003e30fe7ce\u003c/code\u003e\u003c/a\u003e\nFinalize\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/zipp/commit/fe1690b368fbd5cd4097ff8648866ee5e051b44a\"\u003e\u003ccode\u003efe1690b\u003c/code\u003e\u003c/a\u003e\nRemove duplicate changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/zipp/commit/91bb1b6e462dd130c90ee13e7e7cc1ac4793a8c5\"\u003e\u003ccode\u003e91bb1b6\u003c/code\u003e\u003c/a\u003e\nMerge pull request \u003ca\nhref\u003d\"https://redirect.github.com/jaraco/zipp/issues/140\"\u003e#140\u003c/a\u003e from\nbarneygale/fix-133\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/zipp/commit/f49ec3074e947bd89659f765f5ec8564c9f9fe8d\"\u003e\u003ccode\u003ef49ec30\u003c/code\u003e\u003c/a\u003e\nAdd news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca\nhref\u003d\"https://github.com/jaraco/zipp/commit/309ecd394b10c1b480ddbbf483d5c819853c1e51\"\u003e\u003ccode\u003e309ecd3\u003c/code\u003e\u003c/a\u003e\nRe-use self.filename\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca\nhref\u003d\"https://github.com/jaraco/zipp/compare/v3.20.2...v3.23.0\"\u003ecompare\nview\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility\nscore](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name\u003dzipp\u0026package-manager\u003dpip\u0026previous-version\u003d3.20.2\u0026new-version\u003d3.23.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don\u0027t\nalter it yourself. You can also trigger a rebase manually by commenting\n`@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits\nthat have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after\nyour CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge\nand block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating\nit. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all\nof the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop\nDependabot creating any more for this major version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop\nDependabot creating any more for this minor version (unless you reopen\nthe PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop\nDependabot creating any more for this dependency (unless you reopen the\nPR or upgrade to it yourself)\n\n\n\u003c/details\u003e\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9ba8c127a111f9695087ce22cb00c78cf75f5ec1",
      "tree": "84d381fbaedb2fa0c9165542cbe07d2dcea2b8e1",
      "parents": [
        "5467ed6ae811e2e296ab960165e36f7285127465"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "240938+aignas@users.noreply.github.com",
        "time": "Mon Sep 08 17:22:31 2025 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 08 08:22:31 2025 +0000"
      },
      "message": "refactor: migrate tests to use hub_builder instead of full integration (#3247)\n\nThis PR migrates some of the tests that we had testing the full\nextension parsing to just test the hub builder.\n\nI ran out of time to migrate everything and there is a little bit of\ncopy pasted code. The goal is to make the assertions easier to\nunderstand because the nesting of the dictionaries will be not as large.\n\nLater we can add tests that are testing individual `hub_builder`\nmethods, which will be needed when we start implementing the\n`pip.configure` tag class or we implement a `py.lock` parsing.\n\nWork towards #2747\n\n---------\n\nCo-authored-by: gemini-code-assist[bot] \u003c176961590+gemini-code-assist[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5467ed6ae811e2e296ab960165e36f7285127465",
      "tree": "1f76bed36ca682fe5b30101803b6989c61bc05aa",
      "parents": [
        "e8d9cabbaaf4d1dabee9359c786b1dd1536013f5"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "richardlev@gmail.com",
        "time": "Sat Sep 06 19:22:24 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 07 02:22:24 2025 +0000"
      },
      "message": "docs: fix pr doc builds by removing external_version_warning plugin (#3244)\n\nDoc builds for PR were failing because the\nreadthedocs_ext.external_version_warning\nplugin wasn\u0027t handling something correctly. Activating it manually was\noriginally\ndone to get the warning banners to appear, but it looks like RTD now\ndisplays a\nwarning banner without this special plugin being needed.\n\nSince it\u0027s now unnecessary, remove the code that can activate it."
    }
  ],
  "next": "e8d9cabbaaf4d1dabee9359c786b1dd1536013f5"
}
