SeleniumHQ / selenium

A browser automation framework and ecosystem.
https://selenium.dev
Apache License 2.0
30.73k stars 8.19k forks source link

[🚀 Feature]: Auto-generate the Python API from the code #14178

Open emanlove opened 4 months ago

emanlove commented 4 months ago

Feature and motivation

Some recent improvements have been made to the generation of the Python API documentation. Now the Python API doc is generated from the py/docs/source/api.st "template". Taking this a step further we should be able to generate the API from just the code itself. This is important as any updates to the code, for example recent additions with selenium.webdriver.common.bidi, needs to be manually added to this api.rst file, as shown here

Webdriver.common
----------------

.. currentmodule:: selenium.webdriver.common
.. autosummary::
   :toctree: webdriver

   selenium.webdriver.common.action_chains
   ...
   selenium.webdriver.common.bidi.cdp
   selenium.webdriver.common.bidi.console
   selenium.webdriver.common.bidi.script
   selenium.webdriver.common.bidi.session

And if we forgot to add, say selenium.webdriver.common.bidi.script, then it would be missing from the doc. So it would be good to either fully auto-generate it or have some automatic method to check for completeness and changes.

Usage example

Might add a step to the tox.ini to autogenerate the api doc from the code or check for completeness.

github-actions[bot] commented 4 months ago

@emanlove, thank you for creating this issue. We will troubleshoot it as soon as we can.


Info for maintainers

Triage this issue by using labels.

If information is missing, add a helpful comment and then I-issue-template label.

If the issue is a question, add the I-question label.

If the issue is valid but there is no time to troubleshoot it, consider adding the help wanted label.

If the issue requires changes or fixes from an external project (e.g., ChromeDriver, GeckoDriver, MSEdgeDriver, W3C), add the applicable G-* label, and it will provide the correct link and auto-close the issue.

After troubleshooting the issue, please add the R-awaiting answer label.

Thank you!

github-actions[bot] commented 4 months ago

This issue is looking for contributors.

Please comment below or reach out to us through our IRC/Slack/Matrix channels if you are interested.

shbenzer commented 1 week ago

I'm assuming we don't want to import a library for this correct? so to minimize dependencies

emanlove commented 1 week ago

@shbenzer, I believe it can be done with the current sphinx build process without any additional packages. I am open to suggestions on other ways to do this.