)]}'
{
  "commit": "509b02f8c719decb40f4731b735e65b6545ceea0",
  "tree": "d9f29f6f039c859f7cface9ab7d027e306d867d2",
  "parents": [
    "87a3a54cd937b037f531fedac243350933dd1eb7"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "rlevasseur@google.com",
    "time": "Tue Dec 19 16:51:44 2023 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Dec 20 00:51:44 2023 +0000"
  },
  "message": "docs: use stardoc proto output to generate markdown docs (#1629)\n\nThe template language Stardoc uses (Velocity) is niche and fairly\nesoteric, and requires a lot of experimenting to understand how to\nmake it produce the desired output. In particular, it largely assumes\nwhitespace doesn\u0027t matter, which makes it a poor fit for generating\nMarkdown, where whitespace often does matter.\n\nInstead, a small Python program is used to consume the binary proto\noutput of Stardoc, which converts it to Markdown. This also makes it\neasier to customize the overall output and re-use code for the different\ntypes of objects rendered.\n\nThe visible changes to the docs are:\n  * Module extensions are now documented\n  * Repository rules follow the style of the other generated docs\n  * Fixed the rendering of pip_repository docs -- it had an h2\n    section which broke the section grouping of the API objects.\n  * Puts some padding between the border and content for text in\n    params/attrs/fields listings.\n\nOther notable changes:\n  * Make RTD builds use bzlmod. This is necessary so that the pip\n    extension can be documented. It loads\n    `@pythons_hub//:interpreters.bzl`, but that repo is only created\n    when bzlmod is enabled)\n\n---------\n\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "52251b125bbdcbb7ec43a3c34ab895dab2e0fb35",
      "old_mode": 33188,
      "old_path": ".bazelrc",
      "new_id": "fd2e442d48f3d4417e2d4b42b8791e47188aa118",
      "new_mode": 33188,
      "new_path": ".bazelrc"
    },
    {
      "type": "modify",
      "old_id": "a0b4a721d09bf3eef082cb36f4ac0ccb03bf2ffc",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "b032f4e427c9f50691303ae99cb995b34aab7aef",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "9aaeaf62dde34dc44c990de7c5c3d0bf44948f51",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "f53815c72eacc9327d8bb4f7d3df8e3d2ed60523",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "074a7b9ed2533e87b45ce8d1a9c7cb96f9df10b8",
      "old_mode": 33188,
      "old_path": "WORKSPACE",
      "new_id": "b8e778e4f6b35b309287d9d1066939ffa440d461",
      "new_mode": 33188,
      "new_path": "WORKSPACE"
    },
    {
      "type": "modify",
      "old_id": "95b3cfa69bcf93d86ba04859cf139fe03a7a96a3",
      "old_mode": 33188,
      "old_path": "docs/sphinx/BUILD.bazel",
      "new_id": "4c14aee99f51bfb4cef433df214f82f2d0bcbfdc",
      "new_mode": 33188,
      "new_path": "docs/sphinx/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "65d74f4d5e8551c904f95d33237b7151fcd7ae2f",
      "old_mode": 33188,
      "old_path": "docs/sphinx/_stardoc_footer.md",
      "new_id": "7aa33f778fdcda63f75457b5fc2b7e60f5d6a646",
      "new_mode": 33188,
      "new_path": "docs/sphinx/_stardoc_footer.md"
    },
    {
      "type": "modify",
      "old_id": "c97d2f525cf6498f16f9c91a70254d869e22e453",
      "old_mode": 33188,
      "old_path": "docs/sphinx/_static/css/custom.css",
      "new_id": "4b073d4cd25ad649c4d1b1569caa66b0de11305f",
      "new_mode": 33188,
      "new_path": "docs/sphinx/_static/css/custom.css"
    },
    {
      "type": "modify",
      "old_id": "02e0f36496d3a9d1b30e6fdd65ad3dee438d12b9",
      "old_mode": 33188,
      "old_path": "docs/sphinx/pyproject.toml",
      "new_id": "d36c9f269c6f60ff7fc434fba528bab6f4521e8a",
      "new_mode": 33188,
      "new_path": "docs/sphinx/pyproject.toml"
    },
    {
      "type": "modify",
      "old_id": "e6908a3ca478f261bc7b2edd83529f38dfb3a116",
      "old_mode": 33261,
      "old_path": "docs/sphinx/readthedocs_build.sh",
      "new_id": "c611b7c4fbe9eae1f8dcec7c060340da6651cf9e",
      "new_mode": 33261,
      "new_path": "docs/sphinx/readthedocs_build.sh"
    },
    {
      "type": "modify",
      "old_id": "429ddd46cadae9ded3793d584e9958e9d157aa3d",
      "old_mode": 33188,
      "old_path": "docs/sphinx/requirements_linux.txt",
      "new_id": "85c61f37b2884e0e5665dae563b592334f7eb425",
      "new_mode": 33188,
      "new_path": "docs/sphinx/requirements_linux.txt"
    },
    {
      "type": "modify",
      "old_id": "480b193d7795619e0629932252fb3fb83ec17c96",
      "old_mode": 33188,
      "old_path": "python/BUILD.bazel",
      "new_id": "1ab59d582c8e0f17a43e5fe09bf5d472dbd7ca7b",
      "new_mode": 33188,
      "new_path": "python/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "4be3e3726000aa2dc3dd6a2fa297f2f24cf69cde",
      "old_mode": 33188,
      "old_path": "python/extensions/BUILD.bazel",
      "new_id": "88e3984ea1d89d232cff9d889a2e8a445135c8d2",
      "new_mode": 33188,
      "new_path": "python/extensions/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "a02aecc62ec8545a89fae1b1a57c9b41d10f3ef0",
      "old_mode": 33188,
      "old_path": "python/pip_install/pip_repository.bzl",
      "new_id": "dca36ce74c9d3ccb5b475acda5bb7fb94afdc589",
      "new_mode": 33188,
      "new_path": "python/pip_install/pip_repository.bzl"
    },
    {
      "type": "modify",
      "old_id": "fc8449ecafca8e4a049dfa83c71b2040f1a000ba",
      "old_mode": 33188,
      "old_path": "python/private/bzlmod/BUILD.bazel",
      "new_id": "a31292287c02fc1b01eafaffa0267167f39307bc",
      "new_mode": 33188,
      "new_path": "python/private/bzlmod/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "f36ce45521257fb8405cc077903a5b76e9a27565",
      "old_mode": 33188,
      "old_path": "python/private/bzlmod/pythons_hub.bzl",
      "new_id": "5f536f3b67d413b01f0504eeb132ea2974025ecd",
      "new_mode": 33188,
      "new_path": "python/private/bzlmod/pythons_hub.bzl"
    },
    {
      "type": "modify",
      "old_id": "a8701d956d0f269bbafc3d357f080bbee1799118",
      "old_mode": 33188,
      "old_path": "sphinxdocs/private/BUILD.bazel",
      "new_id": "01758b3cadc5fa60e98a3bbb605651a5f878a072",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/BUILD.bazel"
    },
    {
      "type": "delete",
      "old_id": "81dd2036ac3852cce6c6d8a72109cdabd55dc449",
      "old_mode": 33188,
      "old_path": "sphinxdocs/private/func_template.vm",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "81496ffbba331ea27e8ad98432e5199d05102d8b",
      "old_mode": 33188,
      "old_path": "sphinxdocs/private/header_template.vm",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "18d4e1e045e082965c41f8f68d8ad653722e84d1",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/proto_to_markdown.py"
    },
    {
      "type": "delete",
      "old_id": "49ae8947ad1273d6784f9cefcb55f02f84055b13",
      "old_mode": 33188,
      "old_path": "sphinxdocs/private/provider_template.vm",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "d91bad20cb37a0706027d1f9e351c9da462b1c29",
      "old_mode": 33188,
      "old_path": "sphinxdocs/private/rule_template.vm",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "1371d907f79c3bb5d5e4623e38158c0e06bf8c17",
      "old_mode": 33188,
      "old_path": "sphinxdocs/private/sphinx_stardoc.bzl",
      "new_id": "810dca352487730c0bba425372dd3ae4fc98c3bc",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/sphinx_stardoc.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "41010956cf7c393ab9fb5067cfd84caf32ff8751",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2964785eedbb03975bb1cc7a1470517ea44fe5fe",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/proto_to_markdown/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2f5b22e60b0e04cd8aeb838a039f8700afcb25eb",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/proto_to_markdown/proto_to_markdown_test.py"
    }
  ]
}
