)]}'
{
  "commit": "327b4e368b1b905d1b379a0592e89250e70a34c6",
  "tree": "568482a9dcdaa2b509f7d3ef03536e62c7d9a915",
  "parents": [
    "a9a0e59513933dade0dda8d58a76c4d521e3b6ea"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "rlevasseur@google.com",
    "time": "Thu Oct 19 11:03:01 2023 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Oct 19 18:03:01 2023 +0000"
  },
  "message": "docs: make readthedocs render a bit nicer and port docs over to Sphinx (#1511)\n\nThis makes the Sphinx-based docs hosted on readthedocs render a bit more\nnicely, fixes a few issues, and adds some features to //sphinxdocs\n\nThis also moves all the docs onto Sphinx, deleting the checked-in\ndocumentation.\n\nDoc fixes/improvements:\n* Ports various docs over to Sphinx pages. They\u0027re split out from the\nreadme file.\n* Version RTD is building is reflected in the docs\n* Fixes some references to github files\n* Includes the custom CSS file that styled the api docs\n* Removes `-Q` from doc building; all warnings should be fixed now\n* Added Bazel inventory file. Bazel doesn\u0027t provide one, but we can\nmanually provide on\n  and still use intersphinx functionality.\n* Added `gh-path` custom role. This is a shortcut for writing the whole\ngithub URL.\n* Sets the primary domain to None. The default is py, which we don\u0027t use\nmuch of, so it\n  just results in confusing crossref errors.\n* Enable nitpicky mode to catch more errors.\n* Remove the `starlark` marker from codeblocks; that name isn\u0027t\nrecognized by Sphinx.\n  The highlighting is still sufficient.\n* Adds a glossary\n\nSphinxdocs improvements:\n* Added a flag to pass along arbitrary `-D` args to the Sphinx\ninvocations. This allows\ne.g., the `version` setting of the docs to be set on the command line\nfrom the\n  `READTHEDOCS_VERSION` environment variable\n* Added inventory file generation. These are files that allow\nreferencing external\n  projects using intersphinx.\n* `sphinx_stardocs` have their public load path set as their page title.\nThis groups the\n  API docs more naturally by file. The path can be customized.\n* `sphinx_stardocs` can have a footer specified for generated pages.\nThis allows easily\n  added a list of link labels for easy re-use.\n* `readthedocs_install` now tries harder to find an open port\n* The conf.py file is moved into the generated sources directly. This\nwas done because some\nconfig settings are relative to the conf.py file, which was being placed\none directory\n  above the regular sources.\n\nFixes #1484, #1481",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "22f7028251e5de72bd1d8877b01fa0a2be244fa3",
      "old_mode": 33188,
      "old_path": ".bazelrc",
      "new_id": "67f29733a54b3a6161cad6a1a505648e0f011b14",
      "new_mode": 33188,
      "new_path": ".bazelrc"
    },
    {
      "type": "modify",
      "old_id": "d1cdbc07f8dbcbde324df03bdebc5d39278ba4fe",
      "old_mode": 33188,
      "old_path": ".readthedocs.yml",
      "new_id": "9d59380a8fb6803524a75f7378dd87b4fe49472b",
      "new_mode": 33188,
      "new_path": ".readthedocs.yml"
    },
    {
      "type": "modify",
      "old_id": "6ac8b7b6a63850f8c06f8d66e9282d89f811fcd1",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "546af9700996bcd6784b2b3bb87e7f28fd1eee01",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "modify",
      "old_id": "918a87a25e5d744f6ce8c066408956fad7c08f4d",
      "old_mode": 33188,
      "old_path": "docs/BUILD.bazel",
      "new_id": "c334fbcada9c98ee4697d8d35ad9530c9517dfb1",
      "new_mode": 33188,
      "new_path": "docs/BUILD.bazel"
    },
    {
      "type": "delete",
      "old_id": "63f25782e0c79084b78c9a4b70beefb9a44fb897",
      "old_mode": 33188,
      "old_path": "docs/coverage.md",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "ae7c473cef092861bd73f513944def342f66eb12",
      "old_mode": 33188,
      "old_path": "docs/packaging.md",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "f6b7af7824a7abd146771623d509bd76060d0236",
      "old_mode": 33188,
      "old_path": "docs/pip.md",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "49fe7ef9fc360ff4c1dfc09f6bf0f81667831545",
      "old_mode": 33188,
      "old_path": "docs/py_cc_toolchain.md",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "42dad95e413c9a8afecd250483d6ef1240e5276b",
      "old_mode": 33188,
      "old_path": "docs/py_cc_toolchain_info.md",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "e7cc9bd9a36dda71ff088859ea668caf7779ab1d",
      "old_mode": 33188,
      "old_path": "docs/py_console_script_binary.md",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "b0f14b3a97754f51aa2ba9a861b5c88aa7d09771",
      "old_mode": 33188,
      "old_path": "docs/python.md",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "643d716d67eabadb900b56b170bf7b1bdb5e6224",
      "old_mode": 33188,
      "old_path": "docs/sphinx/BUILD.bazel",
      "new_id": "1990269b55dfaaba3d81fd25e64e974968793571",
      "new_mode": 33188,
      "new_path": "docs/sphinx/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bf2fa647223da1203401f70af72853b546569489",
      "new_mode": 33188,
      "new_path": "docs/sphinx/_includes/py_console_script_binary.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65d74f4d5e8551c904f95d33237b7151fcd7ae2f",
      "new_mode": 33188,
      "new_path": "docs/sphinx/_stardoc_footer.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "869e66a53876db02b85a49fcf4ca33e8c8c5dec5",
      "new_mode": 33188,
      "new_path": "docs/sphinx/bazel_inventory.txt"
    },
    {
      "type": "modify",
      "old_id": "cf49cfa29a59cb04b7b7f0608c92f1ae39f49855",
      "old_mode": 33188,
      "old_path": "docs/sphinx/conf.py",
      "new_id": "bfa440051068b96f6ebf5a1ac54aad82d5a3e17a",
      "new_mode": 33188,
      "new_path": "docs/sphinx/conf.py"
    },
    {
      "type": "modify",
      "old_id": "63f25782e0c79084b78c9a4b70beefb9a44fb897",
      "old_mode": 33188,
      "old_path": "docs/sphinx/coverage.md",
      "new_id": "3e0e67368c5bd9ed173f6a39a02d44366a572bda",
      "new_mode": 33188,
      "new_path": "docs/sphinx/coverage.md"
    },
    {
      "type": "delete",
      "old_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "old_mode": 33188,
      "old_path": "docs/sphinx/crossrefs.md",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "89f26d67bbb5a7a8d02967cc73ab51a15a54628b",
      "new_mode": 33188,
      "new_path": "docs/sphinx/gazelle.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d7542faba6e24486fd81ebdaa1170c27bc7fe641",
      "new_mode": 33188,
      "new_path": "docs/sphinx/getting-started.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f54034db2d90aa86273b3a2a9695eb433f6222bc",
      "new_mode": 33188,
      "new_path": "docs/sphinx/glossary.md"
    },
    {
      "type": "modify",
      "old_id": "ce54472177369cf814e1580ca105d40eee8ea620",
      "old_mode": 33188,
      "old_path": "docs/sphinx/index.md",
      "new_id": "a84dab50b3b2b395d604d83d50ab35ef97fc07bf",
      "new_mode": 33188,
      "new_path": "docs/sphinx/index.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "180d0b46fb25dd8e0072cdf412c2baffb1a42afc",
      "new_mode": 33188,
      "new_path": "docs/sphinx/pip.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ee19fbe90c68744b0d5c1cbab4823c948fe2aa2c",
      "new_mode": 33188,
      "new_path": "docs/sphinx/pypi-dependencies.md"
    },
    {
      "type": "modify",
      "old_id": "60fbd8c58fbc745308e5ca83d8cf032d5d86e85b",
      "old_mode": 33188,
      "old_path": "python/entry_points/py_console_script_binary.bzl",
      "new_id": "c61d44ae789fbb3b5bb77de4bc662ea5ff991fdf",
      "new_mode": 33188,
      "new_path": "python/entry_points/py_console_script_binary.bzl"
    },
    {
      "type": "modify",
      "old_id": "67a06f4b20362be8aee39b2634ca353309b1635c",
      "old_mode": 33188,
      "old_path": "python/pip.bzl",
      "new_id": "0d206e8a2e22283080cc11ec1b6d0e2966bc9981",
      "new_mode": 33188,
      "new_path": "python/pip.bzl"
    },
    {
      "type": "modify",
      "old_id": "b8b8e51308cd69abdf8a812a9e12507fb999791e",
      "old_mode": 33188,
      "old_path": "python/private/BUILD.bazel",
      "new_id": "438859433c51edb3fc8b4437866b43d86047fbb5",
      "new_mode": 33188,
      "new_path": "python/private/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "bd992a8f757665805c105355e90f4c0d94d608c8",
      "old_mode": 33188,
      "old_path": "python/private/py_console_script_binary.bzl",
      "new_id": "deeded2f3a02a3dec6c422057e58b74c9d993ae5",
      "new_mode": 33188,
      "new_path": "python/private/py_console_script_binary.bzl"
    },
    {
      "type": "modify",
      "old_id": "2ff708f6e6a1c294882e650f080a3dd53c55c4ee",
      "old_mode": 33188,
      "old_path": "sphinxdocs/BUILD.bazel",
      "new_id": "a47e7023be770701a28ac4c6d116d1a1e161edf2",
      "new_mode": 33188,
      "new_path": "sphinxdocs/BUILD.bazel"
    },
    {
      "type": "delete",
      "old_id": "fee7e2ce593f378668d4db387708416233dc42d0",
      "old_mode": 33188,
      "old_path": "sphinxdocs/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": "a8701d956d0f269bbafc3d357f080bbee1799118",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/BUILD.bazel"
    },
    {
      "type": "rename",
      "old_id": "ee6a2bfb15d8857eb868b296eaf6f84fd976b38d",
      "old_mode": 33188,
      "old_path": "sphinxdocs/func_template.vm",
      "new_id": "ee6a2bfb15d8857eb868b296eaf6f84fd976b38d",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/func_template.vm",
      "score": 100
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "81496ffbba331ea27e8ad98432e5199d05102d8b",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/header_template.vm"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "850d94416ffbe3a945acffc9171c50bc5147dde2",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/inventory_builder.py"
    },
    {
      "type": "rename",
      "old_id": "55e68713cd795025d2f63bdc4f7753d60625a908",
      "old_mode": 33188,
      "old_path": "sphinxdocs/provider_template.vm",
      "new_id": "55e68713cd795025d2f63bdc4f7753d60625a908",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/provider_template.vm",
      "score": 100
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3cab75b64cb48fd7d83d9ba808567f3c1887346f",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/readthedocs.bzl"
    },
    {
      "type": "rename",
      "old_id": "9b1f2a861674010f2f3e34da67764605dceed9a8",
      "old_mode": 33188,
      "old_path": "sphinxdocs/readthedocs_install.py",
      "new_id": "9b1f2a861674010f2f3e34da67764605dceed9a8",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/readthedocs_install.py",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "d91bad20cb37a0706027d1f9e351c9da462b1c29",
      "old_mode": 33188,
      "old_path": "sphinxdocs/rule_template.vm",
      "new_id": "d91bad20cb37a0706027d1f9e351c9da462b1c29",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/rule_template.vm",
      "score": 100
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bd082e03dfc92e81170ee1647fed727f1b5fc7de",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/sphinx.bzl"
    },
    {
      "type": "rename",
      "old_id": "3b7b32eaf693b69af410ebc4a79b16addff28d59",
      "old_mode": 33188,
      "old_path": "sphinxdocs/sphinx_build.py",
      "new_id": "3b7b32eaf693b69af410ebc4a79b16addff28d59",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/sphinx_build.py",
      "score": 100
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e71889a6d35aebbe3105379dddac81c7486b8a08",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/sphinx_server.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1371d907f79c3bb5d5e4623e38158c0e06bf8c17",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/sphinx_stardoc.bzl"
    },
    {
      "type": "modify",
      "old_id": "6ffc79cb9f728a74f8859cdad999ca6358d2fc8d",
      "old_mode": 33188,
      "old_path": "sphinxdocs/readthedocs.bzl",
      "new_id": "4dfaf26465418f1a50a0b10b8de754db3c5108f9",
      "new_mode": 33188,
      "new_path": "sphinxdocs/readthedocs.bzl"
    },
    {
      "type": "modify",
      "old_id": "3c8b776c160d9b95ffa8b9513ebf2a5d57879fcc",
      "old_mode": 33188,
      "old_path": "sphinxdocs/sphinx.bzl",
      "new_id": "a0b1a05804fb2627c78e6bc34d6a29d45a6b2265",
      "new_mode": 33188,
      "new_path": "sphinxdocs/sphinx.bzl"
    },
    {
      "type": "delete",
      "old_id": "55d42c0107c4c592f4b3d8aa9ac3fced47c94d1c",
      "old_mode": 33188,
      "old_path": "sphinxdocs/sphinx_server.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "ef610cef2d40ab7c2127fb3bce52d05ba5b8eb24",
      "old_mode": 33188,
      "old_path": "sphinxdocs/sphinx_stardoc.bzl",
      "new_id": "623bc64d0cb920bc20519fb0fa0b56e97af27f2c",
      "new_mode": 33188,
      "new_path": "sphinxdocs/sphinx_stardoc.bzl"
    }
  ]
}
