)]}'
{
  "commit": "25a0a472013ef970880579c6794cbf3770bb55dd",
  "tree": "ac05a413f19a9afa9a9d34b11ffdb05ad1718b9a",
  "parents": [
    "2cfbe731332426bbbed31f4e02140290bbf86d16"
  ],
  "author": {
    "name": "Mihai Dusmanu",
    "email": "mihai.dusmanu@gmail.com",
    "time": "Fri Jul 05 08:35:38 2024 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jul 05 06:35:38 2024 +0000"
  },
  "message": "fix: pypi parse_simpleapi_html.bzl is robust to metadata containing \"\u003e\" sign (#2031)\n\nThis PR modifies the logic for finding the end of the of the \u003ca\u003e \ntag metadata attributes in the pypi `parse_simpleapi_html` function.\n\nThis was discovered after investigation of the following error:\n```\nError in repository_rule: invalid user-provided repo name \u0027pypi_311_\u003d2_7,!\u003d3_0_*,!\u003d3_1_*,!\u003d3_2_*\"\u003esix_py2_none_any_8abb2f1d\u0027: valid names may contain only A-Z, a-z, 0-9, \u0027-\u0027, \u0027_\u0027, \u0027.\u0027, and must start with a letter\n```\nwhich was traced back to the to a `data-requires-python` attribute\ncontaining a `\u003e` sign (instead of `\u0026gt;`) in the Azure Artifacts pypi\nfeed, e.g.:\n`\u003ca\nhref\u003d\"https://microsoft.pkgs.visualstudio.com/REDACTED_URL/six-1.16.0-py2.py3-none-any.whl#sha256\u003d8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254\"\ndata-requires-python\u003d\"\u003e\u003d2.7,!\u003d3.0.*,!\u003d3.1.*,!\u003d3.2.*\"\u003esix-1.16.0-py2.py3-none-any.whl\u003c/a\u003e\u003cbr/\u003e`\n\n---------\n\nCo-authored-by: Mihai Dusmanu \u003cmihaidusmanu@microsoft.com\u003e\nCo-authored-by: aignas \u003c240938+aignas@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "61df0862dd9e2806b72a12d337d33c53a7257c1a",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "ac11e14cffdaf28624d59ac388531c37b700d303",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "f7cd032acafb552be4de18eb045d76185f76a8b9",
      "old_mode": 33188,
      "old_path": "python/private/pypi/parse_simpleapi_html.bzl",
      "new_id": "248846922fd92c416eeb9ec10c0c15ea2cdb17ee",
      "new_mode": 33188,
      "new_path": "python/private/pypi/parse_simpleapi_html.bzl"
    },
    {
      "type": "modify",
      "old_id": "a60bb1f3306ee14d2c36a8c93ea5c4e105294b05",
      "old_mode": 33188,
      "old_path": "tests/pypi/parse_simpleapi_html/parse_simpleapi_html_tests.bzl",
      "new_id": "a532e878a787f2551f898763fd46991c81915ee0",
      "new_mode": 33188,
      "new_path": "tests/pypi/parse_simpleapi_html/parse_simpleapi_html_tests.bzl"
    }
  ]
}
