)]}'
{
  "commit": "c7defbcd1181d30762632deb3b21e8a3a58f28a1",
  "tree": "cd2ef031ec0d660954429ab10982597695229bea",
  "parents": [
    "66550eca4ae9d94be3a32da86e60a54cba13cf74"
  ],
  "author": {
    "name": "Richard Levasseur",
    "email": "rlevasseur@google.com",
    "time": "Wed May 22 18:44:25 2024 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu May 23 01:44:25 2024 +0000"
  },
  "message": "docs: implement Starlark domain plugin for Sphinx (#1909)\n\nThis implements a Sphinx plugin to support Starlark as a first-class\ndomain in Sphinx.\nA Starlark domain allows writing object descriptions directly using\nSphinx\u0027s object\nmarkup language, which allows better integration with cross references,\nunderstanding\nand distinguishing types, rendering information about things, and\nreferencing types\nfrom other projects.\n\nNote that this doesn\u0027t affect the docs today because the\nproto_to_markdown tool is\nstill generating regular markdown; updating that to generate Sphinx\ndomain markdown\nwill be done separately.\n\nSummary of features:\n* Types and arguments can be documented using Python syntax, e.g.\n`list[str]` This includes\nunions, generics, and custom types. Each component of the type\nexpression is linked and\ncross referenced appropriately. Each object can have its approprate\npieces documented and\ndefined (e.g. a rule can have attributes, attributes can have their\ndefaults etc\n  documented, etc)\n* An index of Starlark objects is generated automatically. This makes it\neasy, for example,\n  to find the rules that have a particular attribute.\n* The following objects can be documented: functions, methods, rules,\nrepository rules,\nproviders, aspects, bzlmod extensions, tag classes, targets, flags, and\n  attributes/fields of the aforementioned objects.\n* Arbitary docs can cross reference to Starlark types. e.g., a manually\nwritten \"Getting\nStarted\" doc can write `{bzl:obj}PyInfo.some_field` and it will\nautomatically link to\n  the appropriate API docs.\n* Resolution of cross-references is much smarter and customizable.\nInstead of relying\nMarkdown\u0027s link resolution rules, the Sphinx\u0027s crossreference resolution\nhooks are\nused. This allows more concise references (e.g., just a rule\u0027s base\nname), distinguishing\na particular object type (e.g. a function vs rule), or referring to an\nabsolute object.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8912f2cfb6ac72e5d259b64adadeef9f9e0c18f0",
      "old_mode": 33188,
      "old_path": "docs/sphinx/BUILD.bazel",
      "new_id": "e3b9ad3f962df90b4adec4034cbb9d61835f3eca",
      "new_mode": 33188,
      "new_path": "docs/sphinx/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "869e66a53876db02b85a49fcf4ca33e8c8c5dec5",
      "old_mode": 33188,
      "old_path": "docs/sphinx/bazel_inventory.txt",
      "new_id": "b099f4270460cd409aa59740a4f88138f1a20fe0",
      "new_mode": 33188,
      "new_path": "docs/sphinx/bazel_inventory.txt"
    },
    {
      "type": "modify",
      "old_id": "d36c9f269c6f60ff7fc434fba528bab6f4521e8a",
      "old_mode": 33188,
      "old_path": "docs/sphinx/pyproject.toml",
      "new_id": "03279c56e32f7b40eb75f70da25820fc04fed89e",
      "new_mode": 33188,
      "new_path": "docs/sphinx/pyproject.toml"
    },
    {
      "type": "modify",
      "old_id": "ed74550e8383feeb9f259244dfff1c60bda42e3b",
      "old_mode": 33188,
      "old_path": "docs/sphinx/requirements.txt",
      "new_id": "a3c7c9a5f70b01eda69208eb06240e4fea40e229",
      "new_mode": 33188,
      "new_path": "docs/sphinx/requirements.txt"
    },
    {
      "type": "modify",
      "old_id": "cd1a1fbf6df85426ff517e90f9afe0313688e7c2",
      "old_mode": 33188,
      "old_path": "sphinxdocs/BUILD.bazel",
      "new_id": "6cb69ba881dd1dba675724a8aae6a225dcc2c2a8",
      "new_mode": 33188,
      "new_path": "sphinxdocs/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "4226391aac3128bf21dcc863709a01914c03eaa2",
      "old_mode": 33188,
      "old_path": "sphinxdocs/private/sphinx.bzl",
      "new_id": "a5ac83152eff569ad03dc6fbccd0f4fe9b84aaa5",
      "new_mode": 33188,
      "new_path": "sphinxdocs/private/sphinx.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b788b09c2497dbc6add97abc272721f750fc12f2",
      "new_mode": 33188,
      "new_path": "sphinxdocs/src/sphinx_stardoc/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
      "new_mode": 33188,
      "new_path": "sphinxdocs/src/sphinx_stardoc/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "283fb67d770f5ee371310e965ac17b08b025dec6",
      "new_mode": 33188,
      "new_path": "sphinxdocs/src/sphinx_stardoc/stardoc.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5cf5736afa6ea76a30a152f666270a763d0a0f16",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3c49903b03ff5bea89f6f7ddb7d0d1c8e2d54710",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/aspect.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b1dae97759da2e8983bf2bce4a11c64240cbf059",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/conf.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d6bcc1bc7a0953cc53b3332127ff2a7aece47cf5",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/envvars.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b8cbd3727e9ea762922034835be5beecef2e3fa0",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/function.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b3c07217f4cb5fd3c6f45fcf765dd138f53dd1d8",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/glossary.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4f70482e1958646980c766721fbd877aadfc5c4e",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/index.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "033538654a9290da8a965e9d17ecd309a8162d2c",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/module_extension.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dac16f0d2cb7b7009fd985c0f3d12e434799e8cc",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/provider.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0a909d6e6042628009ec2b6f3550476b2270154e",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/repo_rule.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a6f3a56b98efdeee79de460b9a82e38951ec3d7b",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/rule.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "447a5ac3750937a62d56eb507be9adfdc809a055",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/target.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f0ea038b3d2099c2c52e257fb1ecfa5909920095",
      "new_mode": 33188,
      "new_path": "sphinxdocs/tests/sphinx_stardoc/xrefs.md"
    }
  ]
}
