Skip to content

Commit 3432c0b

Browse files
committed
[py] Add new script to g s
1 parent fe2b634 commit 3432c0b

File tree

3 files changed

+194
-58
lines changed

3 files changed

+194
-58
lines changed

py/docs/source/api.rst

Lines changed: 109 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,52 @@
1+
..
2+
this file was auto-generated by `generate_api_module_listing.py`
3+
DO NOT EDIT
4+
15
:orphan:
26

37
======================
48
Selenium Documentation
59
======================
610

7-
Common
11+
common
812
------
913

1014
.. currentmodule:: selenium.common
1115
.. autosummary::
12-
:toctree: common
16+
:toctree: selenium_common
1317

1418
selenium.common.exceptions
1519

16-
Webdriver.common
20+
webdriver.chrome
21+
----------------
22+
23+
.. currentmodule:: selenium.webdriver.chrome
24+
.. autosummary::
25+
:toctree: selenium_webdriver_chrome
26+
27+
selenium.webdriver.chrome.options
28+
selenium.webdriver.chrome.remote_connection
29+
selenium.webdriver.chrome.service
30+
selenium.webdriver.chrome.webdriver
31+
32+
webdriver.chromium
33+
------------------
34+
35+
.. currentmodule:: selenium.webdriver.chromium
36+
.. autosummary::
37+
:toctree: selenium_webdriver_chromium
38+
39+
selenium.webdriver.chromium.options
40+
selenium.webdriver.chromium.remote_connection
41+
selenium.webdriver.chromium.service
42+
selenium.webdriver.chromium.webdriver
43+
44+
webdriver.common
1745
----------------
1846

1947
.. currentmodule:: selenium.webdriver.common
2048
.. autosummary::
21-
:toctree: webdriver
49+
:toctree: selenium_webdriver_common
2250

2351
selenium.webdriver.common.action_chains
2452
selenium.webdriver.common.actions.action_builder
@@ -60,65 +88,71 @@ Webdriver.common
6088
selenium.webdriver.common.virtual_authenticator
6189
selenium.webdriver.common.window
6290

63-
Webdriver.support
64-
-----------------
91+
webdriver.common.actions
92+
------------------------
6593

66-
.. currentmodule:: selenium.webdriver.support
94+
.. currentmodule:: selenium.webdriver.common.actions
6795
.. autosummary::
68-
:toctree: webdriver_support
96+
:toctree: selenium_webdriver_common_actions
6997

70-
selenium.webdriver.support.abstract_event_listener
71-
selenium.webdriver.support.color
72-
selenium.webdriver.support.event_firing_webdriver
73-
selenium.webdriver.support.events
74-
selenium.webdriver.support.expected_conditions
75-
selenium.webdriver.support.relative_locator
76-
selenium.webdriver.support.select
77-
selenium.webdriver.support.ui
78-
selenium.webdriver.support.wait
98+
selenium.webdriver.common.actions.action_builder
99+
selenium.webdriver.common.actions.input_device
100+
selenium.webdriver.common.actions.interaction
101+
selenium.webdriver.common.actions.key_actions
102+
selenium.webdriver.common.actions.key_input
103+
selenium.webdriver.common.actions.mouse_button
104+
selenium.webdriver.common.actions.pointer_actions
105+
selenium.webdriver.common.actions.pointer_input
106+
selenium.webdriver.common.actions.wheel_actions
107+
selenium.webdriver.common.actions.wheel_input
79108

80-
Webdriver.chrome
81-
----------------
109+
webdriver.common.bidi
110+
---------------------
82111

83-
.. currentmodule:: selenium.webdriver.chrome
112+
.. currentmodule:: selenium.webdriver.common.bidi
84113
.. autosummary::
85-
:toctree: webdriver_chrome
114+
:toctree: selenium_webdriver_common_bidi
86115

87-
selenium.webdriver.chrome.options
88-
selenium.webdriver.chrome.remote_connection
89-
selenium.webdriver.chrome.service
90-
selenium.webdriver.chrome.webdriver
116+
selenium.webdriver.common.bidi.browser
117+
selenium.webdriver.common.bidi.browsing_context
118+
selenium.webdriver.common.bidi.cdp
119+
selenium.webdriver.common.bidi.common
120+
selenium.webdriver.common.bidi.console
121+
selenium.webdriver.common.bidi.log
122+
selenium.webdriver.common.bidi.network
123+
selenium.webdriver.common.bidi.script
124+
selenium.webdriver.common.bidi.session
125+
selenium.webdriver.common.bidi.storage
126+
selenium.webdriver.common.bidi.webextension
91127

92-
Webdriver.chromium
93-
------------------
128+
webdriver.common.fedcm
129+
----------------------
94130

95-
.. currentmodule:: selenium.webdriver.chromium
131+
.. currentmodule:: selenium.webdriver.common.fedcm
96132
.. autosummary::
97-
:toctree: webdriver_chromium
133+
:toctree: selenium_webdriver_common_fedcm
98134

99-
selenium.webdriver.chromium.options
100-
selenium.webdriver.chromium.remote_connection
101-
selenium.webdriver.chromium.service
102-
selenium.webdriver.chromium.webdriver
135+
selenium.webdriver.common.fedcm.account
136+
selenium.webdriver.common.fedcm.dialog
103137

104-
Webdriver.edge
138+
webdriver.edge
105139
--------------
106140

107141
.. currentmodule:: selenium.webdriver.edge
108142
.. autosummary::
109-
:toctree: webdriver_edge
143+
:toctree: selenium_webdriver_edge
110144

111145
selenium.webdriver.edge.options
112146
selenium.webdriver.edge.remote_connection
113147
selenium.webdriver.edge.service
114148
selenium.webdriver.edge.webdriver
115149

116-
Webdriver.firefox
150+
webdriver.firefox
117151
-----------------
118152

119153
.. currentmodule:: selenium.webdriver.firefox
120154
.. autosummary::
121-
:toctree: webdriver_firefox
155+
:toctree: selenium_webdriver_firefox
122156

123157
selenium.webdriver.firefox.firefox_binary
124158
selenium.webdriver.firefox.firefox_profile
@@ -127,23 +161,23 @@ Webdriver.firefox
127161
selenium.webdriver.firefox.service
128162
selenium.webdriver.firefox.webdriver
129163

130-
Webdriver.ie
164+
webdriver.ie
131165
------------
132166

133167
.. currentmodule:: selenium.webdriver.ie
134168
.. autosummary::
135-
:toctree: webdriver_ie
169+
:toctree: selenium_webdriver_ie
136170

137171
selenium.webdriver.ie.options
138172
selenium.webdriver.ie.service
139173
selenium.webdriver.ie.webdriver
140174

141-
Webdriver.remote
175+
webdriver.remote
142176
----------------
143177

144178
.. currentmodule:: selenium.webdriver.remote
145179
.. autosummary::
146-
:toctree: webdriver_remote
180+
:toctree: selenium_webdriver_remote
147181

148182
selenium.webdriver.remote.bidi_connection
149183
selenium.webdriver.remote.client_config
@@ -163,40 +197,57 @@ Webdriver.remote
163197
selenium.webdriver.remote.webelement
164198
selenium.webdriver.remote.websocket_connection
165199

166-
Webdriver.safari
200+
webdriver.safari
167201
----------------
168202

169203
.. currentmodule:: selenium.webdriver.safari
170204
.. autosummary::
171-
:toctree: webdriver_safari
205+
:toctree: selenium_webdriver_safari
206+
207+
selenium.webdriver.safari.options
208+
selenium.webdriver.safari.permissions
209+
selenium.webdriver.safari.remote_connection
210+
selenium.webdriver.safari.service
211+
selenium.webdriver.safari.webdriver
212+
213+
webdriver.support
214+
-----------------
215+
216+
.. currentmodule:: selenium.webdriver.support
217+
.. autosummary::
218+
:toctree: selenium_webdriver_support
172219

173-
selenium.webdriver.safari.options
174-
selenium.webdriver.safari.permissions
175-
selenium.webdriver.safari.remote_connection
176-
selenium.webdriver.safari.service
177-
selenium.webdriver.safari.webdriver
220+
selenium.webdriver.support.abstract_event_listener
221+
selenium.webdriver.support.color
222+
selenium.webdriver.support.event_firing_webdriver
223+
selenium.webdriver.support.events
224+
selenium.webdriver.support.expected_conditions
225+
selenium.webdriver.support.relative_locator
226+
selenium.webdriver.support.select
227+
selenium.webdriver.support.ui
228+
selenium.webdriver.support.wait
178229

179-
Webdriver.webkitgtk
230+
webdriver.webkitgtk
180231
-------------------
181232

182233
.. currentmodule:: selenium.webdriver.webkitgtk
183234
.. autosummary::
184-
:toctree: webdriver_webkitgtk
235+
:toctree: selenium_webdriver_webkitgtk
185236

186-
selenium.webdriver.webkitgtk.options
187-
selenium.webdriver.webkitgtk.service
188-
selenium.webdriver.webkitgtk.webdriver
237+
selenium.webdriver.webkitgtk.options
238+
selenium.webdriver.webkitgtk.service
239+
selenium.webdriver.webkitgtk.webdriver
189240

190-
Webdriver.wpewebkit
241+
webdriver.wpewebkit
191242
-------------------
192243

193244
.. currentmodule:: selenium.webdriver.wpewebkit
194245
.. autosummary::
195-
:toctree: webdriver_wpewebkit
246+
:toctree: selenium_webdriver_wpewebkit
196247

197-
selenium.webdriver.wpewebkit.options
198-
selenium.webdriver.wpewebkit.service
199-
selenium.webdriver.wpewebkit.webdriver
248+
selenium.webdriver.wpewebkit.options
249+
selenium.webdriver.wpewebkit.service
250+
selenium.webdriver.wpewebkit.webdriver
200251

201252
Indices and tables
202253

py/generate_api_module_listing.py

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#!/usr/bin/env python3
2+
#
3+
# This script recursively scans the `selenium` package directory to find all
4+
# modules, then generates the `py/docs/source/api.rst` file containing a
5+
# listing of all modules in separate sections. The `api.rst` file is later
6+
# used by `sphinx-autogen` to generate sphinx autodoc stub pages used in the
7+
# Python API documentation. See `py/tox.ini` for how it is invoked.
8+
9+
10+
import importlib.util
11+
import os
12+
import site
13+
14+
15+
def find_modules(package_name):
16+
modules = []
17+
for dirpath, _, filenames in os.walk(package_name):
18+
for filename in filenames:
19+
if filename.endswith(".py") and not filename.startswith("__"):
20+
module_name = (
21+
os.path.join(dirpath, filename)
22+
.removeprefix(site.getsitepackages()[-1])
23+
.removeprefix(os.sep)
24+
.removesuffix(".py")
25+
.replace(os.sep, ".")
26+
)
27+
modules.append(module_name)
28+
return sorted(set(modules))
29+
30+
31+
if __name__ == "__main__":
32+
package_name = "selenium"
33+
output_file = os.path.join("docs", "source", "api.rst")
34+
print(f"generating module list for sphinx autodoc in: {output_file}\n")
35+
modules = find_modules(package_name)
36+
base_modules = [
37+
mod
38+
for mod in sorted(set(module.rsplit(".", 1)[0] for module in modules))
39+
if mod != package_name
40+
]
41+
print("found sections:")
42+
for base_module in base_modules:
43+
print(f" {base_module}")
44+
with open(output_file, "w") as f:
45+
f.write(
46+
"""\
47+
..
48+
this file was auto-generated by `generate_api_module_listing.py`
49+
DO NOT EDIT
50+
51+
:orphan:
52+
53+
======================
54+
Selenium Documentation
55+
======================
56+
"""
57+
)
58+
for base_module in base_modules:
59+
content_section = base_module.split(".", 1)[1]
60+
separator = "-" * len(content_section)
61+
f.write(
62+
f"""
63+
{content_section}
64+
{separator}
65+
66+
.. currentmodule:: {base_module}
67+
.. autosummary::
68+
:toctree: {base_module.replace(".", "_")}
69+
70+
"""
71+
)
72+
for module in modules:
73+
if base_module in module:
74+
f.write(f" {module}\n")
75+
f.write(
76+
f"""
77+
Indices and tables
78+
79+
* :ref:`genindex`
80+
* :ref:`modindex`
81+
* :ref:`search`
82+
"""
83+
)

py/tox.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ deps =
1515
-r {toxinidir}/docs/requirements.txt
1616
-r {toxinidir}/requirements.txt
1717
commands =
18+
; generate `docs/source/api.rst` with module listing
19+
{envpython} ./generate_api_module_listing.py
1820
; regenerate autodoc stub pages
1921
sphinx-autogen docs/source/api.rst
2022
; build api docs

0 commit comments

Comments
 (0)