diff --git a/docs/api/conf.py b/docs/api/conf.py index eab14f7e8..fffaf90b2 100644 --- a/docs/api/conf.py +++ b/docs/api/conf.py @@ -3,7 +3,7 @@ # Add source directory to path docs_dir = Path(__file__).parent -project_root = docs_dir.parent +project_root = docs_dir.parent.parent sys.path.insert(0, str(project_root / "src")) # Project information @@ -39,3 +39,40 @@ html_static_path = ["_static"] autodoc_typehints = "description" html_show_sphinx = False # Remove "Built with Sphinx" + + +def setup(app): + """Generate API documentation during Sphinx build.""" + from sphinx.ext.apidoc import main + + docs_dir = Path(__file__).parent + project_root = docs_dir.parent.parent + output_dir = str(docs_dir / "api") + source_dir = str(project_root / "src" / "pipecat") + + # Clean existing files + if Path(output_dir).exists(): + import shutil + + shutil.rmtree(output_dir) + + print(f"Generating API documentation...") + print(f"Output directory: {output_dir}") + print(f"Source directory: {source_dir}") + + # Similar exclusions as in your generate_docs.py + excludes = [ + str(project_root / "src/pipecat/processors/gstreamer"), + str(project_root / "src/pipecat/transports/network"), + str(project_root / "src/pipecat/transports/services"), + str(project_root / "src/pipecat/transports/local"), + str(project_root / "src/pipecat/services/to_be_updated"), + "**/test_*.py", + "**/tests/*.py", + ] + + try: + main(["-f", "-e", "-M", "--no-toc", "-o", output_dir, source_dir] + excludes) + print("API documentation generated successfully!") + except Exception as e: + print(f"Error generating API documentation: {e}") diff --git a/docs/api/requirements.txt b/docs/api/requirements.txt index c1b9addb5..f571b6ce0 100644 --- a/docs/api/requirements.txt +++ b/docs/api/requirements.txt @@ -2,4 +2,5 @@ sphinx>=8.1.3 sphinx-rtd-theme sphinx-markdown-builder sphinx-autodoc-typehints -toml \ No newline at end of file +toml +pipecat-ai[anthropic,assemblyai,aws,azure,canonical,cartesia,deepgram,elevenlabs,fal,fireworks,gladia,google,grok,groq,krisp,langchain,lmnt,moondream,nim,noisereduce,openai,openpipe,playht,silero,soundfile,websocket,whisper]