)]}'
{
  "log": [
    {
      "commit": "5ea804f7f32fd79a36d866faa34050dab8a3da03",
      "tree": "57087a36f5e04401566563131c7e42a46922f7bc",
      "parents": [
        "6d4fa3c72e292472c754c26d0ed22e48e09cc2fc"
      ],
      "author": {
        "name": "Chris Lewis",
        "email": "cflewis@google.com",
        "time": "Mon Sep 11 04:17:55 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 11 11:17:55 2023 +0000"
      },
      "message": "refactor: upgrade certifi (#1397)\n\nOlder versions of certifi allow for revoked HTTPS certificates. This\nchange updates usages of certifi to the first known-good version.\n\nSee https://security.snyk.io/vuln/SNYK-PYTHON-CERTIFI-5805047 and\nhttps://nvd.nist.gov/vuln/detail/CVE-2023-37920\n\n---------\n\nCo-authored-by: Greg \u003cgroodt@gmail.com\u003e"
    },
    {
      "commit": "6d4fa3c72e292472c754c26d0ed22e48e09cc2fc",
      "tree": "ae7a69bc1c3f8d106d0cd0e4ae82ef3e6d96169a",
      "parents": [
        "37452ab462adc5199af20a349158354280ee2516"
      ],
      "author": {
        "name": "Philipp Schrader",
        "email": "philipp.schrader@gmail.com",
        "time": "Fri Sep 08 08:56:38 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 08 15:56:38 2023 +0000"
      },
      "message": "Import pycross_wheel_library (#1403)\n\nThis patch imports a few files from jvolkman/rules_pycross at\n757033ff8afeb5f7090b1320759f6f03d9c4615c.\n\nI would like to re-use this rule for the `pypi_install` repo rule that\nI\u0027m working on. This rule extracts a downloaded wheel and generates an\nappropriate `PyInfo` provider for it.\n\nAll the .pyfiles are taken as-is without modification. I had to run\nbuildifier\non all the bazel-related files. As per bazelbuild/rules_python#1360,\nthat\nmeant that I had to add copyright headers.\n\nA followup patch will make tweaks so that the code can be used from\nwithin rules_python.\n\nReferences: #1360"
    },
    {
      "commit": "37452ab462adc5199af20a349158354280ee2516",
      "tree": "2d7def473adc92360ebc24d59469c83ed9818853",
      "parents": [
        "6461a693a919ccbe3b9d2ae9b44b22fd6a98e289"
      ],
      "author": {
        "name": "Philipp Schrader",
        "email": "philipp.schrader@gmail.com",
        "time": "Tue Sep 05 08:34:56 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 05 15:34:56 2023 +0000"
      },
      "message": "refactor: add missing `//python/config_settings/private:distribution` target (#1402)\n\nI\u0027m working on adding a new pip package download rule to the repo\ncalled `pypi_install`. For that, I set up a new\n`examples/pypi_install` directory. When I imported `rules_python` via\na `local_repository`, however, the build complained about missing\nfiles. This patch aims to fix that issue by making the missing files\navailable.\n\nI tried copying the other `distribution` targets when creating this\none."
    },
    {
      "commit": "6461a693a919ccbe3b9d2ae9b44b22fd6a98e289",
      "tree": "4ecdeb6e76a91073314c92a713a11ccf508dab6b",
      "parents": [
        "9818a60e687956dca60b0e1884b217ef6a1d1821"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "ignas.anikevicius@woven-planet.global",
        "time": "Mon Sep 04 14:25:16 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 04 05:25:16 2023 +0000"
      },
      "message": "fix(whl_library): avoid unnecessary repository rule restarts (#1400)\n\nPut the `PYTHONPATH` entries used in wheel building as a default value\nto a\nprivate attribute of the `whl_library` repository rule and use resolved\npath of\nthe interpreter target in creating execution environment to avoid\nrepository\nrule restarts when fetching external dependencies.\n\nThe extra private attribute on the `whl_library` removes all but one\nrestart\nand the extra refactor removes the last restart observed when running,\nwhich\nalso reduces the total execution time from around 50s to 43s on my\nmachine:\n```console\n$ cd examples/bzlmod\n$ bazel clean --expunge --async \u0026\u0026 bazel build //entry_points:yamllint\n```\n\nFixes #1399"
    },
    {
      "commit": "9818a60e687956dca60b0e1884b217ef6a1d1821",
      "tree": "b3116ce95f8ebf19d088f3e2cc761c7f44c02058",
      "parents": [
        "c32d2320d98f5b7633238bfee0c466eab5e703f3"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Sat Aug 26 05:34:23 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 25 20:34:23 2023 +0000"
      },
      "message": "feat(py_console_script_binary)!: entry points with custom dependencies (#1363)\n\nAdd `py_console_script_binary`, a macro/rule that allows better\ncustomization of how\nentry points are generated. Notable features of it are:\n* It allows passing in additional dependencies, which makes it easier\nfor plugin\n    dependencies to be added to tools such as pylint or sphinx.\n* The underlying `py_binary` rule can be passed in, allowing custom\nrules,\nsuch as the version-aware rules, to be used for the resulting binary.\n* Entry point generation is based upon a wheel\u0027s `entry_points.txt`\nfile. This helps\navoid loading external repositories unless they\u0027re actually used, allows\nentry\npoints to have better version-aware support, and allows bzlmod to\nprovide a\n    supportable mechanism for entry points.\n\nBecause the expected common use case is an entry point for our pip\ngenerated repos,\nthere is special logic to make that easy and concisely do. Usage of\n`py_console_script_binary` is not tied to our pip code generation,\nthough, and users can\nmanually specify dependencies if they need to.\n\nBREAKING CHANGE: This is a breaking change, but only for bzlmod users.\nNote that\nbzlmod support is still beta. Bzlmod users will need to replace using\n`entry_point`\nfrom `requirements.bzl` with loading `py_console_script_binary` and\ndefining the\nentry point locally:\n\n```\nload(\"@rules_python//python/entry_points:py_console_script_binary.bzl, \"py_console_script_binary\")\n\npy_console_script_binary(name\u003d\"foo\", pkg\u003d\"@mypip//pylint\")\n```\n\nFor workspace users, this new macro is available to be used, but the old\ncode is still\npresent.\n\nFixes #1362\nFixes #543\nFixes #979\nFixes #1262\nCloses #980\nCloses #1294\nCloses #1055\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e"
    },
    {
      "commit": "c32d2320d98f5b7633238bfee0c466eab5e703f3",
      "tree": "0419cf00b47518451b4c5a76b62c7ee8ea028d96",
      "parents": [
        "e3449dc0ee233def5520c7b77ee292bbc0f3ff94"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Wed Aug 23 08:25:12 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 23 15:25:12 2023 +0000"
      },
      "message": "docs: Use correct link to build badge image and build status page. (#1390)\n\nI\u0027m not sure what happened, but the old image url doesn\u0027t work anymore.\n\nAlso links to the canonical build status page; the old postsubmit url\nsimply\nredirects to the canonical url."
    },
    {
      "commit": "e3449dc0ee233def5520c7b77ee292bbc0f3ff94",
      "tree": "f3599463218259c15fb500ad6f4c6605fe8d0695",
      "parents": [
        "b4ab34edeb7156f30754f38f2aeb3ad832dcde57"
      ],
      "author": {
        "name": "Zhongpeng Lin",
        "email": "zplin@uber.com",
        "time": "Wed Aug 23 21:45:39 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 23 13:45:39 2023 +0000"
      },
      "message": "Adding kwargs to gazelle_python_manifest (#1289)\n\nAdding kwargs to gazelle_python_manifest, so we can set the tags and\nsize to the test. This is similar to:\n\n\nhttps://github.com/bazelbuild/rules_python/blob/5b8fa22a2f22501b18b4aea97c5dbfe3a6913a0c/python/pip_install/requirements.bzl#L20-L62\n\nAlternatively, we can add individual `go_test` attributes as needed.\nPlease advice which way is preferred."
    },
    {
      "commit": "b4ab34edeb7156f30754f38f2aeb3ad832dcde57",
      "tree": "65c10da34bcc89e5e3efd2ddcc6b8fc5b84e9c8b",
      "parents": [
        "9e59206e806ca8e06cb9761358c90a0faadf7773"
      ],
      "author": {
        "name": "Thulio Ferraz Assis",
        "email": "3149049+f0rmiga@users.noreply.github.com",
        "time": "Tue Aug 22 15:23:54 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 22 22:23:54 2023 +0000"
      },
      "message": "fix: bcr releaser email (#1392)\n\nFixes https://github.com/bazelbuild/bazel-central-registry/pull/863.\n\nThe aspect email is no longer associated with the github user, so the\nCLA bot but doesn\u0027t\nthink think the CLA is signed. To fix, change the email the BCR PRs are\npublished under\nto an address that is associated with the github user (and thus the\nCLA)."
    },
    {
      "commit": "9e59206e806ca8e06cb9761358c90a0faadf7773",
      "tree": "fcdf46c235281cb04b8367150878c6c51ae6bf6f",
      "parents": [
        "7e4d19c5312812c3157225bef939d316db636842"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Aug 22 14:48:11 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 22 21:48:11 2023 +0000"
      },
      "message": "doc: Note Python version changes in CHANGELOG (#1391)\n\nThese patch level bumps were done in #1370 and are part of the 0.25.0\nrelease."
    },
    {
      "commit": "7e4d19c5312812c3157225bef939d316db636842",
      "tree": "ac70c6b908d29b5dd2eb933aa78fc105c13adc31",
      "parents": [
        "fd71516813a08f50c9544f3c8b2d47eea146f28d"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Aug 22 14:07:31 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 22 21:07:31 2023 +0000"
      },
      "message": "Update changelog for 0.25.0 (#1389)\n\nThis is to prepare for the 0.25.0 release."
    },
    {
      "commit": "fd71516813a08f50c9544f3c8b2d47eea146f28d",
      "tree": "b1b091f58ed1ab299fc60ea508736460fdac3970",
      "parents": [
        "67072d9917dd3c4f145aaf5cc17190d3731c7b7d"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Aug 22 13:48:06 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 22 20:48:06 2023 +0000"
      },
      "message": "tests: Expose test\u0027s fake_header.h so py_cc_toolchain tests can use it. (#1388)\n\nNewer Bazel versions default to not exporting files by default; this\nexplicitly exports the file so it can be referenced."
    },
    {
      "commit": "67072d9917dd3c4f145aaf5cc17190d3731c7b7d",
      "tree": "7cd469f1e73813adf4d7528e25e45d23db49af0d",
      "parents": [
        "7d16af66171546f2256803ee86aa1a4648b41c5f"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Mon Aug 21 13:28:36 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 21 20:28:36 2023 +0000"
      },
      "message": "docs: add update changelog as part of pull request instructions (#1384)\n\nNow that we have a changelog, add a reminder to update it as part of\nPRs."
    },
    {
      "commit": "7d16af66171546f2256803ee86aa1a4648b41c5f",
      "tree": "1e6a7a829d74a39ae1a363018b69b60ab1ab9dd3",
      "parents": [
        "504caab8dece64bb7ee8f1eea975f56be5b6f926"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Mon Aug 21 08:29:13 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 21 15:29:13 2023 +0000"
      },
      "message": "feat: add CHANGELOG to make summarizing releases easier. (#1382)\n\nThis adds a changelog in a keepachanglog.com style format.\n\nIt\u0027s initially populated with currently unreleased behavior and the last\nrelease\u0027s (0.24.0) changes.\n\nWork towards #1361"
    },
    {
      "commit": "504caab8dece64bb7ee8f1eea975f56be5b6f926",
      "tree": "92081f054ea1a1818124d72bbb8b864f95975485",
      "parents": [
        "99695ee7ba21e4957943e91a97a1ebde8084d550"
      ],
      "author": {
        "name": "Namrata Bhave",
        "email": "Namrata.Bhave@ibm.com",
        "time": "Fri Aug 11 03:56:52 2023 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 10 22:26:52 2023 +0000"
      },
      "message": "feat: Update MINOR_MAPPING to latest version (#1370)\n\nThis PR bumps mappings to latest version. \n\nAdding changes in a separate PR as discussed\n[here](https://github.com/bazelbuild/rules_python/pull/1352#pullrequestreview-1565600824).\n\ncc @chrislovecnm"
    },
    {
      "commit": "99695ee7ba21e4957943e91a97a1ebde8084d550",
      "tree": "52aad28d5467a18276feccf91a00cb5cb3b0b994",
      "parents": [
        "e54981035f964d67eb52768b11b685627dab22fb"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Thu Aug 10 12:12:17 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 10 18:12:17 2023 +0000"
      },
      "message": "feat: Improve exec error handling (#1368)\n\nAt times binaries are not in the path. This commit tests that the binary\nexists before we try to execute the binary.\n\nThis allows us to provide a more informative error message to the user.\n\nCloses: https://github.com/bazelbuild/rules_python/issues/662\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e"
    },
    {
      "commit": "e54981035f964d67eb52768b11b685627dab22fb",
      "tree": "6d78b4e729cd3a309b57728f6e443df15bac39cb",
      "parents": [
        "0e0ac09e2273d12ed61c1ee427dafabf41aaa8a5"
      ],
      "author": {
        "name": "Namrata Bhave",
        "email": "Namrata.Bhave@ibm.com",
        "time": "Tue Aug 08 20:12:31 2023 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 08 14:42:31 2023 +0000"
      },
      "message": "feat: Add s390x release (#1352)\n\nInclude s390x in release and update python-build-standalone to 3.9.17,\n3.10.12, 3.11.4.\n[Latest python-build-standalone\nrelease](https://github.com/indygreg/python-build-standalone/releases/tag/20230726)\nhas s390x support added.\n\nThese changes are needed to build TensorFlow on s390x, which is\ncurrently blocked due to missing support."
    },
    {
      "commit": "0e0ac09e2273d12ed61c1ee427dafabf41aaa8a5",
      "tree": "d12946629ab4816b255d3023afbcf6b388deb292",
      "parents": [
        "fabb65f645163be264728236defee450e29b15ec"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Mon Aug 07 12:56:47 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 07 18:56:47 2023 +0000"
      },
      "message": "Feat: Using repo-relative labels (#1367)\n\nUpdated two files that used \u0027load(\"@rules_python\u0027 instead of\n\u0027load(\"//python\u0027.\n\nCloses: https://github.com/bazelbuild/rules_python/issues/1296"
    },
    {
      "commit": "fabb65f645163be264728236defee450e29b15ec",
      "tree": "1e816b49dedd83c47ac87ff185647bf19a9cdc54",
      "parents": [
        "c99aaec710fe81499eda7f111aa54e9d588d2bc9"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Sat Aug 05 01:29:36 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 04 16:29:36 2023 +0000"
      },
      "message": "refactor: support rendering pkg aliases without whl_library_alias (#1346)\n\nBefore this PR the only way to render aliases for PyPI package repos\nusing the version-aware toolchain was to use the `whl_library_alias`\nrepo.\nHowever, we have code that is creating aliases for packages within the\nhub repo\nand it is natural to merge the two approaches to keep the number of\nlayers of\nindirection to minimum.\n\n- feat: support alias rendering for python aware toolchain targets.\n- refactor: use render_pkg_aliases everywhere.\n- refactor: move the function to a private `.bzl` file.\n- test: add unit tests for rendering of the aliases.\n\nSplit from #1294 and work towards #1262 with ideas taken from #1320."
    },
    {
      "commit": "c99aaec710fe81499eda7f111aa54e9d588d2bc9",
      "tree": "e4dde08ceab42eeb705e18ce101510f51a1aa570",
      "parents": [
        "608ddb75057736f3f47095f5fe300f8a13a98bd0"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Fri Aug 04 05:06:40 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 03 20:06:40 2023 +0000"
      },
      "message": "feat: add a tool to update internal dependencies (#1321)\n\nBefore this change the updates to the dependencies would happen very\nseldomly, with this script, I propose we do it before each minor version\nrelease. Adding a shell script and adding a reminder to the release\nprocess may help with that."
    },
    {
      "commit": "608ddb75057736f3f47095f5fe300f8a13a98bd0",
      "tree": "c4acd3d9892f607a816d723d8a71de934687b7f1",
      "parents": [
        "e355becc30275939d87116a4ec83dad4bb50d9e1"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "ignas.anikevicius@woven-planet.global",
        "time": "Thu Aug 03 01:16:37 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 02 16:16:37 2023 +0000"
      },
      "message": "refactor(whl_library): move bazel file generation to Starlark (#1336)\n\nBefore this PR, the `wheel_installer` was doing three things:\n1. Downloading the right wheel.\n2. Extracting it into the output directory.\n3. Generating BUILD.bazel files based on the extracted contents.\n\nThis PR is moving the third part into the `whl_library` repository rule\nand it has the following benefits:\n* We can reduce code duplication and label sanitization functions in\n  rules_python.\n* There are many things that the `wheel_installer` does not care anymore\n  and we don\u0027t need to change less code when extending `whl_library` as\n  we can now do many things in starlark directly.\n* It becomes easier to change the API of how we expose the generated\n  BUILD.bazel patching because we only need to change the Starlark\n  functions.\n\nWork towards #1330."
    },
    {
      "commit": "e355becc30275939d87116a4ec83dad4bb50d9e1",
      "tree": "aba5f646720a9e1313e5630b738849a2083d8f1f",
      "parents": [
        "afc40f018b931a0abaa5497aa4484c7a3cda0b63"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Mon Jul 31 13:39:27 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 31 20:39:27 2023 +0000"
      },
      "message": "docs: Better explain when and how to use toolchains for bzlmod (#1349)\n\nThis explains the different ways to register toolchains and how to use\nthem.\n\nAlso fixes python_aliases -\u003e python_versions repo name"
    },
    {
      "commit": "afc40f018b931a0abaa5497aa4484c7a3cda0b63",
      "tree": "c84fa4b54948852f6c91ed24def5a496aff38019",
      "parents": [
        "bb8c4859950ecea29e794e85df579558c9d893fd"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Mon Jul 31 13:33:48 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 31 20:33:48 2023 +0000"
      },
      "message": "fix: Don\u0027t require default Python version for pip hubs (#1344)\n\nThis fixes the issue where a sub-module was required to always have a\npip.parse() call configured for the default Python version if it used\nany pip.parse() call. Such a\nrequirement puts sub-modules in an impossible situation:\n  * If they don\u0027t have the default version, they\u0027ll get an error.\n* If they register the default version, but also register a specific\nversion,\nthey\u0027ll potentially cause an error if a root module changes the default\nto\nmatch their specific version (because two pip.parse() calls for the same\nversion\n    are made, which is an error).\n\nThe requirement to have the default version registered for a pip hub was\nonly present to satisfy the `whl_library_alias` repository rule, which\nneeded a Python version to map `//conditions:default` to.\n\nTo fix, the `whl_library_alias` rule\u0027s `default_version` arg is made\noptional. When None is passed, the `//conditions:default` condition is\nreplaced with a `no_match_error` setting. This prevents the pip hub from\nbeing used with the version-unaware rules, but that makes sense: no\nwheels were setup for that version, so it\u0027s not like there is something\nthat\ncan be used anyways.\n\nFixes #1320"
    },
    {
      "commit": "bb8c4859950ecea29e794e85df579558c9d893fd",
      "tree": "b0810587428e50b25795417fe9bba1b6ac629c6b",
      "parents": [
        "0642390d387ac70e44ee794cc9c6dcf182762ad3"
      ],
      "author": {
        "name": "Zhongpeng Lin",
        "email": "zplin@uber.com",
        "time": "Thu Jul 27 20:06:16 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 28 00:06:16 2023 +0000"
      },
      "message": "feat: stop generating imports when not necessary (#1335)\n\nWhen gazelle:python_root is not set or is at the root of the repo, we\ndon\u0027t need to set imports for python rules, because that\u0027s the Bazel\u0027s\ndefault. This would reduce unnecessary verbosity."
    },
    {
      "commit": "0642390d387ac70e44ee794cc9c6dcf182762ad3",
      "tree": "1f5fa44dfd14a5c2d63926b637a3d13f5f25e324",
      "parents": [
        "23354a9b607ff0207e9a3c0cbe16724ec53997c1"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Tue Jul 25 19:37:32 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 26 01:37:32 2023 +0000"
      },
      "message": "revert(bzlmod)!: allow bzlmod pip.parse to implicitly use default python version (#1341)\n\nReverts bazelbuild/rules_python#1303\n\nThe main issue is that `pip.parse()` accepts a locked requirements file\n-- this means\nthe requirements are specific to a particular Python version[1]. Because\nthe default Python\nversion can arbitrarily change, the lock file may not be valid for the\nPython version\nthat is used at runtime. The net result is a module will use\ndependencies for e.g. Python\n3.8, but will use 3.9 at runtime. Additionally, the dependencies\nresolved for 3.8 will\nbe created under names such as `@foo_39` (because that\u0027s the\npython_version pip.parse sees),\nwhich is just more confusing.\n\nBREAKING CHANGE:\n* pip.parse() must have `python_version` explicitly set. Set it to the\nPython version\n    used to resolve the requirements file.\n\n[1] Lock files aren\u0027t necessarily version specific, but we don\u0027t\ncurrently support the\nenvironment markers in lock files to make them cross-python-version\ncompatible."
    },
    {
      "commit": "23354a9b607ff0207e9a3c0cbe16724ec53997c1",
      "tree": "9ef811116a614b42c90100c67ca2a50266b7ec50",
      "parents": [
        "bb7004b1c8e79220ad0212dbc131e11a06aecf6c"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Mon Jul 24 10:53:53 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 24 16:53:53 2023 +0000"
      },
      "message": "docs: Updating README (#1282)\n\nThis commit updates the README to meet the current bzlmod API. Some\ngeneral tweaks and cleanup as well."
    },
    {
      "commit": "bb7004b1c8e79220ad0212dbc131e11a06aecf6c",
      "tree": "1787110d4f5ba3a0aa45821df2f39f9a01cbb759",
      "parents": [
        "93f5ea2f01ce7eb870d3ad3943eda5d354cdaac5"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Mon Jul 24 02:23:46 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 23 17:23:46 2023 +0000"
      },
      "message": "refactor: add a version label function for consistent labels (#1328)\n\nBefore this PR there would be at least a few places where we would be\nconverting a `X.Y.Z` version string to a shortened `X_Y` or `XY` string\nsegment\nto be used in repository rule labels. This PR adds a small utility\nfunction\nthat helps making things consistent.\n\nWork towards #1262, split from #1294."
    },
    {
      "commit": "93f5ea2f01ce7eb870d3ad3943eda5d354cdaac5",
      "tree": "bce5dd8d806b43d0e19043b525224a095bd8def3",
      "parents": [
        "5c5ab5bd9577a284784d1c8b27bf58336de06010"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Fri Jul 21 20:59:44 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 21 11:59:44 2023 +0000"
      },
      "message": "refactor: have a single function for normalized PyPI package names (#1329)\n\nBefore this PR there were at least 2 places where such a helper function\nexisted and it made it very easy to make another copy. This PR\nintroduces a\nhardened version, that follows conventions from upstream PyPI and tests\nhave\nbeen added.\n\nSplit from #1294, work towards #1262."
    },
    {
      "commit": "5c5ab5bd9577a284784d1c8b27bf58336de06010",
      "tree": "85101abed37397f7fd869e3f63dc122b494692f6",
      "parents": [
        "5c37fa7f7a132432648b4e7970a0aa47c173f0fc"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "ignas.anikevicius@woven-planet.global",
        "time": "Thu Jul 20 11:27:36 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 20 02:27:36 2023 +0000"
      },
      "message": "fix(multi-versions): correctly default \u0027main\u0027 arg for transition rules (#1316)\n\nThis fixes a bug where the version-aware rules required `main` to always\nbe explicitly\nspecified. This was necessary because the main file is named after the\nouter target\n(e.g. \"foo\"), but usage of the main file is done by the inner target\n(\"_foo\"). The net\neffect is the inner target looks for \"_foo.py\", while only \"foo.py\" is\nin srcs.\n\nTo fix, the wrappers set main, if it isn\u0027t already set, to their name +\n\".py\"\n\nWork towards #1262"
    },
    {
      "commit": "5c37fa7f7a132432648b4e7970a0aa47c173f0fc",
      "tree": "3d2f1bc8754ca2366b1e44cbe1a268a99d8d223b",
      "parents": [
        "5416257a4956f531ab88655c1e9c9c69e551fe7e"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Jul 18 14:59:33 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 18 21:59:33 2023 +0000"
      },
      "message": "cleanup: Add placeholder comment to defs.bzl to make patching loads easier (#1319)\n\nThis just adds a no-op comment to defs.bzl to make patching its load\nstatements easier.\n\nRather than looking for the last load (or the conveniently loaded \"#\nExport ...\" comment),\njust have an explicit comment for it."
    },
    {
      "commit": "5416257a4956f531ab88655c1e9c9c69e551fe7e",
      "tree": "4492ed2349d3efb81201e48e17c5676c5de02609",
      "parents": [
        "49d2b7aadb084ac7cae48583c38af6da2ce41a02"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Jul 18 09:45:54 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 18 16:45:54 2023 +0000"
      },
      "message": "test: Remove testonly\u003dTrue from test toolchain implementations (#1327)\n\nUpcoming Bazel versions enforce testonly-ness through toolchain lookup,\nso when `:current_py_cc_headers` depends on (via toolchain lookup) a\n`py_cc_toolchain(testonly\u003dTrue)` target, an error occurs.\n\nTo fix, just remove testonly\u003dTrue from the toolchain implementation.\n\nFixes #1324"
    },
    {
      "commit": "49d2b7aadb084ac7cae48583c38af6da2ce41a02",
      "tree": "9cc0046a1dd6e575f3481c87e4f77c1363da7795",
      "parents": [
        "a547d3485862038dc36633ded665dde8cc9d51a1"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "ignas.anikevicius@woven-planet.global",
        "time": "Sat Jul 15 05:32:30 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 14 20:32:30 2023 +0000"
      },
      "message": "doc: correct name of rules_python in bzlmod support doc (#1317)\n\nThe project name was misspelled as \"rule_python\"; corrected to\n\"rules_python\""
    },
    {
      "commit": "a547d3485862038dc36633ded665dde8cc9d51a1",
      "tree": "1b0d3f533c3081c489ab1da78ddc2237c09530a5",
      "parents": [
        "02b521fce3c7b36b05813aa986d72777cc3ee328"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Wed Jul 12 06:27:42 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 12 13:27:42 2023 +0000"
      },
      "message": "docs: Use correct pip extension path in generated release notes (#1310)\n\nAlso add a note that bzlmod support is still beta."
    },
    {
      "commit": "02b521fce3c7b36b05813aa986d72777cc3ee328",
      "tree": "04ab4f5e2bbf7ec809d78fab8434b7cc14a41d60",
      "parents": [
        "95ad6ccbdbfd911d14405e4e597c5fef79146ee1"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Jul 11 11:23:10 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 11 18:23:10 2023 +0000"
      },
      "message": "cleanup(tests): Use new APIs in rules_testing 0.4.0 (#1307)\n\n* Use public APIs for DictSubject and StrSubject.\n* Use rules_testing\u0027s StructSubject instead of our own.\n\nWork towards 1297"
    },
    {
      "commit": "95ad6ccbdbfd911d14405e4e597c5fef79146ee1",
      "tree": "ba2fbfffe7053460b0286d956d2ce323679c8fec",
      "parents": [
        "36082079b514529d4009a2b104475fde1cdd5b30"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Jul 11 09:27:02 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 11 16:27:02 2023 +0000"
      },
      "message": "chore: Bump rules_testing to 0.4.0 from 0.0.5 (#1306)\n\nThis uses the 0.4.0 release of rules_python, which has several features\nwe can make use of\n * Various internal APIs have been made public\n * target_compatible_with can be set to skip tests by platform\n * Unit tests are easier to write\n\nAlso adds rules_license 0.0.7, which is a dependency of rules_testing.\n\nWork towards #1297"
    },
    {
      "commit": "36082079b514529d4009a2b104475fde1cdd5b30",
      "tree": "d06ff31d9f5c00ba72bfcefac0c6a551ca31895f",
      "parents": [
        "e5d9f10243f546d3796e2daa74266e3a13158d40"
      ],
      "author": {
        "name": "Kevin Park",
        "email": "kevin.park1217@gmail.com",
        "time": "Tue Jul 11 06:48:58 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 11 13:48:58 2023 +0000"
      },
      "message": "feat: Create `all_data_requirements` alias (#1292)\n\nMinor change.\n\nI am creating a Python virtualenv with Bazel, and having\n`all_data_requirements` for data dependencies just like\n`all_requirements` would be very helpful."
    },
    {
      "commit": "e5d9f10243f546d3796e2daa74266e3a13158d40",
      "tree": "f63de197688e7341e698fb1c3b542d546bdca646",
      "parents": [
        "523b9de1e9e8b1fc8cbfcb530ee8287bef13a736"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Mon Jul 10 17:18:05 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 10 23:18:05 2023 +0000"
      },
      "message": "feat(bzlmod): Allow bzlmod pip.parse to reference the default python toolchain and interpreter (#1303)\n\nThis commit defaults `the pip.parse` `python_version` attribute to the\ndefault version of\nPython, as configured by the `python.toolchain` extension. This allows a\nuser to use the\nPython version set by rules_python or the root module. Also, this makes\nsetting the\nattribute optional (as it has a default) and we automatically select the\ninterpreter.\n\nCloses #1267"
    },
    {
      "commit": "523b9de1e9e8b1fc8cbfcb530ee8287bef13a736",
      "tree": "b4369310f26ce4cb26e550210b8aa1dc0ec1b921",
      "parents": [
        "a068d1bf6545fa74d52f6d73c2d79ec37f8ab6b9"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Mon Jul 10 16:11:35 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 10 22:11:35 2023 +0000"
      },
      "message": "fix(bzlmod)!: Changing repository name \"python_aliases\" to \"python_versions\" (#1304)\n\nI think this name is more informative for a public API. The\nfunctionality it exposes are rules/macros that use a specific Python\nversion to be used. These aren\u0027t really aliases.\n\nThis commit renames \"python_aliases\" to \"python_versions\". This isn\u0027t\ntechnically a breaking\nchange because bzlmod support is still beta, but we\u0027ll flag it as such\njust in case.\n\nBREAKING CHANGE:\n* The `python_aliases` repo is renamed to `python_versions`. You will\nneed to either\nupdate references from `@python_aliases` to `@python_versions`, or use\nrepo-remapping\nto alias the old name (`use_repo(python,\npython_aliases\u003d\"python_versions\")`)\n\nCloses #1273"
    },
    {
      "commit": "a068d1bf6545fa74d52f6d73c2d79ec37f8ab6b9",
      "tree": "817fa9761510f03fac4f449d4c3d9afa8c4f32a3",
      "parents": [
        "3ffdf01edac7be32e229e7cd08100370e35348a0"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Mon Jul 10 13:41:33 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 10 19:41:33 2023 +0000"
      },
      "message": "feat(bzlmod): Use a common constant for detecting bzlmod being enabled (#1302)\n\nVarious parts of the codebase detect whether bzlmod is enabled or not.\nMost of them copy/paste the same if @ in Label(..) trick and use a\ncomment to explain what they\u0027re doing.\n\nRather than copy/paste that everywhere, this commit uses a constant\ndefined that does this once and reuses the constant value to determine\nif bzlmod is enabled.\n\nCloses: https://github.com/bazelbuild/rules_python/issues/1295"
    },
    {
      "commit": "3ffdf01edac7be32e229e7cd08100370e35348a0",
      "tree": "6eae654b8a84ebc0d29a951cf39d8c3b17a0f09d",
      "parents": [
        "9dd944e963807b02b21489ad286715b60aec8c84"
      ],
      "author": {
        "name": "Christian von Schultz",
        "email": "christian.github@vonschultz.se",
        "time": "Mon Jul 10 19:36:59 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 10 17:36:59 2023 +0000"
      },
      "message": "feat: Add setting generate_hashes for requirements (#1290)\n\nAdd the new parameter `generate_hashes` (default True) to\n`compile_pip_requirements()`, letting the user control whether to put\n`--hash` entries in the requirements lock file generated. In particular\nif the generated file is supposed to be used as a constraints file the\nhashes don\u0027t make much sense.\n\nFixes bazelbuild/rules_python#894."
    },
    {
      "commit": "9dd944e963807b02b21489ad286715b60aec8c84",
      "tree": "3938b77c0d362272d75212f44d666396ec2fc04e",
      "parents": [
        "42b72dbd6ea34753a43b3dd89ffff2520a978099"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "ignas.anikevicius@woven-planet.global",
        "time": "Tue Jul 11 02:19:09 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 10 17:19:09 2023 +0000"
      },
      "message": "feat(gazelle): support multiple requirements files in manifest generation (#1301)\n\nFor certain workflows it is useful to calculate the integrity hash of\nthe manifest file based on a number of requirements files. The\nrequirements locking is usually done by executing a script on each\nplatform and having gazelle manifest generator be aware that more than\none requirements file may affect the outcome (e.g. the wheels that get\npassed to modules map may come from multi_pip_parse rule) is generally\nuseful.\n\nThis change modifies the generation macro to concatenate the\nrequirements\nfiles into one before passing it to the manifest generator."
    },
    {
      "commit": "42b72dbd6ea34753a43b3dd89ffff2520a978099",
      "tree": "a5e0085a8371c7c52ac49528096ac575de95ee0a",
      "parents": [
        "b8f16458c1d785a24921e569cc6174e8e3f6b45e"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Mon Jul 10 09:55:46 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 10 15:55:46 2023 +0000"
      },
      "message": "feat(bzlmod): Implementing wheel annotations via whl_mods (#1278)\n\nThis commit implements a bzlmod extension that allows users to create\n\"annotations\" for wheel builds. The wheel_builder.py accepts a JSON file\nvia a parameter called annotations; this extension creates those JSON\nfiles. The pip extension accepts a Label -\u003e String dict argument of the\nJSON files.\n\nThis feature is renamed to `whl_mods` because the JSON files are handled\ndifferently\nand the name \"annotations\" is uninformative. This modifies the creation\nof the BUILD\nfiles and their content, and is much more than just adding some notes\nabout a whl.\n\nThe whl_mod extension wheel names and the wheel names in pip must match.\n\nCloses: https://github.com/bazelbuild/rules_python/issues/1213"
    },
    {
      "commit": "b8f16458c1d785a24921e569cc6174e8e3f6b45e",
      "tree": "16bde246b8e6e39a11619c4ad6bc6355f45506f4",
      "parents": [
        "4082693e23ec9615f3e9b2ed9fae542e2b3bed12"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Sat Jul 08 09:58:12 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 08 16:58:12 2023 +0000"
      },
      "message": "feat: Expose Python C headers through the toolchain. (#1287)\n\nThis allows getting a build\u0027s `cc_library` of Python headers through\ntoolchain resolution instead of having to use the underlying toolchain\u0027s\nrepository `:python_headers` target directly.\n\nWithout this feature, it\u0027s not possible to reliably and correctly get\nthe C information about the runtime a build is going to use. Existing\nsolutions require carefully setting up repo names, external state,\nand/or using specific build rules. In comparison, with this feature,\nconsumers are able to simply ask for the current headers via a helper\ntarget or manually lookup the toolchain and pull the relevant\ninformation; toolchain resolution handles finding the correct headers.\n\nThe basic way this works is by registering a second toolchain to carry\nC/C++ related information; as such, it is named `py_cc_toolchain`. The\npy cc toolchain has the same constraint settings as the regular py\ntoolchain; an expected invariant is that there is a 1:1 correspondence\nbetween the two. This base functionality allows a consuming rule\nimplementation to use toolchain resolution to find the Python C\ntoolchain information.\n\nUsually what downstream consumers need are the headers to feed into\nanother `cc_library` (or equivalent) target, so, rather than have every\nproject re-implement the same \"lookup and forward cc_library info\"\nlogic,\nthis is provided by the `//python/cc:current_py_cc_headers` target.\nTargets that need the headers can then depend on that target as if it\nwas a `cc_library` target.\n\nWork towards https://github.com/bazelbuild/rules_python/issues/824"
    },
    {
      "commit": "4082693e23ec9615f3e9b2ed9fae542e2b3bed12",
      "tree": "b60f18e8bab2267addd2091c081bcff22b535a4a",
      "parents": [
        "5b8fa22a2f22501b18b4aea97c5dbfe3a6913a0c"
      ],
      "author": {
        "name": "Logan Pulley",
        "email": "lpulley@ocient.com",
        "time": "Thu Jul 06 09:54:43 2023 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 06 14:54:43 2023 +0000"
      },
      "message": "fix: add `format()` calls to `glob_exclude` templates (#1285)\n\nCurrently, Python toolchain `:files` and `:py3_runtime` include some\nunnecessary files. This is because these globs result in literally\n`lib/libpython{python_version}.so` etc., which do not match anything.\nThe formatting needs to be applied here since it will not be applied\nlater.\n\nI believe this was introduced by\na47c6cd681b34b1ad990ed40dcc01ab5f024406a."
    },
    {
      "commit": "5b8fa22a2f22501b18b4aea97c5dbfe3a6913a0c",
      "tree": "3d914263ee14b253e3ded9b859c2c46994411fe4",
      "parents": [
        "fe2c3256ddb51ad04d6af70e1cec59770a29596e"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Sat Jun 24 05:05:25 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 23 20:05:25 2023 +0000"
      },
      "message": "fix(toolchain): restrict coverage tool visibility under bzlmod (#1252)\n\nBefore this PR the `coverage_tool` automatically registered by\n`rules_python`\nwas visible outside the toolchain repository. This fixes it to be\nconsistent\nwith `non-bzlmod` setups and ensures that the default `coverage_tool` is\nnot\nvisible outside the toolchain repos.\n\nThis means that the `MODULE.bazel` file can be cleaned-up at the expense\nof\nrelaxing the `coverage_tool` attribute for the `python_repository` to be\na\nsimple string as the label would be evaluated within the context of\n`rules_python` which may not necessarily resolve correctly without the\n`use_repo` statement in our `MODULE.bazel`."
    },
    {
      "commit": "fe2c3256ddb51ad04d6af70e1cec59770a29596e",
      "tree": "078395668dd93e6c6bd388c3f282235944ded3cc",
      "parents": [
        "0d59fcf561f6d2c4705924bc17c151fb4b998841"
      ],
      "author": {
        "name": "Zhongpeng Lin",
        "email": "zplin@uber.com",
        "time": "Wed Jun 21 10:14:21 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 21 17:14:21 2023 +0000"
      },
      "message": "feat!: using Gazelle\u0027s lifecycle manager to manage external processes (#1284)\n\nGazelle v0.30.0 introduced a lifecycle manager. We can use that to start\nand shutdown parser and stdmodule processes. So we don\u0027t need to use\n`init` function or creating `context.WithTimeout`.\n\nBREAKING CHANGES:\nThis requires the users of this Gazelle extension to upgrade to Gazelle\nv0.30.0 or above."
    },
    {
      "commit": "0d59fcf561f6d2c4705924bc17c151fb4b998841",
      "tree": "12720cb4aa19476e96ed5c57a33a73ae5adf7fcf",
      "parents": [
        "00962c44d95c325abdd5abab0773feebfdbc13e2"
      ],
      "author": {
        "name": "Ivo List",
        "email": "ilist@google.com",
        "time": "Wed Jun 21 00:40:41 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 20 22:40:41 2023 +0000"
      },
      "message": "tests: make analysis tests support --incompatible_enable_cc_toolchain_resolution (#1281)\n\nThe analysis tests transition to different platforms to test some\nplatform-specific logic.\n\nWhen cc toolchain registration is enabled, this also requires that a\nmore complete\ntoolchain be defined and available."
    },
    {
      "commit": "00962c44d95c325abdd5abab0773feebfdbc13e2",
      "tree": "1ba7be3a0899d1cbbd72881429b4ea927f6c14e8",
      "parents": [
        "cc435943e92a32200e7620e234f058cc828d6f6e"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Tue Jun 20 15:38:38 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 20 21:38:38 2023 +0000"
      },
      "message": "feat: Upgrading gazelle and rules_go (#1283)\n\nUpgrading to the latest version of gazelle and rules_go. This should\naddress `--incompatible_config_setting_private_default_visibility` flag."
    },
    {
      "commit": "cc435943e92a32200e7620e234f058cc828d6f6e",
      "tree": "cb54ad370bf0843567368aee885662924d49f617",
      "parents": [
        "1a333cecd73af9916e89b1e1a33fed73d913eb49"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Jun 20 12:58:30 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 20 19:58:30 2023 +0000"
      },
      "message": "cleanup: Typos, doc, and formatting cleanup in pip extension et al (#1275)\n\n* Corrects some typos in docs\n* Expands the user-facing documentation\n* Fixes errors having newlines in the middle of them\n* Renames some internal functions to be more self-describing."
    },
    {
      "commit": "1a333cecd73af9916e89b1e1a33fed73d913eb49",
      "tree": "f417768ffac0ef71f3d8014ca2208539d9406857",
      "parents": [
        "89bec57f443b160433d2c6e15ddd874ba21d2ecd"
      ],
      "author": {
        "name": "Ivo List",
        "email": "ilist@google.com",
        "time": "Tue Jun 20 19:36:39 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 20 17:36:39 2023 +0000"
      },
      "message": "fix: plugin_output in py_proto_library rule (#1280)\n\nplugin_output was wrong in case multiple repositories are involved\nand/or _virtual_imports.\n\nThe code is taken from `cc_proto_library` and has been verified in\npractice."
    },
    {
      "commit": "89bec57f443b160433d2c6e15ddd874ba21d2ecd",
      "tree": "73e3be1c20b54600a8d03250530c77904ddffb5e",
      "parents": [
        "2fb9a2a4bf65facab72c0f00ee6d629f92e5afc4"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Jun 20 08:41:09 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 20 15:41:09 2023 +0000"
      },
      "message": "test: basic analysis tests for py_wheel (#1279)\n\nThis adds some basic analysis tests of py_wheel to cover the\nfunctionality it\u0027s recently introduced."
    },
    {
      "commit": "2fb9a2a4bf65facab72c0f00ee6d629f92e5afc4",
      "tree": "cd92a944e349e5cf0b3a138383c4fcab8904dee4",
      "parents": [
        "643a14bf80179b2eb96de022344b850047788b51"
      ],
      "author": {
        "name": "Weicheng Zhao",
        "email": "106119275+sfc-gh-wzhao@users.noreply.github.com",
        "time": "Mon Jun 19 07:24:06 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 19 14:24:06 2023 +0000"
      },
      "message": "feat(py_wheel): Add support for specifying Project-URL in METADATA (#1276)\n\n`Project-URL` is a field available in core metadata since version 1.2,\nwhich allows specifying additional URLs and display as Project Links in\nPyPI package web page.\n\n\nhttps://packaging.python.org/en/latest/specifications/core-metadata/#project-url-multiple-use\n\nThis change adds the support to specify that."
    },
    {
      "commit": "643a14bf80179b2eb96de022344b850047788b51",
      "tree": "8fbce8f2f0d4bcfa3cad136e917bd5d38cadcb98",
      "parents": [
        "0cd6c2559b2172de902d632af82ab489fac6c309"
      ],
      "author": {
        "name": "Zhuo Peng",
        "email": "zhuo.peng@snowflake.com",
        "time": "Fri Jun 16 14:45:39 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 16 21:45:39 2023 +0000"
      },
      "message": "feat(py_wheel): Add support for specifying Description-Content-Type and Summary in METADATA (#1274)\n\n`py_wheel` allows to supply a description file, but it does not allow\nspecifying the content type of that file.\nBy default, the type is \"text/x-rst\", but many packages are using a\nmarkdown description.\n\n\nhttps://packaging.python.org/en/latest/specifications/core-metadata/#description-content-type\n\nThis change added the support.\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e"
    },
    {
      "commit": "0cd6c2559b2172de902d632af82ab489fac6c309",
      "tree": "2277bf03f6363862e0cd92a952b970a39cb1eb76",
      "parents": [
        "1c581242c25925a1bd6764608877ec170724f11d"
      ],
      "author": {
        "name": "Alex Eagle",
        "email": "alex@aspect.dev",
        "time": "Thu Jun 15 10:26:25 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 15 17:26:25 2023 +0000"
      },
      "message": "fix(py_wheel.publish): allow twine tags and args (#1271)\n\nAlso fix missing runfiles on the py_wheel.dist target.\n\nFixes #1130\nFixes #1270\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crlevasseur@google.com\u003e"
    },
    {
      "commit": "1c581242c25925a1bd6764608877ec170724f11d",
      "tree": "bff22522e101d14a53064e7055e38bf374c21cbf",
      "parents": [
        "3903d1a5b94cf5908cdd571d5c09bb27a5310ce2"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Thu Jun 15 10:58:54 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 15 16:58:54 2023 +0000"
      },
      "message": "feat(bzlmod)!: Calling pip multiple times allowing for multiple Python versions (#1254)\n\nImplementing the capability to call pip bzlmod extension multiple times.\nWe can now call the pip extension with the same hub name multiple times.\nThis allows a user to have multiple different requirement files based on\nthe Python version.\n\nWith workspace, we need incompatible aliases because you get\n@pip//tabulate or @pip_tabulate//:pkg.\nThe requirement() macro hides this, but changing the flag becomes a\nbreaking change if you\u0027ve manually referenced things. With bzlmod,\nthough, the @pip_tabulate style isn\u0027t a realistic option (you\u0027d have to\nuse_repo everything, which is a huge pain).\n\nSo we have chosen to have `@pip//tabulate`.\n\nThis commit implements that capability for pip.parse to determine the\nPython version from programmatically\nthe provided interpreter.\n\nSee \n\n\nhttps://github.com/bazelbuild/rules_python/blob/76aab0f91bd614ee1b2ade310baf28c38695c522/python/extensions/pip.bzl#L88\n\nFor more in-depth implementation details.\n\nINTERFACE CHANGE::\n\n- pip.parse argument python_version is introduced but not required. When\npossible, it is\n  inferred.\n\nBREAKING CHANGE:\n* `pip.parse()` extension: the `name` attribute is renamed `hub_name`.\nThis is to reflect\nthat the user-provided name isn\u0027t unique to each `pip.parse()` call. We\nnow have a hub that is created, and each\n   pip.parse call creates a spoke.\n* `pip.parse()` extension: the `incompatible_generate_aliases` arg is\nremoved; behavior\n     has changed to assume it is always True.\n* `pip.parse()` calls are collected under the same `hub_name` to support\nmultiple Python versions under the same resulting repo name (the hub\nname0.\n\n\nClose: #1229"
    },
    {
      "commit": "3903d1a5b94cf5908cdd571d5c09bb27a5310ce2",
      "tree": "8eab0ccaf8db0dce72e8f892617c11a20beb8d39",
      "parents": [
        "68db9553946b6ad83e820e1297dddb9502601f8f"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Tue Jun 13 13:13:15 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 13 19:13:15 2023 +0000"
      },
      "message": "fix(bzlmod): Fixing Windows Python Interpreter symlink issues (#1265)\n\nWhen using Windows you cannot run the symlink directly.\n\nBecause of how symlinks work in Windows we need to path realpath resolve\nthe link.\nUnlike Linux and OSX we cannot execute the Python symlink directly.\nWindows throws an error \"-1073741515\", when we execute the symlink\ndirectory. This error means that the Python binary cannot find dlls.\nThis is because the symlink that we create is not in the same folder as\nthe dlls.\n\n---------\n\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e"
    },
    {
      "commit": "68db9553946b6ad83e820e1297dddb9502601f8f",
      "tree": "8390242902755955bb4135086c65513f262d7d24",
      "parents": [
        "9ffb1ecd9b4e46d2a0bca838ac80d7128a352f9f"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Jun 13 12:11:25 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 13 19:11:25 2023 +0000"
      },
      "message": "fix: Ignore tempoary pyc.NNN files in wheels (#1266)\n\nWe ignore pyc files most everywhere (because they aren\u0027t deterministic),\nbut part of the pyc creation process involves creating temporary files\nnamed `*.pyc.NNN`. Though these are supposed to be temporary files\nnobody sees, they seem to get picked up by a glob somewhere, somehow.\nI\u0027m unable to figure out how that is happening, but ignoring them in the\nglob expressions should also suffice.\n\nFixes #1261"
    },
    {
      "commit": "9ffb1ecd9b4e46d2a0bca838ac80d7128a352f9f",
      "tree": "8fc832e78491f982a2dbe9a09ecfe959abb5c6f9",
      "parents": [
        "2c28e61232cd77c25d1eb09cf63283f62b942558"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Jun 13 09:53:34 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 13 16:53:34 2023 +0000"
      },
      "message": "fix(bzlmod+gazelle): update BCR release presubmit to use correct example (#1264)\n\nThe bzlmod-compatible build_file_generation example was moved to the\nbzlmod_build_file_generation example.\n\nThis should fix the automatic build/release of the gazelle BCR module."
    },
    {
      "commit": "2c28e61232cd77c25d1eb09cf63283f62b942558",
      "tree": "234196b6dbe4d8ed6bcaeda806b7247354a959d1",
      "parents": [
        "1f58f4c9fb5a5f17f35482b0ec7f8bc5448afb59"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Mon Jun 12 07:52:01 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 12 14:52:01 2023 +0000"
      },
      "message": "feat(bzlmod): Register a default toolchain (#1259)\n\nThis makes rules_python always provide a default toolchain when using\nbzlmod.\n\nNote that, unlike workspace builds, the default is not the local\nsystem Python (`@bazel_tools//tools/python:autodetecting_toolchain`).\n\nInstead, the default is a hermetic runtime, but no guarantees are made\nabout the particular version used. In practice, it will be the latest\navailable Python version.\n\nWork towards #1233"
    },
    {
      "commit": "1f58f4c9fb5a5f17f35482b0ec7f8bc5448afb59",
      "tree": "e73d0b557684ccf4be0fef860702803404b5d25d",
      "parents": [
        "c53d075efb1d85d94d510836a41aab2e536317e1"
      ],
      "author": {
        "name": "Tejaswi Konduri",
        "email": "tkonduri@netskope.com",
        "time": "Fri Jun 09 17:32:54 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 10 00:32:54 2023 +0000"
      },
      "message": "feat: Adding variable support for distribution in py_wheel (#1251)\n\nThis allows the `distribution` attribute to expand workspace status\nkeys, just as the\n`version` attribute can.\n\nThis allows, for example, the VCS\u0027s branch name (e.g test, release, etc)\nto be part of the\ndistribution name without having to modify the BUILD file. Having\ndistinct distribution\nnames is necessary because tools like pip-compile, which determine\nversion compatibility\nand replacements, and having the same distribution name would mean the\ndifferent builds\nare seen as equivalent.\n\nCloses #1250"
    },
    {
      "commit": "c53d075efb1d85d94d510836a41aab2e536317e1",
      "tree": "14d04c1c27107714df96d586d7049ee171952b47",
      "parents": [
        "32b00530160c3a8894350fab7a195540df89819d"
      ],
      "author": {
        "name": "Logan Pulley",
        "email": "logan@pulley.host",
        "time": "Fri Jun 09 18:19:32 2023 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 09 23:19:32 2023 +0000"
      },
      "message": "fix: use `only-binary` for `download_only` `pip download` (#1219)\n\n[`wheel_installer` assumes that if the pip command succeeded, there must\nbe at least one `*.whl`\nfile](https://github.com/lpulley/rules_python/blob/fdec44120aa45d748ab804f1d019002c6949b449/python/pip_install/tools/wheel_installer/wheel_installer.py#L439),\nbut this is not currently true when `download_only` is enabled and the\npackage provides no wheel; a `.tar.gz` will happily be downloaded, pip\nwill succeed, and the `next(iter(glob.glob(\"*.whl\")))` call will fail,\nproducing a mysterious `StopIteration`:\n\n```\nSaved ./artifactory-0.1.17.tar.gz\nSuccessfully downloaded artifactory\n (Traceback (most recent call last):\n  File \"[redacted]/lib/python3.8/runpy.py\", line 194, in _run_module_as_main\n    return _run_code(code, main_globals, None,\n  File \"[redacted]/lib/python3.8/runpy.py\", line 87, in _run_code\n    exec(code, run_globals)\n  File \"[redacted]/external/rules_python/python/pip_install/tools/wheel_installer/wheel_installer.py\", line 450, in \u003cmodule\u003e\n    main()\n  File \"[redacted]/external/rules_python/python/pip_install/tools/wheel_installer/wheel_installer.py\", line 438, in main\n    whl \u003d next(iter(glob.glob(\"*.whl\")))\nStopIteration\n)\n```\n\nBy using `--only-binary\u003d:all:` when using `pip download`, the pip\ncommand will fail if there is no suitable wheel to be downloaded. This\nshould make the error much more obvious, since with\n`--only-binary\u003d:all:` and no suitable wheel, pip fails and reports an\nerror like this:\n\n```\nERROR: Could not find a version that satisfies the requirement artifactory (from versions: none)\nERROR: No matching distribution found for artifactory\n```"
    },
    {
      "commit": "32b00530160c3a8894350fab7a195540df89819d",
      "tree": "d014ea58d8504fc902f2fe9f438a6f1de3879a7d",
      "parents": [
        "b228f6047671abcf4c78ea7318916218fb098831"
      ],
      "author": {
        "name": "Rasrack",
        "email": "Rasrack@users.noreply.github.com",
        "time": "Sat Jun 10 00:52:13 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 09 22:52:13 2023 +0000"
      },
      "message": "fix: update correct requirements lock file when using os specific lock files (#1123)\n\nCurrently the dependency_resolver.py ignores that you give requirement\nlock files for different os\u0027s, except when checking if the golden file\nneeds updating. This causes dependecy_resolver.py to update the wrong\nlock i.e the non platform specific one if ran in \"update mode\"."
    },
    {
      "commit": "b228f6047671abcf4c78ea7318916218fb098831",
      "tree": "02d3382e7e3033b51d47f471f3f88dd2901963b9",
      "parents": [
        "93740219ff790016894e683000ee2427fb260268"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Thu Jun 08 07:50:20 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 08 14:50:20 2023 +0000"
      },
      "message": "fix(bzlmod)!: Remove ability to specify toolchain repo name. (#1258)\n\nThe main reasons this is removed is because if modules choose different\nnames for the same toolchain, only one of the two toolchains (which are,\nhopefully, identical) will be used. Which toolchain is used depends on\nthe module graph dependency ordering.\n\nFurthermore, as of #1238, only one repo per version is created; others\nare ignored. This means a module doesn\u0027t know if the name it chooses\nwill result in a repo being created with that name.\n\nInstead, the toolchain repos are named by rules_python:\n`python_{major}_{minor}`. These repo names are currently part of the\npublic API, since they end up referenced in MODULE config (to wire the\ntoolchain interpreter to pip).\n\nBREAKING CHANGES\n\nThis removes the `name` arg from `python.toolchain()`. Users will need\nto remove such usages from their `MODULE.bazel` and update their\n`use_repo()` statements. If keeping the custom repo name is necessary,\nthen repo mappings can be used. See #1232 for additional migration\nsteps, commands, and information."
    },
    {
      "commit": "93740219ff790016894e683000ee2427fb260268",
      "tree": "81fcd5fad748257d8eb23011a2cbb1881b0f1e3b",
      "parents": [
        "28e15c2092a9512064e4b2a97a0fa3d1a83bc5ae"
      ],
      "author": {
        "name": "cnorman",
        "email": "christy@linux.vnet.ibm.com",
        "time": "Wed Jun 07 18:23:53 2023 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 07 23:23:53 2023 +0000"
      },
      "message": "feat: add ppc64le releases and update to 3.10.11, 3.11.3 for python-build-standalone (#1234)\n\nThis is being added in order to once again be able to build envoyproxy\non the `ppc64le` architecture.\n\nLittle Endian Power support was added to release\nhttps://github.com/indygreg/python-build-standalone/releases/tag/20230507.\n\nSigned-off-by: Christy Norman \u003cchristy@linux.vnet.ibm.com\u003e"
    },
    {
      "commit": "28e15c2092a9512064e4b2a97a0fa3d1a83bc5ae",
      "tree": "3d59e274f2fb3f6c2f5c23cfdd0f64fc33582504",
      "parents": [
        "3912266f15207eeeeecd0cf6d7a8e75db89e7b75"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Tue Jun 06 02:59:27 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 05 17:59:27 2023 +0000"
      },
      "message": "fix(coverage): bump to latest coverage.py and fix import shadowing (#1249)\n\nFixes #1196.\n\nCurrently the `coverage.py` module does not work if updated to the\nlatest\nversion with the following error:\n```\nImportError: cannot import name \u0027MappingProxyType\u0027 from partially\ninitialized module \u0027types\u0027 (most likely due to a circular import)\n...~pypi__coverage_cp39_x86_64-unknown-linux-gnu/coverage/types.py)\n```\n\nWhere the `MappingProxyType` actually exists in Python\u0027s std lib. To\nfix,\nmodify sys.path before the first import of coverage.\n\nSummary:\n- chore(coverage): bump coverage.py to 7.2.7\n- fix(coverage): patch sys.path before importing anything from coverage\n- test(coverage): add extra assertions about the module names"
    },
    {
      "commit": "3912266f15207eeeeecd0cf6d7a8e75db89e7b75",
      "tree": "e6a16051c3faddc5b5823164222b6e28c3b70eee",
      "parents": [
        "d573c60788c213c5ff1b07c42d202623cba988c9"
      ],
      "author": {
        "name": "Derek Cormier",
        "email": "derek@aspect.dev",
        "time": "Mon Jun 05 10:52:27 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 05 17:52:27 2023 +0000"
      },
      "message": "chore: auto-publish gazelle module to BCR (#1247)\n\n"
    },
    {
      "commit": "d573c60788c213c5ff1b07c42d202623cba988c9",
      "tree": "dac15847e45d07a079f92eced74e0fa11b627167",
      "parents": [
        "afdbedd3a58cb5d65e659e1dcc77108cfd22715e"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Tue Jun 06 01:19:30 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 05 16:19:30 2023 +0000"
      },
      "message": "chore: add a pre-commit hook to maintain deleted packages (#1208)\n\nCurrently the users need to run the script manually and this PR adds a\npre-commit hook which should facilitate the maintenance of the deleted\npackages within the `rules_python .bazelrc`."
    },
    {
      "commit": "afdbedd3a58cb5d65e659e1dcc77108cfd22715e",
      "tree": "2c8079a05b75bdf03b3c7f936063ab6dbbd594f7",
      "parents": [
        "4c365e71d1146f8f8f7c43ad19129c72ac49f4bf"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Sat Jun 03 11:55:34 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 03 18:55:34 2023 +0000"
      },
      "message": "fix(bzlmod): give precedence to the first seen versioned toolchain (#1244)\n\nThis fixes an issue where the last submodule, instead of the first, was\ngiven precedence when creating versioned toolchains. To fix, when\ncreating the map of versioned toolchains, if a version is already\ndefined, then a subsequent usage is ignored. A warning is emitted when\nthis occurs.\n\nThis also fixes a similar problem that can occur to the root module. If\nthe root module uses a particular version marked as the default, and is\nusing the versioned rules, and a submodule also uses that same version,\nthen the submodule\u0027s toolchain would be used. This happened because the\nroot module\u0027s toolchain would be moved last, so its versioned rules\nwould match the submodule\u0027s versioned toolchain.\n\nThis also does some cleanup and refactoring to:\n  * Compute the toolchains in one loop iteration\n  * Give more informative error messages\n* Reject duplicate names within a module, even for the non-root module.\n  * Reject duplicate versions within a module."
    },
    {
      "commit": "4c365e71d1146f8f8f7c43ad19129c72ac49f4bf",
      "tree": "df6df3a44e69c9b3a212231f16d5da6e649f2942",
      "parents": [
        "7f6de725d99aa3dec9e2b20cfc038bdc4704cc1c"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Fri Jun 02 15:13:18 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 02 22:13:18 2023 +0000"
      },
      "message": "cleanup: Set toolchain target_setting directly instead of via inline ternary (#1246)\n\nThe generated toolchain BUILD file is confusing to read because it\nrelies on a ternary expression in the BUILD file to set the\n`target_settings` attribute. This makes debugging harder because, upon\nfirst look, all the toolchains appear to have the version constraint\nset. It\u0027s only upon closer inspection that you can see the 1-character\ndifference of \"False\" vs \"True\" embedded into the middle of a line\namongst other similar looking lines.\n\nAlso:\n* Adds a bit of validation logic for the `set_python_version_constraint`\nargument\nbecause it\u0027s conceptually a boolean, but is passed as a string, so is\nprone to\n    having an incorrect value passed.\n* Documents the `set_python_version_constraint` arg, since it has a\nparticular range\n    of values it accepts."
    },
    {
      "commit": "7f6de725d99aa3dec9e2b20cfc038bdc4704cc1c",
      "tree": "e4f983d44e731fecf33d258316da7d70a7454c18",
      "parents": [
        "148622aa92fdd5afcaf9f153d7bb6afce713e553"
      ],
      "author": {
        "name": "Aiden Grossman",
        "email": "39388941+boomanaiden154@users.noreply.github.com",
        "time": "Fri Jun 02 08:26:35 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 02 15:26:35 2023 +0000"
      },
      "message": "docs(compile_pip_requirements): Add note on requirements.txt VC (#1245)\n\nThe documentation is currently ambiguous on whether or not to check\nrequirements.txt into version control. This has raised some confusion in\nother projects (e.g., https://github.com/google/gematria/pull/3). This\nmakes it clear that requirements.txt files produced by this rule should\nbe checked into version control in an easy to find place to avoid\nconfusion."
    },
    {
      "commit": "148622aa92fdd5afcaf9f153d7bb6afce713e553",
      "tree": "548ec4f8e351edbc8d447765be090bc32040ee77",
      "parents": [
        "18a7bb5b506538835c75d46d4245da08fa695df3"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Wed May 31 19:48:28 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 01 01:48:28 2023 +0000"
      },
      "message": "feat(bzlmod): Moving register.toolchains internal (#1238)\n\nThis commit moves the register.toolchains bzlmod call to inside\nof rules_python.  Instead of a user having to call register.toolchains\nin their MODULE.bazel, rules_python/MODULE.bazel calls it\non the internal hub.\n\nThis is a breaking change if you are using register.toolchains inside\nof submodules.  Using register.toolchains inside of submodules is\nnot recommended anyways.  This is now broken because we are not\ncreating a repo for every Python version toolchain.  All of the\ntoochain calls exist now in the hub\u0027s repo BUILD.bazel file."
    },
    {
      "commit": "18a7bb5b506538835c75d46d4245da08fa695df3",
      "tree": "971d5b68ba6d94e68e2c11b08079eb6d3d266ea6",
      "parents": [
        "62e95a46fec4421d2ae8060c02ea45f800f5ce57"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue May 30 14:00:58 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 30 21:00:58 2023 +0000"
      },
      "message": "fix: make `import python.runfiles` work with `--experimental_python_import_all_repositories\u003dfalse` (#1243)\n\nBecause `--experimental_python_import_all_repositories` defaults to\ntrue, every repository\u0027s directory is added to `sys.path`, which makes\n`import python.runfiles` work.\n\nHowever, we shouldn\u0027t rely on that behavior for a couple reasons:\n* We recommend disabling it for fewer sys.path entries (even non-Python\nrelated\n    repos get added to the path).\n* Some users _must_ disable it because the resulting PYTHONPATH is too\nlong.\n\nTo fix, set the `imports` attribute on `//python/runfiles:runfiles` so\nthat `import python.runfiles` works. The net result is the\n`rules_python` repo directory is added\nto sys.path even if\n`--experimental_python_import_all_repositories\u003dfalse`.\n\nFixes #1241"
    },
    {
      "commit": "62e95a46fec4421d2ae8060c02ea45f800f5ce57",
      "tree": "649446c8b75fa74d14775f98178f27f71cc2977f",
      "parents": [
        "60c61e51646f610e7886d6bc1eaddb154f80ad44"
      ],
      "author": {
        "name": "Zhongpeng Lin",
        "email": "zplin@uber.com",
        "time": "Sat May 27 18:35:51 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 28 01:35:51 2023 +0000"
      },
      "message": "build: Upgrade Gazelle to v0.31.0 (#1240)\n\nGazelle v0.31.0 comes with a lifecycle manager for extension, allowing\nthe Python extension to properly shut down external Python processes\nwithout relying on timer.\n\nUpgrading Gazelle in this PR. Using the lifecycle manager will come\nnext."
    },
    {
      "commit": "60c61e51646f610e7886d6bc1eaddb154f80ad44",
      "tree": "84284f343ca576563161135e3971fac580d4ed7c",
      "parents": [
        "693a1587baf055979493565933f8f40225c00c6d"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Fri May 26 14:20:35 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 26 20:20:35 2023 +0000"
      },
      "message": "feat(bzlmod): Allowing multiple python.toolchain extension calls (#1230)\n\nWe do this work for two reasons.\n\nFirst, we must support Module dependencies and sub-modules using\n`python.toolchain`. There are already two known instances of sub-modules\nsetting up a Python toolchain and colliding with another module\n(nanobind and rules_testing both run into this).\n\nSecond, the upcoming multi-version support is going to work by having\neach `python.toolchain()` call register its particular version with the\nextra toolchain constraint. This also helps unify the version-aware and\nnon-version-aware code paths (the non-version aware paths are just\nversion-aware with a single version registered as the default)\n\nThis commit implements various business logic in the toolchain class.\n\nToolchains in Sub Modules\n\nIt will create a toolchain in a sub-module if the toolchain\nof the same name does not exist in the root module. The extension stops\nname\nclashing between toolchains in the root module and sub-modules.\nYou cannot configure more than one toolchain as the default toolchain.\n\nToolchain set as the default version.\n\nThis extension will not create a toolchain in a sub-module\nif the sub-module toolchain is marked as the default version. If you\nhave\nmore than one toolchain in your root module, you need to set one of the\ntoolchains as the default version.  If there is only one toolchain, it\nis set as the default toolchain.\n\nSee #1229 for more information"
    },
    {
      "commit": "693a1587baf055979493565933f8f40225c00c6d",
      "tree": "d589f553d0b26c3f0c328c32327e9b0ad9f04dc2",
      "parents": [
        "1383bd4fa06c7c449156913f123c452533cdd724"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Fri May 19 00:12:13 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 18 15:12:13 2023 +0000"
      },
      "message": "feat(bzlmod): support entry_point macro (#1220)\n\nAdd `entry_point` macro to the repo generated by the `pip.parse`\nextension.\nThis works by using the canonical label literal, so should work without\nusers\nneeding to add the spoke repos to the `use_repo` statement. We test this\nby\nhaving an extra folder in the `bzlmod` example.\n\nFixes #958."
    },
    {
      "commit": "1383bd4fa06c7c449156913f123c452533cdd724",
      "tree": "3edbcf858dcfb099daf218a4068cc5f2445b49f3",
      "parents": [
        "28bc03cd664de130cf78a2fd43109939b9ea2eb2"
      ],
      "author": {
        "name": "Zhongpeng Lin",
        "email": "zplin@uber.com",
        "time": "Wed May 17 10:08:33 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 17 17:08:33 2023 +0000"
      },
      "message": "fix: Using canonical name in requirements.bzl (#1176)\n\nWhen `incompatible_generate_aliases \u003d False`, `pip.parse` doesn\u0027t work\nin bzlmod, because requirements.bzl has:\n\n```\nall_requirements \u003d [\"@rules_python~0.21.0~pip~pip_yapf//:pkg\"]\n\nall_whl_requirements \u003d [\"@rules_python~0.21.0~pip~pip_yapf//:whl\"]\n```\n\nStarting Bazel 6, canonical names should be referred with double \"@\".\n\nThe reason why `incompatible_generate_aliases \u003d True` worked is because\nit uses apparent name by parsing the canonical label with `repo_name \u003d\nrctx.attr.name.split(\"~\")[-1]`. This is dangerous because Bazel may\nchange its canonical name pattern in future versions.\n\nThis PR adds a new attribute \"repo_name\" to `pip_repository_bzlmod`, so\nwe have access to the human-readable name in the implementation."
    },
    {
      "commit": "28bc03cd664de130cf78a2fd43109939b9ea2eb2",
      "tree": "101c67f85ea7dd6f2e89ddf246b2494470be1993",
      "parents": [
        "02ace45bbc4006b025aaae3fa02d9e79fc85f4e0"
      ],
      "author": {
        "name": "Ofey Chan",
        "email": "ofey206@gmail.com",
        "time": "Wed May 17 12:31:14 2023 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 17 04:31:14 2023 +0000"
      },
      "message": "fix: `example/build_file_generation/README.md` (#1164)\n\nThis PR updates outdated README.md of example.\n\nCloses #1160\n\n---------\n\nSigned-off-by: Thulio Ferraz Assis \u003c3149049+f0rmiga@users.noreply.github.com\u003e\nCo-authored-by: Thulio Ferraz Assis \u003c3149049+f0rmiga@users.noreply.github.com\u003e"
    },
    {
      "commit": "02ace45bbc4006b025aaae3fa02d9e79fc85f4e0",
      "tree": "4716a4444356ee3e5064eae040700fef362701cc",
      "parents": [
        "07e68569848afc374043193541ea5f7d791c4769"
      ],
      "author": {
        "name": "Matt Oberle",
        "email": "moberle@ocrolus.com",
        "time": "Wed May 17 00:22:24 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 17 04:22:24 2023 +0000"
      },
      "message": "fix: allow url fragments in requirements file (#1195)\n\nThis commit addresses issue #1194 (see issue for details).\n\nIt brings the `comment` detection of `requirements_parser.bzl` closer to\nthe spec described here:\n-\nhttps://pip.pypa.io/en/stable/reference/requirements-file-format/#comments\n\n1. Lines that begin with `#` are comments.\n2. Content after (and including) ` #` is a comment.\n\nPrior to this commit, a dependency like this would result in invalid\n`pip wheel` arguments:\n\n```\nrequests @ https://github.com/psf/requests/releases/download/v2.29.0/requests-2.29.0.tar.gz#sha1\u003d3897c249b51a1a405d615a8c9cb92e5fdbf0dd49\n```"
    },
    {
      "commit": "07e68569848afc374043193541ea5f7d791c4769",
      "tree": "04037b5531752db638c7631c62cc84937eb850b5",
      "parents": [
        "16126d0ebfee074a3a8fe216b20cc19e1b3603c1"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "ignas.anikevicius@woven-planet.global",
        "time": "Wed May 17 13:18:09 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 17 04:18:09 2023 +0000"
      },
      "message": "fix(toolchain): set correct return attrs to remove non-hermeticity warning (#1231)\n\nFixes the incorrect debug statement when downloading the toolchain for\nthe first\ntime asking users to replace \"urls\" with \"url\" in the toolchain\ndefinition which\nwe maintain:\n```\n$ bazel build ...\n... indicated that a canonical reproducible form can be obtained by modifying ...\n```\n\nEven though this is seen only once by the user, it may confuse them.\n\nSummary of changes:\n- refactor(toolchain): rename a local variable url -\u003e urls\n- fix(toolchain): set url return attrs correctly"
    },
    {
      "commit": "16126d0ebfee074a3a8fe216b20cc19e1b3603c1",
      "tree": "fd6e8af427be8968244562ab819d68260f827d4f",
      "parents": [
        "9268d919e5fb5b0e7f010c77960de6e2b6ff10ee"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "ignas.anikevicius@woven-planet.global",
        "time": "Tue May 16 13:11:28 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 16 04:11:28 2023 +0000"
      },
      "message": "test(coverage): add a test to check the sys.path under bzlmod (#1223)\n\nWhilst it is for documentation purposes for maintainers it is also a\nregression\ntest for #1045. Also add a test to ensure that the `html` module is not\nshadowed when running under `coverage`.\n\nFixes #1196."
    },
    {
      "commit": "9268d919e5fb5b0e7f010c77960de6e2b6ff10ee",
      "tree": "7f64b8dfa5bc638e139fdd995bc379f540b3d9ae",
      "parents": [
        "46537cf32f8bf722a6be805821cb2ee17d7b936a"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Mon May 15 16:05:53 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 15 22:05:53 2023 +0000"
      },
      "message": "Adding bzlmod support document (#1214)\n\nThis markdown file maintains the current status of our bzlmod\nimplementation. Created section in README and linked to the bzlmod doc."
    },
    {
      "commit": "46537cf32f8bf722a6be805821cb2ee17d7b936a",
      "tree": "124d297eab5e08600274404579898d21f8064706",
      "parents": [
        "ccea92a3ad6f9204a172d306a6b1c4cb18e41cee"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Mon May 15 16:04:40 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 15 22:04:40 2023 +0000"
      },
      "message": "feat(bzlmod)!: Move each bzlmod extension into its own file (#1226)\n\nThis commit refactors the files that contain the bzlmod\nextensions.\n\n- All extensions are moved under the new extensions folder\n- Private extensions are moved under extensions/private\n- All extension files are renamed to remove the _extension suffix\n- pip and internal_deps extensions are moved to their own file\n\nThis commit organizes the extensions better and also follows the\nbest practice of having a single extension per file. Having each\nextension in its own file allows them to use some additional features\nwhile helping avoid backwards incompatible changes.\n\n## BREAKING CHANGES\n\nThis splits `//python:extensions.bzl`, which previously held the\n`python`\nand `pip` extensions, into separate files (`python.bzl` and `pip.bzl`,\nrespectively). Unfortunately, moving the location of the extensions is a\nbreaking change due to how bzlmod extension identity works (see\nhttps://bazel.build/external/extension#extension_identity). Fortunately,\nby moving to one extension per file, we shouldn\u0027t have to ever do this\nagain.\n\nUsers must update the file path in their `use_repo()` statements as\nfollows:\n\n* `use_extension(\"@rules_python//python:extensions.bzl\", \"python\")` -\u003e\n`use_extension(\"@rules_python//python/extensions:python.bzl\", \"python\")`\n* `use_extension(\"@rules_python//python:extensions.bzl\", \"pip\")` -\u003e\n`use_extension(\"@rules_python//python/extensions:pip.bzl\", \"pip\")`\n\nThe following `sed` commands should approximate the necessary changes:\n\n```\nsed \u0027sXuse_extension(\"@rules_python//python:extensions.bzl\", \"python\")Xuse_extension(\"@rules_python//python/extensions:python.bzl\", \"python\")X\u0027`\nsed \u0027sXuse_extension(\"@rules_python//python:extensions.bzl\", \"pip\")Xuse_extension(\"@rules_python//python/extensions:pip.bzl\", \"pip\")X\u0027`\n\n```\n\nSee `examples/bzlmod_build_file_generation/MODULE.bazel` for an example\nof the new paths."
    },
    {
      "commit": "ccea92a3ad6f9204a172d306a6b1c4cb18e41cee",
      "tree": "8968453b1922bba9ba68630a0dae21f2531f0e71",
      "parents": [
        "d434f1047cfefc461829d5d90f5adcd6f0ef9e51"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Mon May 15 10:24:43 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 15 16:24:43 2023 +0000"
      },
      "message": "feat(bzlmod): Cleaning up interpreter resolution (#1218)\n\nThis commit cleans up the use of \"canonical resolution\" of\n  the Python interpreter. When the extension toolchains run\n  it collects a list of the interpreters and then\n  uses the hub_repo rule to create a map of names and the\n  interpreter labels.\n \n Next, we then use the interpreter_extension that, creates\n reports that have symlinks pointing to the different interpreter\n binaries.\n\nThe user can then pass in a label to the pip call for the\n specific hermetic interpreter."
    },
    {
      "commit": "d434f1047cfefc461829d5d90f5adcd6f0ef9e51",
      "tree": "c6a16a596583db4d639848ff75c5c31462df66a8",
      "parents": [
        "0efcd94d0ee6e1e56b27d25469c28502282fab5b"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Mon May 15 02:04:44 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 14 17:04:44 2023 +0000"
      },
      "message": "test(bzlmod): explicitly enable bzlmod in the test harness (#1204)\n\nPreviously we would depend on the value of .bazelrc and this\nchange ensures that we are explicitly enable bzlmod via CLI\nargs. It seems that the `py_proto_library` integration tests\ndefined in the `//examples:BUILD.bazel` file were not running\nusing `bzlmod` before hand, however, they were correctly\nexecuted in the CI.\n\nWork towards #958."
    },
    {
      "commit": "0efcd94d0ee6e1e56b27d25469c28502282fab5b",
      "tree": "8678e2bb78a1f814ec1907b1848b06962cd63b15",
      "parents": [
        "799e63fbc9c6dee95e07077689d7122c5736947f"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Mon May 08 13:12:56 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 08 20:12:56 2023 +0000"
      },
      "message": "fix: manually ignore bazel-* directories to make using custom Bazel builds easier (#1181)\n\nNormally, Bazel will ignore its convenience symlinks, so putting them in\nthe .bazelignore file isn\u0027t necessary. However, when\n`--output_user_root` is set, which is beneficial to set when using\ndifferent Bazel versions (it preserves the analysis cache between\nversions), the symlinks aren\u0027t ignored. Putting them in the bazelignore\nfile fixes this."
    },
    {
      "commit": "799e63fbc9c6dee95e07077689d7122c5736947f",
      "tree": "bc540e30da866948ab1bca54861996cb540299d2",
      "parents": [
        "23cf6b66baed3d884c82d9b005769e22d618c967"
      ],
      "author": {
        "name": "Daniel Wagner-Hall",
        "email": "dwagnerhall@apple.com",
        "time": "Mon May 08 20:37:22 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 08 19:37:22 2023 +0000"
      },
      "message": "fix: Strip trailing newline from python output (#1212)\n\nThis is used to generate a path, which shouldn\u0027t have a trailing\nnewline."
    },
    {
      "commit": "23cf6b66baed3d884c82d9b005769e22d618c967",
      "tree": "e8acd767b2bd73ae7e95220942bba41616cc4955",
      "parents": [
        "0912bba35d0f3e341c7beae206b21e9ca5b8322e"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Fri May 05 07:36:08 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 04 22:36:08 2023 +0000"
      },
      "message": "fix(update_deleted_packages.sh): wheels example should not be included in .bazelrc (#1207)\n\nThis correctly handles the integration tests and examples that are a\npart of\nthe `rules_python` workspace and should not be included in the deleted\npackages\nlist.\n\nThis brings the changes made to the `.bazelrc` very close to what is in\n`main`,\nbut I would like to update this later once #1155 and #1205 are merged.\n\nFixes #919."
    },
    {
      "commit": "0912bba35d0f3e341c7beae206b21e9ca5b8322e",
      "tree": "207c32ad79387daf37799ea13f3e6f827242ab26",
      "parents": [
        "262c699f71c65bb778a15ba992bca091a851e35b"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Thu May 04 14:08:34 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 04 20:08:34 2023 +0000"
      },
      "message": "feat(bzlmod): expose platform-agnostic repo target for toolchain interpreter (#1155)\n\nThis exposes a new repo and target, `@{name}_host_interpreter//:python`,\ncreated by `python.toolchain()`, that points to the host OS\u0027s Python\ninterpreter for that particular toolchain.\n\nThis solves two problems:\n1. `pip.parse()` can now refer to the same interpreter used in the\ntoolchains\n2. There is now a canonical, public, way to refer to the host OS Python\ninterpreter\n    for repository rules.\n\nThe above were _sort of_ possible for users to do already, but it\nrequired them to write much more configuration and extension code to do\nso. This moves that sort of boilerplate into our code so they have a\nsimpler configuration.\n\nAlso:\n- removing bzlmod support in the build_file_generation example; making\nexamples work\n  with both WORKSPACE and MODULE is a pain, hence splitting them.\n- adding an example of bzlmod and gazelle\n- improved documentation in the pip arguments\n\nCloses: https://github.com/bazelbuild/rules_python/issues/1161"
    },
    {
      "commit": "262c699f71c65bb778a15ba992bca091a851e35b",
      "tree": "09c93ee9754000e07e1f38f7aba86a6de7ad444b",
      "parents": [
        "532f07a9930ef8d218b7415e373e31dc2006d75c"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Fri May 05 02:36:34 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 04 17:36:34 2023 +0000"
      },
      "message": "fix(update_deleted_packages.sh): allow to run from anywhere in the repo (#1206)\n\nIt seems that the tool was correctly trying to modify the `.bazelrc` at\nthe\nroot of the repo, but the `find` execution would run in the `$PWD`. This\nchange ensures that the `find` is consistent with the file we are trying\nto modify and allows the user to execute the script from anywhere in the\nrepo.\n\nTested:\n1. Update the deleted packages with the version of the script at HEAD\n1. Fix the bug\n1. Rerun the script from the \u0027tests\u0027 sub-folder in the repo to ensure\nthat\n   running the script is noop.\n1. Revert the changes to \u0027.bazelrc\u0027 to reduce conflicts as other PRs are\n   modifying it.\n\nWork towards #958."
    },
    {
      "commit": "532f07a9930ef8d218b7415e373e31dc2006d75c",
      "tree": "16aa754dc00ec63b5e53ccdd57b31b39bec564af",
      "parents": [
        "fc94642ed05a1f3a851487f9bce84e5f5317c926"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Wed May 03 15:02:32 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 03 15:02:32 2023 -0700"
      },
      "message": "tests: Force analysis test labels to resolve within @rules_python context (#1187)\n\nWhen a string label is passed to the `@rules_testing` analysis_test\r\nfunctions, the strings are evaluated within the context of\r\n@rules_testing because that is where the actual rule invocation happens.\r\nWithout bzlmod, this just requires qualifying the labels with the repo\r\nname (which is what was being done) because there\u0027s just a flat global\r\nnamespace of repos.\r\n\r\nWith bzlmod enabled, repo mapping happens, so rules_testing tries to\r\nresolve those repo names using its repo mapping, which doesn\u0027t work\r\nbecause rules_testing\u0027s mapping doesn\u0027t include every repo using it."
    },
    {
      "commit": "fc94642ed05a1f3a851487f9bce84e5f5317c926",
      "tree": "061c3a0fbf4615c27371975b42314a6c4bb3fc27",
      "parents": [
        "e40079186ddd403cbad6a0e951363d1c5bf9238a"
      ],
      "author": {
        "name": "Martin Medler",
        "email": "36563496+martis42@users.noreply.github.com",
        "time": "Wed May 03 23:30:24 2023 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 03 14:30:24 2023 -0700"
      },
      "message": "docs: fix typos in pip_repository docs (#1202)\n\n"
    },
    {
      "commit": "e40079186ddd403cbad6a0e951363d1c5bf9238a",
      "tree": "84c93a1286fdb60d72e952d7b5a2ac69ca031e26",
      "parents": [
        "96b4fa13b9dfcf32422455931621598eb99d28f5"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Wed May 03 15:01:31 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 03 21:01:31 2023 +0000"
      },
      "message": "feat: propagate visibility attribute for py_wheel publishing (#1203)\n\npy_wheel does not propagate \"visibility\" attribute to the \"publish\"\nrule. The visibility attribute on py_wheel target is not propagated to\nthe auto-generated \"publish\" target. This commit adds the visibility\nattribute.\n\nCloses: https://github.com/bazelbuild/rules_python/issues/1192"
    },
    {
      "commit": "96b4fa13b9dfcf32422455931621598eb99d28f5",
      "tree": "c74fda03f0a45a6294abd152b91f8875838c32f4",
      "parents": [
        "81a200be35ff62cd3b50c44968381b99aa4cd1cc"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Wed May 03 14:56:31 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 03 20:56:31 2023 +0000"
      },
      "message": "feat: removing bzlmod from example (#1200)\n\nHaving both bzlmod and a WORKSPACE file confuses the user, and I have\n#1155 which adds a new example for gazelle and bzlmod."
    },
    {
      "commit": "81a200be35ff62cd3b50c44968381b99aa4cd1cc",
      "tree": "f06375f620c289bdcc6df0d17c8ed66f064e0557",
      "parents": [
        "2df3259c8e9c5f9dd538207166cdc67b1fcf4877"
      ],
      "author": {
        "name": "Chris Love",
        "email": "335402+chrislovecnm@users.noreply.github.com",
        "time": "Wed May 03 12:52:28 2023 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 03 18:52:28 2023 +0000"
      },
      "message": "tests: Add skylib to various test dependencies to fix CI (#1199)\n\nThis fixes a problem where bazel skylib does not load during the\ntoolchain integration test.\n\nThe skylib dependency was introduced by #1191, but skylib was not\npresent in the WORKSPACE configs of several things. To fix, skylib just\nneeds to be added to the workspace files."
    },
    {
      "commit": "2df3259c8e9c5f9dd538207166cdc67b1fcf4877",
      "tree": "539b8b8544b2d9b1638a5a9e583ed9b1195030d8",
      "parents": [
        "c20aa1a3f5756a3860d6f6b595464edbf7964ea4"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue May 02 09:38:02 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 02 09:38:02 2023 -0700"
      },
      "message": "fix: Allow passing a tuple to the `tags` attribute. (#1191)\n\nStarlark rules allow giving the tags as a tuple. The helper function\r\nthat added the special migration tag assumed tags was always a list,\r\nresulting in an error when it tried to concatenate a list and tuple.\r\n\r\nTo fix, check if tags is a tuple and concatenate a tuple if so. The\r\ninput type of the tags attribute is preserved so that a test verifying\r\ntags can be passed to the underlying rule can be implemented (this test\r\nis to verify there isn\u0027t a regression during the rewrite to Starlark)."
    },
    {
      "commit": "c20aa1a3f5756a3860d6f6b595464edbf7964ea4",
      "tree": "353ca8eadb92c72ed9301252fb7a52004be80830",
      "parents": [
        "1d1efe906b4c5bf215f807844ba9b53869fa53e6"
      ],
      "author": {
        "name": "Wei",
        "email": "56273788+yuanweixin@users.noreply.github.com",
        "time": "Mon May 01 15:10:37 2023 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 01 12:10:37 2023 -0700"
      },
      "message": "type:docs Update README.md  (#1186)\n\nChange instruction to refer to `MODULE.bazel` instead of\r\n`MODULES.bazel`."
    },
    {
      "commit": "1d1efe906b4c5bf215f807844ba9b53869fa53e6",
      "tree": "b1a0811f0242a8e7edfd0cc0618350ca8afc4987",
      "parents": [
        "ce749147a9a4f8fc8ef6141bf34ab538ed7f7476"
      ],
      "author": {
        "name": "Ignas Anikevicius",
        "email": "anikevicius@gmail.com",
        "time": "Tue May 02 02:34:57 2023 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 01 10:34:57 2023 -0700"
      },
      "message": "fix(bzlmod): correctly template repository macros for requirements, etc (#1190)\n\nIt seems that the macros for specifying the requirements break when the\r\nuser starts using `incompatible_generate_aliases\u003dTrue`. This PR fixes\r\nthis.\r\n\r\nTesting done:\r\n1. Modify the example:\r\n   ```\r\n   $ git diff\r\ndiff --git a/examples/bzlmod/MODULE.bazel b/examples/bzlmod/MODULE.bazel\r\n   index ce91228..1750210 100644\r\n   --- a/examples/bzlmod/MODULE.bazel\r\n   +++ b/examples/bzlmod/MODULE.bazel\r\n   @@ -26,6 +26,7 @@ register_toolchains(\r\n    pip \u003d use_extension(\"@rules_python//python:extensions.bzl\", \"pip\")\r\n    pip.parse(\r\n        name \u003d \"pip\",\r\n   +    incompatible_generate_aliases\u003dTrue,\r\n        requirements_lock \u003d \"//:requirements_lock.txt\",\r\n        requirements_windows \u003d \"//:requirements_windows.txt\",\r\n    )\r\n   ```\r\n2. Run `bazel build ...` and check that it is still working.\r\n\r\nI noticed this when working on #1189 and creating a separate PR for\r\neasier cherry-picking if we wanted to make a patch release which\r\nincludes this. I am not sure how I could make an automated test for this\r\nother than creating a separate example."
    },
    {
      "commit": "ce749147a9a4f8fc8ef6141bf34ab538ed7f7476",
      "tree": "6059a158d65392871421510ac1a15da368de14a0",
      "parents": [
        "548ced53f980d726f9d8996572fa791f7c8ce0cc"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Fri Apr 28 09:21:40 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 28 09:21:40 2023 -0700"
      },
      "message": "tests: Set linux platform for test_non_mac_doesnt_require_darwin_for_execution (#1183)\n\nThis is the inverse test of the one testing for the mac platform. As\r\nbefore, the line forcing the platform to a non-mac platform was\r\ncommented out, which meant, when a mac host built it, it would build the\r\nunderlying target for Mac, which violated the test\u0027s assumptions.\r\n\r\nWork towards bazelbuild/bazel/issues/18170\r\n\r\nFixes #1185"
    },
    {
      "commit": "548ced53f980d726f9d8996572fa791f7c8ce0cc",
      "tree": "e3ef90e66361a6a146ce52763414803df72970e3",
      "parents": [
        "2882bb6eb39b974fc8ba8869ce0f0787598cc69a"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Thu Apr 27 14:04:39 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 27 14:04:39 2023 -0700"
      },
      "message": "tests: Upgrade rules_testing to 0.0.5 (#1184)\n\nThis just keeps it at a recent version, which makes errors easier to\r\ngrok. rules_testing recently underwent a large refactor, so it\u0027s\r\nconfusing when errors reference lines that no longer exist in recent\r\nversions."
    },
    {
      "commit": "2882bb6eb39b974fc8ba8869ce0f0787598cc69a",
      "tree": "82803fff596ff7a24123c076c60351cce8df305d",
      "parents": [
        "600dbe1d10d7055a3fb0644e0cec5badbd5dd240"
      ],
      "author": {
        "name": "Borja Lorente",
        "email": "blorente@users.noreply.github.com",
        "time": "Thu Apr 27 17:14:51 2023 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 27 09:14:51 2023 -0700"
      },
      "message": "docs: Add starlark directive to code snippet (#1170)\n\nA very minor cleaup change."
    },
    {
      "commit": "600dbe1d10d7055a3fb0644e0cec5badbd5dd240",
      "tree": "3b6ba9e9f5565dbd973b2805e3d7048052f89ded",
      "parents": [
        "fb6f49f76db31273aa74f86e6ba50bc4facdc24f"
      ],
      "author": {
        "name": "Richard Levasseur",
        "email": "rlevasseur@google.com",
        "time": "Tue Apr 25 20:10:02 2023 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 25 20:10:02 2023 -0700"
      },
      "message": "fix: Don\u0027t reference deleted private bazel_tools bzl file (#1180)\n\nThe latest versions of Bazel have removed the\r\n`@bazel_tools//tools/python:private/defs.bzl` file, so it can no longer\r\nbe referenced.\r\n\r\nWork towards bazelbuild/bazel/issues/18170"
    }
  ],
  "next": "fb6f49f76db31273aa74f86e6ba50bc4facdc24f"
}
