diff --git a/.gitignore b/.gitignore index 624a1f6..e17a658 100644 --- a/.gitignore +++ b/.gitignore @@ -68,8 +68,12 @@ instance/ # Scrapy stuff: .scrapy +# Generated API docs +api-docs/ + # Sphinx documentation **/docs/_build/ +docs/sphinx/_autogen/ **/docs/source/_reference **/docs/source/_api_doc diff --git a/Makefile b/Makefile index a70f8c7..b615858 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,24 @@ +.PHONY: install docs lint license-check test test-integration test-pkg test-pkg-integration + install: uv sync --all-packages --all-extras +docs: + uv run sphinx-apidoc -e -M -f -T \ + -o docs/sphinx/_autogen \ + packages/base/ai_api_client_sdk \ + packages/base/ai_api_client_sdk/helpers + uv run sphinx-apidoc -e -M -f -T \ + -o docs/sphinx/_autogen \ + packages/core/ai_core_sdk \ + packages/core/ai_core_sdk/helpers \ + packages/core/ai_core_sdk/cli.py + uv run sphinx-apidoc -e -M -f -T \ + -o docs/sphinx/_autogen \ + packages/gen/gen_ai_hub \ + packages/gen/gen_ai_hub/evaluations/_internal + uv run sphinx-build -b html docs/sphinx api-docs/ + lint: uv run pylint ai_api_client_sdk ai_core_sdk gen_ai_hub --errors-only --output-format=colorized diff --git a/docs/sphinx/conf.py b/docs/sphinx/conf.py new file mode 100644 index 0000000..b214925 --- /dev/null +++ b/docs/sphinx/conf.py @@ -0,0 +1,15 @@ +project = "SAP AI SDK Python" +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", +] +html_theme = "furo" +exclude_patterns = ["_autogen/modules.rst"] +autodoc_default_options = { + "members": True, + "undoc-members": True, + "private-members": False, + "show-inheritance": True, + "special-members": "__init__", +} +autodoc_member_order = "bysource" diff --git a/docs/sphinx/index.rst b/docs/sphinx/index.rst new file mode 100644 index 0000000..3bfecc4 --- /dev/null +++ b/docs/sphinx/index.rst @@ -0,0 +1,17 @@ +SAP AI SDK Python +================= + +.. toctree:: + :maxdepth: 1 + :caption: Packages + + _autogen/ai_api_client_sdk + _autogen/ai_core_sdk + _autogen/gen_ai_hub + +Indices +------- + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/pyproject.toml b/pyproject.toml index 55a508d..f085bb3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ requires-python = ">=3.10" license = "Apache-2.0" [dependency-groups] -dev = ["pip-licenses>=5.5.5", "commitizen>=4"] +dev = ["pip-licenses>=5.5.5", "commitizen>=4", "sphinx>=7.0.0", "furo"] [tool.uv.sources] sap-ai-sdk-base = { workspace = true } diff --git a/uv.lock b/uv.lock index 461ae24..9a90fbc 100644 --- a/uv.lock +++ b/uv.lock @@ -25,6 +25,18 @@ members = [ "sap-ai-sdk-gen", ] +[[package]] +name = "accessible-pygments" +version = "0.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c1/bbac6a50d02774f91572938964c582fff4270eee73ab822a4aeea4d8b11b/accessible_pygments-0.0.5.tar.gz", hash = "sha256:40918d3e6a2b619ad424cb91e556bd3bd8865443d9f22f1dcdf79e33c8046872", size = 1377899, upload-time = "2024-05-10T11:23:10.216Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/3f/95338030883d8c8b91223b4e21744b04d11b161a3ef117295d8241f50ab4/accessible_pygments-0.0.5-py3-none-any.whl", hash = "sha256:88ae3211e68a1d0b011504b2ffc1691feafce124b845bd072ab6f9f66f34d4b7", size = 1395903, upload-time = "2024-05-10T11:23:08.421Z" }, +] + [[package]] name = "aenum" version = "3.1.17" @@ -42,7 +54,10 @@ source = { virtual = "." } [package.dev-dependencies] dev = [ { name = "commitizen" }, + { name = "furo" }, { name = "pip-licenses" }, + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] [package.metadata] @@ -50,7 +65,9 @@ dev = [ [package.metadata.requires-dev] dev = [ { name = "commitizen", specifier = ">=4" }, + { name = "furo" }, { name = "pip-licenses", specifier = ">=5.5.5" }, + { name = "sphinx", specifier = ">=7.0.0" }, ] [[package]] @@ -1063,6 +1080,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9a/9a/e35b4a917281c0b8419d4207f4334c8e8c5dbf4f3f5f9ada73958d937dcc/frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d", size = 13409, upload-time = "2025-10-06T05:38:16.721Z" }, ] +[[package]] +name = "furo" +version = "2025.12.19" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "accessible-pygments" }, + { name = "beautifulsoup4" }, + { name = "pygments" }, + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "sphinx-basic-ng" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ec/20/5f5ad4da6a5a27c80f2ed2ee9aee3f9e36c66e56e21c00fde467b2f8f88f/furo-2025.12.19.tar.gz", hash = "sha256:188d1f942037d8b37cd3985b955839fea62baa1730087dc29d157677c857e2a7", size = 1661473, upload-time = "2025-12-19T17:34:40.889Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/b2/50e9b292b5cac13e9e81272c7171301abc753a60460d21505b606e15cf21/furo-2025.12.19-py3-none-any.whl", hash = "sha256:bb0ead5309f9500130665a26bee87693c41ce4dbdff864dbfb6b0dae4673d24f", size = 339262, upload-time = "2025-12-19T17:34:38.905Z" }, +] + [[package]] name = "google-auth" version = "2.56.2" @@ -4343,6 +4377,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/31/53/136e9eca6e0b9dc0e1962e2c908fbea2e5ac000c2a2fbd9a35797958c48b/sphinx-8.2.3-py3-none-any.whl", hash = "sha256:4405915165f13521d875a8c29c8970800a0141c14cc5416a38feca4ea5d9b9c3", size = 3589741, upload-time = "2025-03-02T22:31:56.836Z" }, ] +[[package]] +name = "sphinx-basic-ng" +version = "1.0.0b2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "sphinx", version = "8.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/0b/a866924ded68efec7a1759587a4e478aec7559d8165fac8b2ad1c0e774d6/sphinx_basic_ng-1.0.0b2.tar.gz", hash = "sha256:9ec55a47c90c8c002b5960c57492ec3021f5193cb26cebc2dc4ea226848651c9", size = 20736, upload-time = "2023-07-08T18:40:54.166Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/dd/018ce05c532a22007ac58d4f45232514cd9d6dd0ee1dc374e309db830983/sphinx_basic_ng-1.0.0b2-py3-none-any.whl", hash = "sha256:eb09aedbabfb650607e9b4b68c9d240b90b1e1be221d6ad71d61c52e29f7932b", size = 22496, upload-time = "2023-07-08T18:40:52.659Z" }, +] + [[package]] name = "sphinxawesome-theme" version = "6.0.5"