From 42094fb20629547a6384e05e1d1de8540ea758ae Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Tue, 5 Aug 2025 20:29:26 -0400 Subject: [PATCH 1/2] Update docs auto-generation to use uv --- .readthedocs.yaml | 14 +- docs/api/build-docs.sh | 24 +- docs/api/conf.py | 137 +------- docs/api/index.rst | 2 +- docs/api/requirements.txt | 59 ---- pyproject.toml | 8 + .../adapters/schemas/direct_function.py | 2 +- src/pipecat/services/speechmatics/stt.py | 4 +- uv.lock | 305 +++++++++++++++++- 9 files changed, 344 insertions(+), 211 deletions(-) delete mode 100644 docs/api/requirements.txt diff --git a/.readthedocs.yaml b/.readthedocs.yaml index c9176cdda..f94476ff3 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -9,22 +9,14 @@ build: - python3-dev - libasound2-dev jobs: - pre_build: - - python -m pip install --upgrade pip - - pip install wheel setuptools - post_build: - - echo "Build completed" + post_install: + - pip install uv + - UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --group docs --all-extras --no-extra krisp --no-extra gstreamer sphinx: configuration: docs/api/conf.py fail_on_warning: false -python: - install: - - requirements: docs/api/requirements.txt - - method: pip - path: . - search: ranking: api/*: 5 diff --git a/docs/api/build-docs.sh b/docs/api/build-docs.sh index 5260a3352..800a1cfad 100755 --- a/docs/api/build-docs.sh +++ b/docs/api/build-docs.sh @@ -1,17 +1,27 @@ #!/bin/bash -# Check if sphinx-build is installed -if ! command -v sphinx-build &> /dev/null; then - echo "Error: sphinx-build is not installed or not in PATH" >&2 - echo "Please install Sphinx using: pip install -r requirements.txt" >&2 +# Build docs using uv +echo "Installing dependencies with uv..." +uv sync --group docs --all-extras --no-extra krisp --no-extra gstreamer + +# Check if sphinx-build is available +if ! uv run sphinx-build --version &> /dev/null; then + echo "Error: sphinx-build is not available" >&2 exit 1 fi # Clean previous build rm -rf _build +echo "Building documentation..." # Build docs matching ReadTheDocs configuration -sphinx-build -b html -d _build/doctrees . _build/html -W --keep-going +uv run sphinx-build -b html -d _build/doctrees . _build/html -W --keep-going -# Open docs (MacOS) -open _build/html/index.html \ No newline at end of file +if [ $? -eq 0 ]; then + echo "Documentation built successfully!" + # Open docs (MacOS) + open _build/html/index.html +else + echo "Documentation build failed!" >&2 + exit 1 +fi \ No newline at end of file diff --git a/docs/api/conf.py b/docs/api/conf.py index 32d801b40..652ca2af9 100644 --- a/docs/api/conf.py +++ b/docs/api/conf.py @@ -1,4 +1,5 @@ import logging +import os import sys from datetime import datetime from pathlib import Path @@ -28,6 +29,7 @@ extensions = [ suppress_warnings = [ "autodoc.mocked_object", + "toc.not_included", ] # Napoleon settings @@ -43,147 +45,24 @@ autodoc_default_options = { "show-inheritance": True, } -# Mock imports for optional dependencies +# Mock imports for problematic dependencies only autodoc_mock_imports = [ - "riva", - "livekit", - "pyht", # Base PlayHT package - "pyht.async_client", # PlayHT specific imports - "pyht.client", - "pyht.protos", - "pyht.protos.api_pb2", - "pipecat_ai_playht", # PlayHT wrapper - "aiortc", - "aiortc.mediastreams", - "cv2", - "av", - "pyneuphonic", - "mem0", - "mlx_whisper", - "anthropic", - "assemblyai", - "boto3", - "azure", - "cartesia", - "deepgram", - "elevenlabs", - "fal", - "gladia", - "google", - "krisp", - "langchain", - "lmnt", - "noisereduce", - "openpipe", - "simli", - "soundfile", - "soniox", + # Krisp - has build issues on some platforms "pipecat_ai_krisp", - "pyaudio", + "krisp", + # System-specific GUI libraries "_tkinter", "tkinter", - "daily", - "daily_python", - # Moondream dependencies - "torch", - "transformers", - "intel_extension_for_pytorch", - # Ultravox dependencies - "huggingface_hub", - "vllm", - "vllm.engine.arg_utils", - "transformers.AutoTokenizer", - # Langchain dependencies - "langchain_core", - "langchain_core.messages", - "langchain_core.runnables", - "langchain_core.messages.AIMessageChunk", - "langchain_core.runnables.Runnable", - # LiveKit dependencies - "livekit", - "livekit.rtc", - "livekit_api", - "livekit_protocol", - "tenacity", - "tenacity.retry", - "tenacity.stop_after_attempt", - "tenacity.wait_exponential", - "rtc", - "rtc.Room", - "rtc.RoomOptions", - "rtc.AudioSource", - "rtc.LocalAudioTrack", - "rtc.TrackPublishOptions", - "rtc.TrackSource", - "rtc.AudioStream", - "rtc.AudioFrameEvent", - "rtc.AudioFrame", - "rtc.Track", - "rtc.TrackKind", - "rtc.RemoteParticipant", - "rtc.RemoteTrackPublication", - "rtc.DataPacket", - # Riva dependencies - "riva", - "riva.client", - "riva.client.Auth", - "riva.client.ASRService", - "riva.client.StreamingRecognitionConfig", - "riva.client.RecognitionConfig", - "riva.client.AudioEncoding", - "riva.client.proto.riva_tts_pb2", - "riva.client.SpeechSynthesisService", - # Local CoreML Smart Turn dependencies - "coremltools", - "coremltools.models", - "coremltools.models.MLModel", - "torch", - "torch.nn", - "torch.nn.functional", - "transformers", - "transformers.AutoFeatureExtractor", - # Also add specific classes that are imported - "AutoFeatureExtractor", - # Sentry dependencies - "sentry_sdk", - # AWS Nova Sonic dependencies - "aws_sdk_bedrock_runtime", - "aws_sdk_bedrock_runtime.client", - "aws_sdk_bedrock_runtime.config", - "aws_sdk_bedrock_runtime.models", - "smithy_aws_core", - "smithy_aws_core.credentials_resolvers", - "smithy_aws_core.credentials_resolvers.static", - "smithy_aws_core.identity", - "smithy_core", - "smithy_core.aio", - "smithy_core.aio.eventstream", - # MCP dependencies (you may already have these) - "mcp", - "mcp.client", - "mcp.client.session_group", - "mcp.client.sse", - "mcp.client.stdio", - "mcp.ClientSession", - "mcp.StdioServerParameters", + # Platform-specific audio libraries (if needed) # gstreamer "gi", "gi.require_version", "gi.repository", - # Protobuf mocks - "pipecat.frames.protobufs.frames_pb2", - "pipecat.serializers.protobuf", - "google.protobuf", - "google.protobuf.descriptor", - "google.protobuf.descriptor_pool", - "google.protobuf.runtime_version", - "google.protobuf.symbol_database", - "google.protobuf.internal.builder", ] # HTML output settings html_theme = "sphinx_rtd_theme" -html_static_path = ["_static"] +html_static_path = ["_static"] if os.path.exists("_static") else [] autodoc_typehints = "signature" # Show type hints in the signature only, not in the docstring html_show_sphinx = False diff --git a/docs/api/index.rst b/docs/api/index.rst index d60a027a2..474d0a2ef 100644 --- a/docs/api/index.rst +++ b/docs/api/index.rst @@ -14,7 +14,7 @@ Quick Links * `Join our Community `_ .. toctree:: - :maxdepth: 3 + :maxdepth: 2 :caption: API Reference :hidden: diff --git a/docs/api/requirements.txt b/docs/api/requirements.txt deleted file mode 100644 index 4807b07d6..000000000 --- a/docs/api/requirements.txt +++ /dev/null @@ -1,59 +0,0 @@ -# Sphinx dependencies -sphinx>=8.1.3 -sphinx-rtd-theme -sphinx-markdown-builder -sphinx-autodoc-typehints -toml - -# Install all extras individually to ensure they're properly resolved -pipecat-ai[anthropic] -pipecat-ai[assemblyai] -pipecat-ai[asyncai] -pipecat-ai[aws] -pipecat-ai[azure] -pipecat-ai[cartesia] -pipecat-ai[cerebras] -pipecat-ai[deepseek] -pipecat-ai[daily] -pipecat-ai[deepgram] -pipecat-ai[elevenlabs] -pipecat-ai[fal] -pipecat-ai[fireworks] -pipecat-ai[fish] -pipecat-ai[gladia] -pipecat-ai[google] -pipecat-ai[grok] -pipecat-ai[groq] -pipecat-ai[inworld] -# pipecat-ai[krisp] # Mocked -pipecat-ai[koala] -# pipecat-ai[langchain] # Mocked -# pipecat-ai[livekit] # Mocked -pipecat-ai[lmnt] -pipecat-ai[local] -# pipecat-ai[local-smart-turn] # Mocked -# pipecat-ai[mem0] # Mocked -# pipecat-ai[mlx-whisper] # Mocked -# pipecat-ai[moondream] # Mocked -pipecat-ai[nim] -# pipecat-ai[neuphonic] # Mocked -pipecat-ai[noisereduce] -pipecat-ai[openai] -# pipecat-ai[openpipe] -# pipecat-ai[playht] # Mocked due to grpcio conflict with riva -pipecat-ai[qwen] -pipecat-ai[remote-smart-turn] -# pipecat-ai[riva] # Mocked -pipecat-ai[runner] -pipecat-ai[sambanova] -pipecat-ai[silero] -pipecat-ai[simli] -pipecat-ai[soundfile] -pipecat-ai[soniox] -pipecat-ai[speechmatics] -pipecat-ai[tavus] -pipecat-ai[together] -# pipecat-ai[ultravox] # Mocked -# pipecat-ai[webrtc] # Mocked -pipecat-ai[websocket] -pipecat-ai[whisper] \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index e7e4eb7c9..f7ba859ad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -121,6 +121,14 @@ dev = [ "python-dotenv~=1.1.1", ] +docs = [ + "sphinx>=8.1.3", + "sphinx-rtd-theme", + "sphinx-markdown-builder", + "sphinx-autodoc-typehints", + "toml", +] + [tool.setuptools.packages.find] where = ["src"] diff --git a/src/pipecat/adapters/schemas/direct_function.py b/src/pipecat/adapters/schemas/direct_function.py index e300eff81..b8869e61a 100644 --- a/src/pipecat/adapters/schemas/direct_function.py +++ b/src/pipecat/adapters/schemas/direct_function.py @@ -44,7 +44,7 @@ class DirectFunction(Protocol): "Direct" functions' metadata is automatically extracted from their function signature and docstrings, allowing them to be used without accompanying function configurations (as - `FunctionSchema`s or in provider-specific formats). + FunctionSchemas or in provider-specific formats). """ async def __call__(self, params: "FunctionCallParams", **kwargs: Any) -> None: diff --git a/src/pipecat/services/speechmatics/stt.py b/src/pipecat/services/speechmatics/stt.py index 6859306d3..59145742e 100644 --- a/src/pipecat/services/speechmatics/stt.py +++ b/src/pipecat/services/speechmatics/stt.py @@ -74,7 +74,7 @@ class DiarizationFocusMode(str, Enum): class AdditionalVocabEntry: """Additional vocabulary entry. - Attributes: + Parameters: content: The word to add to the dictionary. sounds_like: Similar words to the word. """ @@ -87,7 +87,7 @@ class AdditionalVocabEntry: class DiarizationKnownSpeaker: """Known speakers for speaker diarization. - Attributes: + Parameters: label: The label of the speaker. speaker_identifiers: One or more data strings for the speaker. """ diff --git a/uv.lock b/uv.lock index 8a6eb2f82..212d43b0c 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 2 +revision = 3 requires-python = ">=3.10" resolution-markers = [ "python_full_version >= '3.13' and sys_platform == 'darwin'", @@ -236,6 +236,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3a/11/f359cbbde87b88b0f17503e9c17cae6dfc9117b756ce600087306f28f52d/airportsdata-20250706-py3-none-any.whl", hash = "sha256:750e882a75e391572ae859d4cb78cb801f5f2ca71b07849a381670cb01780677", size = 912715, upload-time = "2025-07-06T22:19:21.158Z" }, ] +[[package]] +name = "alabaster" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/f8/d9c74d0daf3f742840fd818d69cfae176fa332022fd44e3469487d5a9420/alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e", size = 24210, upload-time = "2024-07-26T18:15:03.762Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b", size = 13929, upload-time = "2024-07-26T18:15:02.05Z" }, +] + [[package]] name = "annotated-types" version = "0.7.0" @@ -456,6 +465,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/52/bb/ef7a29f5717cca646be6698d80e542446a6a442be897c8f67bf93551c672/azure_cognitiveservices_speech-1.42.0-py3-none-win_amd64.whl", hash = "sha256:32076ee03b3b402a2e8841f2c21e5cd54dc3ffbf5af183426344727298c8bbd4", size = 2377971, upload-time = "2025-01-13T22:09:44.706Z" }, ] +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + [[package]] name = "backoff" version = "2.2.1" @@ -1305,6 +1323,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/55/e2/2537ebcff11c1ee1ff17d8d0b6f4db75873e3b0fb32c2d4a2ee31ecb310a/docstring_parser-0.17.0-py3-none-any.whl", hash = "sha256:cf2569abd23dce8099b300f9b4fa8191e9582dda731fd533daf54c4551658708", size = 36896, upload-time = "2025-07-21T07:35:00.684Z" }, ] +[[package]] +name = "docutils" +version = "0.21.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/ed/aefcc8cd0ba62a0560c3c18c33925362d46c6075480bfa4df87b28e169a9/docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f", size = 2204444, upload-time = "2024-04-23T18:57:18.24Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2", size = 587408, upload-time = "2024-04-23T18:57:14.835Z" }, +] + [[package]] name = "einops" version = "0.8.1" @@ -2235,6 +2262,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cd/1f/dd52a84ed140e31a5d226cd47d98d21aa559aead35ef7bae479eab4c494c/ijson-3.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:7ca72ca12e9a1dd4252c97d952be34282907f263f7e28fcdff3a01b83981e837", size = 53864, upload-time = "2025-05-08T02:37:10.044Z" }, ] +[[package]] +name = "imagesize" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026, upload-time = "2022-07-01T12:21:05.687Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769, upload-time = "2022-07-01T12:21:02.467Z" }, +] + [[package]] name = "importlib-metadata" version = "8.7.0" @@ -4188,6 +4224,15 @@ dev = [ { name = "setuptools" }, { name = "setuptools-scm" }, ] +docs = [ + { 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-autodoc-typehints", version = "3.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "sphinx-autodoc-typehints", version = "3.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "sphinx-markdown-builder" }, + { name = "sphinx-rtd-theme" }, + { name = "toml" }, +] [package.metadata] requires-dist = [ @@ -4297,6 +4342,13 @@ dev = [ { name = "setuptools", specifier = "~=78.1.1" }, { name = "setuptools-scm", specifier = "~=8.3.1" }, ] +docs = [ + { name = "sphinx", specifier = ">=8.1.3" }, + { name = "sphinx-autodoc-typehints" }, + { name = "sphinx-markdown-builder" }, + { name = "sphinx-rtd-theme" }, + { name = "toml" }, +] [[package]] name = "pipecat-ai-krisp" @@ -5460,6 +5512,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/84/9c/3881ad34f01942af0cf713e25e476bf851e04e389cc3ff146c3b459ab861/rignore-0.6.4-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:7e6c425603db2c147eace4f752ca3cd4551e7568c9d332175d586c68bcbe3d8d", size = 1122433, upload-time = "2025-07-19T19:24:43.973Z" }, ] +[[package]] +name = "roman-numerals-py" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/76/48fd56d17c5bdbdf65609abbc67288728a98ed4c02919428d4f52d23b24b/roman_numerals_py-3.1.0.tar.gz", hash = "sha256:be4bf804f083a4ce001b5eb7e3c0862479d10f94c936f6c4e5f250aa5ff5bd2d", size = 9017, upload-time = "2025-02-22T07:34:54.333Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/97/d2cbbaa10c9b826af0e10fdf836e1bf344d9f0abb873ebc34d1f49642d3f/roman_numerals_py-3.1.0-py3-none-any.whl", hash = "sha256:9da2ad2fb670bcf24e81070ceb3be72f6c11c440d73bd579fbeca1e9f330954c", size = 7742, upload-time = "2025-02-22T07:34:52.422Z" }, +] + [[package]] name = "rpds-py" version = "0.26.0" @@ -5973,6 +6034,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, ] +[[package]] +name = "snowballstemmer" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/75/a7/9810d872919697c9d01295633f5d574fb416d47e535f258272ca1f01f447/snowballstemmer-3.0.1.tar.gz", hash = "sha256:6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895", size = 105575, upload-time = "2025-05-09T16:34:51.843Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl", hash = "sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064", size = 103274, upload-time = "2025-05-09T16:34:50.371Z" }, +] + [[package]] name = "soundfile" version = "0.13.1" @@ -6030,6 +6100,221 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5a/d3/29c2408b02c8568a805a5255f2dfad894f4adde2b69c22bae06ed3b9a7e2/speechmatics_rt-0.4.0-py3-none-any.whl", hash = "sha256:d51ed416dbdbb3b2bfbf2868e3c8bde4fd023376f5202fb725f1bc0dd6af5bb7", size = 31107, upload-time = "2025-07-07T15:22:46.419Z" }, ] +[[package]] +name = "sphinx" +version = "8.1.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "alabaster", marker = "python_full_version < '3.11'" }, + { name = "babel", marker = "python_full_version < '3.11'" }, + { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, + { name = "docutils", marker = "python_full_version < '3.11'" }, + { name = "imagesize", marker = "python_full_version < '3.11'" }, + { name = "jinja2", marker = "python_full_version < '3.11'" }, + { name = "packaging", marker = "python_full_version < '3.11'" }, + { name = "pygments", marker = "python_full_version < '3.11'" }, + { name = "requests", marker = "python_full_version < '3.11'" }, + { name = "snowballstemmer", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-applehelp", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-devhelp", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-htmlhelp", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-jsmath", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-qthelp", marker = "python_full_version < '3.11'" }, + { name = "sphinxcontrib-serializinghtml", marker = "python_full_version < '3.11'" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/be0b61178fe2cdcb67e2a92fc9ebb488e3c51c4f74a36a7824c0adf23425/sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927", size = 8184611, upload-time = "2024-10-13T20:27:13.93Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/60/1ddff83a56d33aaf6f10ec8ce84b4c007d9368b21008876fceda7e7381ef/sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2", size = 3487125, upload-time = "2024-10-13T20:27:10.448Z" }, +] + +[[package]] +name = "sphinx" +version = "8.2.3" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.13' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform == 'darwin'", + "python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "alabaster", marker = "python_full_version >= '3.11'" }, + { name = "babel", marker = "python_full_version >= '3.11'" }, + { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" }, + { name = "docutils", marker = "python_full_version >= '3.11'" }, + { name = "imagesize", marker = "python_full_version >= '3.11'" }, + { name = "jinja2", marker = "python_full_version >= '3.11'" }, + { name = "packaging", marker = "python_full_version >= '3.11'" }, + { name = "pygments", marker = "python_full_version >= '3.11'" }, + { name = "requests", marker = "python_full_version >= '3.11'" }, + { name = "roman-numerals-py", marker = "python_full_version >= '3.11'" }, + { name = "snowballstemmer", marker = "python_full_version >= '3.11'" }, + { name = "sphinxcontrib-applehelp", marker = "python_full_version >= '3.11'" }, + { name = "sphinxcontrib-devhelp", marker = "python_full_version >= '3.11'" }, + { name = "sphinxcontrib-htmlhelp", marker = "python_full_version >= '3.11'" }, + { name = "sphinxcontrib-jsmath", marker = "python_full_version >= '3.11'" }, + { name = "sphinxcontrib-qthelp", marker = "python_full_version >= '3.11'" }, + { name = "sphinxcontrib-serializinghtml", marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/ad/4360e50ed56cb483667b8e6dadf2d3fda62359593faabbe749a27c4eaca6/sphinx-8.2.3.tar.gz", hash = "sha256:398ad29dee7f63a75888314e9424d40f52ce5a6a87ae88e7071e80af296ec348", size = 8321876, upload-time = "2025-03-02T22:31:59.658Z" } +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-autodoc-typehints" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11' and sys_platform == 'darwin'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.11' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/f0/43c6a5ff3e7b08a8c3b32f81b859f1b518ccc31e45f22e2b41ced38be7b9/sphinx_autodoc_typehints-3.0.1.tar.gz", hash = "sha256:b9b40dd15dee54f6f810c924f863f9cf1c54f9f3265c495140ea01be7f44fa55", size = 36282, upload-time = "2025-01-16T18:25:30.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/dc/dc46c5c7c566b7ec5e8f860f9c89533bf03c0e6aadc96fb9b337867e4460/sphinx_autodoc_typehints-3.0.1-py3-none-any.whl", hash = "sha256:4b64b676a14b5b79cefb6628a6dc8070e320d4963e8ff640a2f3e9390ae9045a", size = 20245, upload-time = "2025-01-16T18:25:27.394Z" }, +] + +[[package]] +name = "sphinx-autodoc-typehints" +version = "3.2.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.13' and sys_platform == 'darwin'", + "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform == 'darwin'", + "python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform == 'darwin'", + "python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", + "(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform != 'darwin' and sys_platform != 'linux')", + "python_full_version == '3.11.*' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", + "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", +] +dependencies = [ + { 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/93/68/a388a9b8f066cd865d9daa65af589d097efbfab9a8c302d2cb2daa43b52e/sphinx_autodoc_typehints-3.2.0.tar.gz", hash = "sha256:107ac98bc8b4837202c88c0736d59d6da44076e65a0d7d7d543a78631f662a9b", size = 36724, upload-time = "2025-04-25T16:53:25.872Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/c7/8aab362e86cbf887e58be749a78d20ad743e1eb2c73c2b13d4761f39a104/sphinx_autodoc_typehints-3.2.0-py3-none-any.whl", hash = "sha256:884b39be23b1d884dcc825d4680c9c6357a476936e3b381a67ae80091984eb49", size = 20563, upload-time = "2025-04-25T16:53:24.492Z" }, +] + +[[package]] +name = "sphinx-markdown-builder" +version = "0.6.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { 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 = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/36/f4a2efb804e2b89a6a29338bd1e9895af806e465c4a13ca59271f9d40dfd/sphinx_markdown_builder-0.6.8.tar.gz", hash = "sha256:6141b566bf18dd1cd515a0a90efd91c6c4d10fc638554fab2fd19cba66543dd7", size = 22007, upload-time = "2025-01-19T01:58:20.497Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/98/7e8e11d4edce0947d89c5d00ed43d925a5254dc9733579382b04f77e5ff2/sphinx_markdown_builder-0.6.8-py3-none-any.whl", hash = "sha256:f04ab42d52449363228b9104569c56b778534f9c41a168af8cfc721a1e0e3edc", size = 17270, upload-time = "2025-01-19T01:58:19.296Z" }, +] + +[[package]] +name = "sphinx-rtd-theme" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { 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 = "sphinxcontrib-jquery" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/44/c97faec644d29a5ceddd3020ae2edffa69e7d00054a8c7a6021e82f20335/sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85", size = 7620463, upload-time = "2024-11-13T11:06:04.545Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/77/46e3bac77b82b4df5bb5b61f2de98637724f246b4966cfc34bc5895d852a/sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13", size = 7655561, upload-time = "2024-11-13T11:06:02.094Z" }, +] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/6e/b837e84a1a704953c62ef8776d45c3e8d759876b4a84fe14eba2859106fe/sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", size = 20053, upload-time = "2024-07-29T01:09:00.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300, upload-time = "2024-07-29T01:08:58.99Z" }, +] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/d2/5beee64d3e4e747f316bae86b55943f51e82bb86ecd325883ef65741e7da/sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", size = 12967, upload-time = "2024-07-29T01:09:23.417Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530, upload-time = "2024-07-29T01:09:21.945Z" }, +] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/93/983afd9aa001e5201eab16b5a444ed5b9b0a7a010541e0ddfbbfd0b2470c/sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9", size = 22617, upload-time = "2024-07-29T01:09:37.889Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705, upload-time = "2024-07-29T01:09:36.407Z" }, +] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +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/de/f3/aa67467e051df70a6330fe7770894b3e4f09436dea6881ae0b4f3d87cad8/sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a", size = 122331, upload-time = "2023-03-14T15:01:01.944Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/85/749bd22d1a68db7291c89e2ebca53f4306c3f205853cf31e9de279034c3c/sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae", size = 121104, upload-time = "2023-03-14T15:01:00.356Z" }, +] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/e8/9ed3830aeed71f17c026a07a5097edcf44b692850ef215b161b8ad875729/sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8", size = 5787, upload-time = "2019-01-21T16:10:16.347Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", size = 5071, upload-time = "2019-01-21T16:10:14.333Z" }, +] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/68/bc/9104308fc285eb3e0b31b67688235db556cd5b0ef31d96f30e45f2e51cae/sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", size = 17165, upload-time = "2024-07-29T01:09:56.435Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743, upload-time = "2024-07-29T01:09:54.885Z" }, +] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/44/6716b257b0aa6bfd51a1b31665d1c205fb12cb5ad56de752dfa15657de2f/sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d", size = 16080, upload-time = "2024-07-29T01:10:09.332Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072, upload-time = "2024-07-29T01:10:08.203Z" }, +] + [[package]] name = "sqlalchemy" version = "2.0.42" @@ -6112,6 +6397,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b2/fe/81695a1aa331a842b582453b605175f419fe8540355886031328089d840a/sympy-1.13.1-py3-none-any.whl", hash = "sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8", size = 6189177, upload-time = "2024-07-19T09:26:48.863Z" }, ] +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, +] + [[package]] name = "tenacity" version = "8.5.0" @@ -6198,6 +6492,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/41/f2/fd673d979185f5dcbac4be7d09461cbb99751554ffb6718d0013af8604cb/tokenizers-0.21.4-cp39-abi3-win_amd64.whl", hash = "sha256:475d807a5c3eb72c59ad9b5fcdb254f6e17f53dfcbb9903233b0dfa9c943b597", size = 2507568, upload-time = "2025-07-28T15:48:55.456Z" }, ] +[[package]] +name = "toml" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253, upload-time = "2020-11-01T01:40:22.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588, upload-time = "2020-11-01T01:40:20.672Z" }, +] + [[package]] name = "tomli" version = "2.2.1" From 29229df719c896b973375a05198f93877a62d78a Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Tue, 5 Aug 2025 20:57:42 -0400 Subject: [PATCH 2/2] Speed up builds, mocking large packages --- .readthedocs.yaml | 2 +- docs/api/build-docs.sh | 2 +- docs/api/conf.py | 39 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index f94476ff3..8447c9741 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -11,7 +11,7 @@ build: jobs: post_install: - pip install uv - - UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --group docs --all-extras --no-extra krisp --no-extra gstreamer + - UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --group docs --all-extras --no-extra krisp --no-extra gstreamer --no-extra ultravox --no-extra local_smart_turn --no-extra moondream --no-extra riva --no-extra mlx-whisper sphinx: configuration: docs/api/conf.py diff --git a/docs/api/build-docs.sh b/docs/api/build-docs.sh index 800a1cfad..d997f763e 100755 --- a/docs/api/build-docs.sh +++ b/docs/api/build-docs.sh @@ -2,7 +2,7 @@ # Build docs using uv echo "Installing dependencies with uv..." -uv sync --group docs --all-extras --no-extra krisp --no-extra gstreamer +uv sync --group docs --all-extras --no-extra krisp --no-extra gstreamer --no-extra ultravox --no-extra local_smart_turn --no-extra moondream --no-extra riva --no-extra mlx-whisper # Check if sphinx-build is available if ! uv run sphinx-build --version &> /dev/null; then diff --git a/docs/api/conf.py b/docs/api/conf.py index 652ca2af9..a3062b612 100644 --- a/docs/api/conf.py +++ b/docs/api/conf.py @@ -45,7 +45,7 @@ autodoc_default_options = { "show-inheritance": True, } -# Mock imports for problematic dependencies only +# Mock imports for optional dependencies autodoc_mock_imports = [ # Krisp - has build issues on some platforms "pipecat_ai_krisp", @@ -54,10 +54,45 @@ autodoc_mock_imports = [ "_tkinter", "tkinter", # Platform-specific audio libraries (if needed) - # gstreamer "gi", "gi.require_version", "gi.repository", + # OpenCV - sometimes has import issues during docs build + "cv2", + # Heavy ML packages excluded from ReadTheDocs + # ultravox dependencies + "vllm", + "vllm.engine.arg_utils", + # local-smart-turn dependencies + "coremltools", + "coremltools.models", + "coremltools.models.MLModel", + "torch", + "torch.nn", + "torch.nn.functional", + "torchaudio", + # moondream dependencies + "transformers", + "transformers.AutoTokenizer", + "transformers.AutoFeatureExtractor", + "AutoFeatureExtractor", + "timm", + "einops", + "intel_extension_for_pytorch", + "huggingface_hub", + # riva dependencies + "riva", + "riva.client", + "riva.client.Auth", + "riva.client.ASRService", + "riva.client.StreamingRecognitionConfig", + "riva.client.RecognitionConfig", + "riva.client.AudioEncoding", + "riva.client.proto.riva_tts_pb2", + "riva.client.SpeechSynthesisService", + # MLX dependencies (Apple Silicon specific) + "mlx", + "mlx_whisper", # Note: might need underscore format too ] # HTML output settings