diff --git a/pyproject.toml b/pyproject.toml index 4e7a6130d..e313c789d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,23 +1,23 @@ [build-system] -requires = [ "setuptools>=64", "setuptools_scm>=8" ] +requires = ["setuptools>=64", "setuptools_scm>=8"] build-backend = "setuptools.build_meta" [project] name = "pipecat-ai" -dynamic = [ "version" ] +dynamic = ["version"] description = "An open source framework for voice (and multimodal) assistants" license = "BSD-2-Clause" -license-files = [ "LICENSE" ] +license-files = ["LICENSE"] readme = "README.md" requires-python = ">=3.10" -keywords = [ "webrtc", "audio", "video", "ai" ] +keywords = ["webrtc", "audio", "video", "ai"] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Topic :: Communications :: Conferencing", "Topic :: Multimedia :: Sound/Audio", "Topic :: Multimedia :: Video", - "Topic :: Scientific/Engineering :: Artificial Intelligence", + "Topic :: Scientific/Engineering :: Artificial Intelligence" ] dependencies = [ "aiofiles>=24.1.0,<25", @@ -51,24 +51,24 @@ assemblyai = [ "pipecat-ai[websockets-base]" ] asyncai = [ "pipecat-ai[websockets-base]" ] aws = [ "aioboto3~=15.0.0", "pipecat-ai[websockets-base]" ] aws-nova-sonic = [ "aws_sdk_bedrock_runtime~=0.1.1; python_version>='3.12'" ] -azure = [ "azure-cognitiveservices-speech~=1.42.0" ] +azure = [ "azure-cognitiveservices-speech~=1.42.0"] cartesia = [ "cartesia~=2.0.3", "pipecat-ai[websockets-base]" ] -cerebras = [ ] -deepseek = [ ] +cerebras = [] +deepseek = [] daily = [ "daily-python~=0.21.0" ] deepgram = [ "deepgram-sdk~=4.7.0" ] elevenlabs = [ "pipecat-ai[websockets-base]" ] fal = [ "fal-client~=0.5.9" ] -fireworks = [ ] +fireworks = [] fish = [ "ormsgpack~=1.7.0", "pipecat-ai[websockets-base]" ] gladia = [ "pipecat-ai[websockets-base]" ] google = [ "google-cloud-speech>=2.33.0,<3", "google-cloud-texttospeech>=2.31.0,<3", "google-genai>=1.41.0,<2", "pipecat-ai[websockets-base]" ] -grok = [ ] +grok = [] groq = [ "groq~=0.23.0" ] gstreamer = [ "pygobject~=3.50.0" ] heygen = [ "livekit>=1.0.13", "pipecat-ai[websockets-base]" ] hume = [ "hume>=0.11.2" ] -inworld = [ ] +inworld = [] krisp = [ "pipecat-ai-krisp~=0.4.0" ] koala = [ "pvkoala~=2.0.3" ] langchain = [ "langchain~=0.3.20", "langchain-community~=0.3.20", "langchain-openai~=0.3.9" ] @@ -77,35 +77,35 @@ lmnt = [ "pipecat-ai[websockets-base]" ] local = [ "pyaudio~=0.2.14" ] mcp = [ "mcp[cli]>=1.11.0,<2" ] mem0 = [ "mem0ai~=0.1.94" ] -mistral = [ ] +mistral = [] mlx-whisper = [ "mlx-whisper~=0.4.2" ] moondream = [ "accelerate~=1.10.0", "einops~=0.8.0", "pyvips[binary]~=3.0.0", "timm~=1.0.13", "transformers>=4.48.0" ] -nim = [ ] +nim = [] neuphonic = [ "pipecat-ai[websockets-base]" ] noisereduce = [ "noisereduce~=3.0.3" ] openai = [ "pipecat-ai[websockets-base]" ] openpipe = [ "openpipe>=4.50.0,<6" ] -openrouter = [ ] -perplexity = [ ] +openrouter = [] +perplexity = [] playht = [ "pipecat-ai[websockets-base]" ] -qwen = [ ] +qwen = [] rime = [ "pipecat-ai[websockets-base]" ] riva = [ "nvidia-riva-client~=2.21.1" ] -runner = [ "python-dotenv>=1.0.0,<2.0.0", "uvicorn>=0.32.0,<1.0.0", "fastapi>=0.115.6,<0.122.0", "pipecat-ai-small-webrtc-prebuilt>=1.0.0" ] -sambanova = [ ] +runner = [ "python-dotenv>=1.0.0,<2.0.0", "uvicorn>=0.32.0,<1.0.0", "fastapi>=0.115.6,<0.122.0", "pipecat-ai-small-webrtc-prebuilt>=1.0.0"] +sambanova = [] sarvam = [ "sarvamai==0.1.21", "pipecat-ai[websockets-base]" ] sentry = [ "sentry-sdk>=2.28.0,<3" ] local-smart-turn = [ "coremltools>=8.0", "transformers", "torch>=2.5.0,<3", "torchaudio>=2.5.0,<3" ] local-smart-turn-v3 = [ "transformers", "onnxruntime>=1.20.1,<2" ] -remote-smart-turn = [ ] +remote-smart-turn = [] silero = [ "onnxruntime>=1.20.1,<2" ] -simli = [ "simli-ai~=0.1.25" ] +simli = [ "simli-ai~=0.1.25"] soniox = [ "pipecat-ai[websockets-base]" ] soundfile = [ "soundfile~=0.13.1" ] speechmatics = [ "speechmatics-rt>=0.5.0" ] strands = [ "strands-agents>=1.9.1,<2" ] -tavus = [ ] -together = [ ] +tavus=[] +together = [] tracing = [ "opentelemetry-sdk>=1.33.0", "opentelemetry-api>=1.33.0", "opentelemetry-instrumentation>=0.54b0" ] ultravox = [ "transformers>=4.48.0", "vllm>=0.9.0" ] webrtc = [ "aiortc>=1.13.0,<2", "opencv-python>=4.11.0.86,<5" ] @@ -128,7 +128,6 @@ dev = [ "setuptools~=78.1.1", "setuptools_scm~=8.3.1", "python-dotenv>=1.0.1,<2.0.0", - "pipecat-ai[aic,daily,deepgram,local-smart-turn-v3,openai,runner,silero,webrtc]", ] docs = [ @@ -140,10 +139,10 @@ docs = [ ] [tool.setuptools.packages.find] -where = [ "src" ] +where = ["src"] [tool.setuptools.package-data] -"pipecat" = [ "py.typed" ] +"pipecat" = ["py.typed"] "pipecat.audio.dtmf" = [ "src/pipecat/audio/dtmf/dtmf-0.wav", "src/pipecat/audio/dtmf/dtmf-1.wav", @@ -158,13 +157,13 @@ where = [ "src" ] "src/pipecat/audio/dtmf/dtmf-pound.wav", "src/pipecat/audio/dtmf/dtmf-star.wav", ] -"pipecat.services.aws_nova_sonic" = [ "src/pipecat/services/aws_nova_sonic/ready.wav" ] -"pipecat.audio.turn.smart_turn.data" = [ "src/pipecat/audio/turn/smart_turn/data/smart-turn-v3.0.onnx" ] +"pipecat.services.aws_nova_sonic" = ["src/pipecat/services/aws_nova_sonic/ready.wav"] +"pipecat.audio.turn.smart_turn.data" = ["src/pipecat/audio/turn/smart_turn/data/smart-turn-v3.0.onnx"] [tool.pytest.ini_options] addopts = "--verbose" -testpaths = [ "tests" ] -pythonpath = [ "src" ] +testpaths = ["tests"] +pythonpath = ["src"] asyncio_default_fixture_loop_scope = "function" filterwarnings = [ "ignore:'audioop' is deprecated:DeprecationWarning", @@ -175,7 +174,7 @@ local_scheme = "no-local-version" fallback_version = "0.0.0-dev" [tool.ruff] -exclude = [ ".git", "*_pb2.py" ] +exclude = [".git", "*_pb2.py"] line-length = 100 [tool.ruff.lint] @@ -184,28 +183,25 @@ select = [ "I", # Import rules ] ignore = [ - "D105", # Missing docstring in magic methods (__str__, __repr__, etc.) + "D105", # Missing docstring in magic methods (__str__, __repr__, etc.) ] [tool.ruff.lint.per-file-ignores] # Skip docstring checks for non-source code -"examples/**/*.py" = [ "D" ] -"tests/**/*.py" = [ "D" ] -"scripts/**/*.py" = [ "D" ] -"docs/**/*.py" = [ "D" ] +"examples/**/*.py" = ["D"] +"tests/**/*.py" = ["D"] +"scripts/**/*.py" = ["D"] +"docs/**/*.py" = ["D"] # Skip D104 (missing docstring in public package) for __init__.py files -"**/__init__.py" = [ "D104" ] +"**/__init__.py" = ["D104"] # Skip specific rules for generated protobuf files -"**/*_pb2.py" = [ "D" ] -"src/pipecat/services/__init__.py" = [ "D" ] +"**/*_pb2.py" = ["D"] +"src/pipecat/services/__init__.py" = ["D"] [tool.ruff.lint.pydocstyle] convention = "google" [tool.coverage.run] command_line = "--module pytest" -source = [ "src" ] -omit = [ "*/tests/*" ] - -[tool.uv.sources] -pipecat-ai = { workspace = true } +source = ["src"] +omit = ["*/tests/*"] diff --git a/uv.lock b/uv.lock index 7fb531dea..0dc6c74f8 100644 --- a/uv.lock +++ b/uv.lock @@ -36,12 +36,12 @@ wheels = [ [[package]] name = "aic-sdk" -version = "1.1.0" +version = "1.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/83/bf38b95d98c67b8ebc574fb4a4f23c07a3740b51992d7522976173d30b98/aic_sdk-1.1.0.tar.gz", hash = "sha256:04e08df695581c8cb4db8acca20e73815e9f449e7bd08e0162fd55518c727963", size = 34954, upload-time = "2025-11-11T20:45:24.25Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/90/b02e853e863c303f8456c689b42ac24ad403b781adc9642d0a91ed4bed7e/aic_sdk-1.0.2.tar.gz", hash = "sha256:239097dd3aaa8a8a0fd7542b75d2510cb34144caec796370639b7c636acbc56e", size = 32059, upload-time = "2025-08-24T09:20:03.9Z" } [[package]] name = "aioboto3" @@ -4624,7 +4624,6 @@ dev = [ { name = "coverage" }, { name = "grpcio-tools" }, { name = "pip-tools" }, - { name = "pipecat-ai", extra = ["aic", "daily", "deepgram", "local-smart-turn-v3", "openai", "runner", "silero", "webrtc"] }, { name = "pre-commit" }, { name = "pyright" }, { name = "pytest" }, @@ -4648,7 +4647,7 @@ docs = [ [package.metadata] requires-dist = [ { name = "accelerate", marker = "extra == 'moondream'", specifier = "~=1.10.0" }, - { name = "aic-sdk", marker = "extra == 'aic'", specifier = "~=1.1.0" }, + { name = "aic-sdk", marker = "extra == 'aic'", specifier = "~=1.0.1" }, { name = "aioboto3", marker = "extra == 'aws'", specifier = "~=15.0.0" }, { name = "aiofiles", specifier = ">=24.1.0,<25" }, { name = "aiohttp", specifier = ">=3.11.12,<4" }, @@ -4698,23 +4697,23 @@ requires-dist = [ { name = "opentelemetry-sdk", marker = "extra == 'tracing'", specifier = ">=1.33.0" }, { name = "ormsgpack", marker = "extra == 'fish'", specifier = "~=1.7.0" }, { name = "pillow", specifier = ">=11.1.0,<12" }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'assemblyai'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'asyncai'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'aws'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'cartesia'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'elevenlabs'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'fish'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'gladia'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'google'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'heygen'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'lmnt'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'neuphonic'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'openai'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'playht'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'rime'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'sarvam'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'soniox'", editable = "." }, - { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'websocket'", editable = "." }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'assemblyai'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'asyncai'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'aws'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'cartesia'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'elevenlabs'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'fish'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'gladia'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'google'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'heygen'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'lmnt'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'neuphonic'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'openai'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'playht'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'rime'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'sarvam'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'soniox'" }, + { name = "pipecat-ai", extras = ["websockets-base"], marker = "extra == 'websocket'" }, { name = "pipecat-ai-krisp", marker = "extra == 'krisp'", specifier = "~=0.4.0" }, { name = "pipecat-ai-small-webrtc-prebuilt", marker = "extra == 'runner'", specifier = ">=1.0.0" }, { name = "protobuf", specifier = "~=5.29.3" }, @@ -4754,7 +4753,6 @@ dev = [ { name = "coverage", specifier = "~=7.9.1" }, { name = "grpcio-tools", specifier = "~=1.67.1" }, { name = "pip-tools", specifier = "~=7.4.1" }, - { name = "pipecat-ai", extras = ["aic", "daily", "deepgram", "local-smart-turn-v3", "openai", "runner", "silero", "webrtc"], editable = "." }, { name = "pre-commit", specifier = "~=4.2.0" }, { name = "pyright", specifier = ">=1.1.404,<1.2" }, { name = "pytest", specifier = "~=8.4.1" },