Skip to content

Commit 2f46873

Browse files
authored
docs: docgen python apis (#2149)
Uses autodoc2 to generate Python documentation for runfiles and sphinx_bzl. This provides some basic API doc for our Python code. They don't look particularly great, yet, but we can work on how they look in another PR. Also: * Fixes position of license rule and extra space in license text * Forces sphinx_rtd_theme >= 2.0. uv kept trying to downgrade it for some reason. * Use directives markup to document the sphinx_bzl directives * Add `sphinx_run` rule to make it easier to run Sphinx interactively for debugging
1 parent e331afe commit 2f46873

File tree

18 files changed

+468
-111
lines changed

18 files changed

+468
-111
lines changed

docs/BUILD.bazel

+17-4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@ load("//python/private:util.bzl", "IS_BAZEL_7_OR_HIGHER") # buildifier: disable
1919
load("//python/uv/private:lock.bzl", "lock") # buildifier: disable=bzl-visibility
2020
load("//sphinxdocs:readthedocs.bzl", "readthedocs_install")
2121
load("//sphinxdocs:sphinx.bzl", "sphinx_build_binary", "sphinx_docs")
22+
load("//sphinxdocs:sphinx_docs_library.bzl", "sphinx_docs_library")
2223
load("//sphinxdocs:sphinx_stardoc.bzl", "sphinx_stardoc", "sphinx_stardocs")
2324

2425
package(default_visibility = ["//:__subpackages__"])
2526

27+
licenses(["notice"]) # Apache 2.0
28+
2629
# We only build for Linux and Mac because:
2730
# 1. The actual doc process only runs on Linux
2831
# 2. Mac is a common development platform, and is close enough to Linux
@@ -68,6 +71,7 @@ sphinx_docs(
6871
target_compatible_with = _TARGET_COMPATIBLE_WITH,
6972
deps = [
7073
":bzl_api_docs",
74+
":py_api_srcs",
7175
"//sphinxdocs/docs:docs_lib",
7276
],
7377
)
@@ -97,15 +101,15 @@ sphinx_stardocs(
97101
# This depends on @pythons_hub, which is only created under bzlmod,
98102
"//python/extensions:pip_bzl",
99103
] if IS_BAZEL_7_OR_HIGHER and BZLMOD_ENABLED else []),
100-
prefix = "api/",
104+
prefix = "api/rules_python/",
101105
tags = ["docs"],
102106
target_compatible_with = _TARGET_COMPATIBLE_WITH,
103107
)
104108

105109
sphinx_stardoc(
106110
name = "py_cc_toolchain",
107111
src = "//python/private:py_cc_toolchain_rule.bzl",
108-
prefix = "api/",
112+
prefix = "api/rules_python/",
109113
public_load_path = "//python/cc:py_cc_toolchain.bzl",
110114
tags = ["docs"],
111115
target_compatible_with = _TARGET_COMPATIBLE_WITH,
@@ -115,11 +119,20 @@ sphinx_stardoc(
115119
sphinx_stardoc(
116120
name = "py_runtime_pair",
117121
src = "//python/private:py_runtime_pair_rule_bzl",
122+
prefix = "api/rules_python",
118123
public_load_path = "//python:py_runtime_pair.bzl",
119124
tags = ["docs"],
120125
target_compatible_with = _TARGET_COMPATIBLE_WITH,
121126
)
122127

128+
sphinx_docs_library(
129+
name = "py_api_srcs",
130+
srcs = [
131+
"//python/runfiles",
132+
],
133+
strip_prefix = "python/",
134+
)
135+
123136
readthedocs_install(
124137
name = "readthedocs_install",
125138
docs = [":docs"],
@@ -135,6 +148,8 @@ sphinx_build_binary(
135148
requirement("myst_parser"),
136149
requirement("readthedocs_sphinx_ext"),
137150
requirement("typing_extensions"),
151+
requirement("sphinx_autodoc2"),
152+
requirement("sphinx_reredirects"),
138153
"//sphinxdocs/src/sphinx_bzl",
139154
],
140155
)
@@ -147,8 +162,6 @@ lock(
147162
upgrade = True,
148163
)
149164

150-
licenses(["notice"]) # Apache 2.0
151-
152165
# Temporary compatibility aliases for some other projects depending on the old
153166
# bzl_library targets.
154167
alias(

docs/api/index.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22

33
```{toctree}
44
:glob:
5-
**
5+
*
6+
*/index
67
```

docs/api/rules_python/index.md

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# rules_python Bazel APIs
2+
3+
API documentation for rules_python Bazel objects.
4+
5+
```{toctree}
6+
:glob:
7+
**
8+
```
File renamed without changes.
File renamed without changes.

docs/conf.py

+65-2
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,81 @@
1818
# Any extensions here not built into Sphinx must also be added to
1919
# the dependencies of //docs:sphinx-builder
2020
extensions = [
21-
"sphinx.ext.autodoc",
21+
"autodoc2",
2222
"sphinx.ext.autosectionlabel",
23-
"sphinx.ext.autosummary",
2423
"sphinx.ext.doctest",
2524
"sphinx.ext.duration",
2625
"sphinx.ext.extlinks",
2726
"sphinx.ext.intersphinx",
2827
"myst_parser",
2928
"sphinx_rtd_theme", # Necessary to get jquery to make flyout work
3029
"sphinx_bzl.bzl",
30+
"sphinx_reredirects",
3131
]
3232

33+
autodoc2_packages = [
34+
"sphinx_bzl",
35+
"runfiles",
36+
]
37+
38+
autodoc2_output_dir = "api/py"
39+
autodoc2_sort_names = True
40+
autodoc2_class_docstring = "both"
41+
autodoc2_index_template = """
42+
Python APIs
43+
====================
44+
45+
This page contains auto-generated API reference documentation [#f1]_.
46+
47+
.. toctree::
48+
:titlesonly:
49+
50+
{% for package in top_level %}
51+
{{ package }}
52+
{%- endfor %}
53+
54+
.. [#f1] Created with `sphinx-autodoc2 <https://github.com/chrisjsewell/sphinx-autodoc2>`_
55+
56+
"""
57+
58+
59+
autodoc2_docstring_parser_regexes = [
60+
(".*", "myst"),
61+
]
62+
63+
# NOTE: The redirects generation will clobber existing files.
64+
redirects = {
65+
"api/tools/precompiler/index": "/api/rules_python/tools/precompiler/index.html",
66+
"api/python/py_library": "/api/rules_python/python/py_library.html",
67+
"api/python/py_binary": "/api/rules_python/python/py_binary.html",
68+
"api/python/py_test": "/api/rules_python/python/py_test.html",
69+
"api/python/defs": "/api/rules_python/python/defs.html",
70+
"api/python/index": "/api/rules_python/python/index.html",
71+
"api/python/py_runtime_info": "/api/rules_python/python/py_runtime_info.html",
72+
"api/python/private/common/py_library_rule_bazel": "/api/rules_python/python/private/common/py_library_rule_bazel.html",
73+
"api/python/private/common/py_test_rule_bazel": "/api/rules_python/python/private/common/py_test_rule_bazel.html",
74+
"api/python/private/common/py_binary_rule_bazel": "/api/rules_python/python/private/common/py_binary_rule_bazel.html",
75+
"api/python/private/common/py_runtime_rule": "/api/rules_python/python/private/common/py_runtime_rule.html",
76+
"api/python/extensions/pip": "/api/rules_python/python/extensions/pip.html",
77+
"api/python/extensions/python": "/api/rules_python/python/extensions/python.html",
78+
"api/python/entry_points/py_console_script_binary": "/api/rules_python/python/entry_points/py_console_script_binary.html",
79+
"api/python/cc/py_cc_toolchain_info": "/api/rules_python/python/cc/py_cc_toolchain_info.html",
80+
"api/python/cc/index": "/api/rules_python/python/cc/index.html",
81+
"api/python/py_cc_link_params_info": "/api/rules_python/python/py_cc_link_params_info.html",
82+
"api/python/runtime_env_toolchains/index": "/api/rules_python/python/runtime_env_toolchains/index.html",
83+
"api/python/pip": "/api/rules_python/python/pip.html",
84+
"api/python/config_settings/index": "/api/rules_python/python/config_settings/index.html",
85+
"api/python/packaging": "/api/rules_python/python/packaging.html",
86+
"api/python/py_runtime": "/api/rules_python/python/py_runtime.html",
87+
"api/sphinxdocs/sphinx": "/api/sphinxdocs/sphinxdocs/sphinx.html",
88+
"api/sphinxdocs/sphinx_stardoc": "/api/sphinxdocs/sphinxdocs/sphinx_stardoc.html",
89+
"api/sphinxdocs/readthedocs": "/api/sphinxdocs/sphinxdocs/readthedocs.html",
90+
"api/sphinxdocs/index": "/api/sphinxdocs/sphinxdocs/index.html",
91+
"api/sphinxdocs/private/sphinx_docs_library": "/api/sphinxdocs/sphinxdocs/private/sphinx_docs_library.html",
92+
"api/sphinxdocs/sphinx_docs_library": "/api/sphinxdocs/sphinxdocs/sphinx_docs_library.html",
93+
"api/sphinxdocs/inventories/index": "/api/sphinxdocs/sphinxdocs/inventories/index.html",
94+
}
95+
3396
# Adapted from the template code:
3497
# https://github.com/readthedocs/readthedocs.org/blob/main/readthedocs/doc_builder/templates/doc_builder/conf.py.tmpl
3598
if os.environ.get("READTHEDOCS") == "True":

docs/pyproject.toml

+4-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ version = "0.0.0"
55
dependencies = [
66
# NOTE: This is only used as input to create the resolved requirements.txt
77
# file, which is what builds, both Bazel and Readthedocs, both use.
8+
"sphinx-autodoc2",
89
"sphinx",
910
"myst-parser",
10-
"sphinx_rtd_theme",
11+
"sphinx_rtd_theme >=2.0", # uv insists on downgrading for some reason
1112
"readthedocs-sphinx-ext",
1213
"absl-py",
13-
"typing-extensions"
14+
"typing-extensions",
15+
"sphinx-reredirects"
1416
]

docs/requirements.txt

+76-59
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,13 @@ alabaster==0.7.16 \
1010
--hash=sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65 \
1111
--hash=sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92
1212
# via sphinx
13-
babel==2.15.0 \
14-
--hash=sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb \
15-
--hash=sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413
13+
astroid==3.3.2 \
14+
--hash=sha256:99e9b5b602cbb005434084309213d6af32bf7a9b743c836749168b8e2b330cbd \
15+
--hash=sha256:9f8136ce9770e0f912401b25a0f15d5c2ec20b50e99b1b413ac0778fe53ff6f1
16+
# via sphinx-autodoc2
17+
babel==2.16.0 \
18+
--hash=sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b \
19+
--hash=sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316
1620
# via sphinx
1721
certifi==2024.7.4 \
1822
--hash=sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b \
@@ -121,9 +125,9 @@ docutils==0.20.1 \
121125
# myst-parser
122126
# sphinx
123127
# sphinx-rtd-theme
124-
idna==3.7 \
125-
--hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
126-
--hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
128+
idna==3.8 \
129+
--hash=sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac \
130+
--hash=sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603
127131
# via requests
128132
imagesize==1.4.1 \
129133
--hash=sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b \
@@ -226,58 +230,60 @@ pygments==2.18.0 \
226230
--hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \
227231
--hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a
228232
# via sphinx
229-
pyyaml==6.0.1 \
230-
--hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \
231-
--hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \
232-
--hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \
233-
--hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \
234-
--hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \
235-
--hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \
236-
--hash=sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595 \
237-
--hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \
238-
--hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \
239-
--hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \
240-
--hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \
241-
--hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \
242-
--hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \
243-
--hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \
244-
--hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \
245-
--hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \
246-
--hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \
247-
--hash=sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6 \
248-
--hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \
249-
--hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \
250-
--hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \
251-
--hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \
252-
--hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \
253-
--hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \
254-
--hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \
255-
--hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \
256-
--hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \
257-
--hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \
258-
--hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \
259-
--hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \
260-
--hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \
261-
--hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \
262-
--hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \
263-
--hash=sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0 \
264-
--hash=sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515 \
265-
--hash=sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c \
266-
--hash=sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c \
267-
--hash=sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924 \
268-
--hash=sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34 \
269-
--hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \
270-
--hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \
271-
--hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \
272-
--hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \
273-
--hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \
274-
--hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \
275-
--hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \
276-
--hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \
277-
--hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \
278-
--hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \
279-
--hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \
280-
--hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f
233+
pyyaml==6.0.2 \
234+
--hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \
235+
--hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \
236+
--hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \
237+
--hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \
238+
--hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \
239+
--hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \
240+
--hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \
241+
--hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \
242+
--hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \
243+
--hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \
244+
--hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \
245+
--hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \
246+
--hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \
247+
--hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \
248+
--hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \
249+
--hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \
250+
--hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \
251+
--hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \
252+
--hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \
253+
--hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \
254+
--hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \
255+
--hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \
256+
--hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \
257+
--hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \
258+
--hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \
259+
--hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \
260+
--hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \
261+
--hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \
262+
--hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \
263+
--hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \
264+
--hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \
265+
--hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \
266+
--hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \
267+
--hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \
268+
--hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \
269+
--hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \
270+
--hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \
271+
--hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \
272+
--hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \
273+
--hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \
274+
--hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \
275+
--hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \
276+
--hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \
277+
--hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \
278+
--hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \
279+
--hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \
280+
--hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \
281+
--hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \
282+
--hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \
283+
--hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \
284+
--hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \
285+
--hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \
286+
--hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4
281287
# via myst-parser
282288
readthedocs-sphinx-ext==2.2.5 \
283289
--hash=sha256:ee5fd5b99db9f0c180b2396cbce528aa36671951b9526bb0272dbfce5517bd27 \
@@ -299,8 +305,17 @@ sphinx==7.4.7 \
299305
# via
300306
# rules-python-docs (docs/pyproject.toml)
301307
# myst-parser
308+
# sphinx-reredirects
302309
# sphinx-rtd-theme
303310
# sphinxcontrib-jquery
311+
sphinx-autodoc2==0.5.0 \
312+
--hash=sha256:7d76044aa81d6af74447080182b6868c7eb066874edc835e8ddf810735b6565a \
313+
--hash=sha256:e867013b1512f9d6d7e6f6799f8b537d6884462acd118ef361f3f619a60b5c9e
314+
# via rules-python-docs (docs/pyproject.toml)
315+
sphinx-reredirects==0.1.5 \
316+
--hash=sha256:444ae1438fba4418242ca76d6a6de3eaee82aaf0d8f2b0cac71a15d32ce6eba2 \
317+
--hash=sha256:cfa753b441020a22708ce8eb17d4fd553a28fc87a609330092917ada2a6da0d8
318+
# via rules-python-docs (docs/pyproject.toml)
304319
sphinx-rtd-theme==2.0.0 \
305320
--hash=sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b \
306321
--hash=sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586
@@ -336,7 +351,9 @@ sphinxcontrib-serializinghtml==2.0.0 \
336351
typing-extensions==4.12.2 \
337352
--hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \
338353
--hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8
339-
# via rules-python-docs (docs/pyproject.toml)
354+
# via
355+
# rules-python-docs (docs/pyproject.toml)
356+
# sphinx-autodoc2
340357
urllib3==2.2.2 \
341358
--hash=sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 \
342359
--hash=sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168

0 commit comments

Comments
 (0)