This change solves an issue faced by users who aren't intending to use OpenAI getting scary error messages saying that they need the `openai` optional dependency "in order to use OpenAI", along with an instruction to set the OPENAI_API_KEY environment variable. Note that with this change we could theoretically remove from pyproject.toml a number of defined optional dependencies that list only the `openai` package as a dependency (like `deepseek`, for example), but I didn't want to "break the API" in terms of how users install/consume pipecat and its set of built-in services. Finally, I removed the `python-deepcompare` dependency from the `openai` optional dependency, since it appears to me like it was added by mistake (my guess is it was used for debugging during development and then never removed).
122 lines
3.7 KiB
TOML
122 lines
3.7 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=64", "setuptools_scm>=8"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "pipecat-ai"
|
|
dynamic = ["version"]
|
|
description = "An open source framework for voice (and multimodal) assistants"
|
|
license = { text = "BSD 2-Clause License" }
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
keywords = ["webrtc", "audio", "video", "ai"]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: BSD License",
|
|
"Topic :: Communications :: Conferencing",
|
|
"Topic :: Multimedia :: Sound/Audio",
|
|
"Topic :: Multimedia :: Video",
|
|
"Topic :: Scientific/Engineering :: Artificial Intelligence"
|
|
]
|
|
dependencies = [
|
|
"aiohttp~=3.11.11",
|
|
"audioop-lts~=0.2.1; python_version>='3.13'",
|
|
# We need an older version of `httpx` that doesn't remove the deprecated
|
|
# `proxies` argument. This is necessary for Azure and Anthropic clients.
|
|
"httpx~=0.27.2",
|
|
"loguru~=0.7.3",
|
|
"Markdown~=3.7",
|
|
"numpy~=1.26.4",
|
|
"Pillow~=11.1.0",
|
|
"protobuf~=5.29.3",
|
|
"pydantic~=2.10.5",
|
|
"pyloudnorm~=0.1.1",
|
|
"resampy~=0.4.3",
|
|
"soxr~=0.5.0",
|
|
"openai~=1.59.6"
|
|
]
|
|
|
|
[project.urls]
|
|
Source = "https://github.com/pipecat-ai/pipecat"
|
|
Website = "https://pipecat.ai"
|
|
|
|
[project.optional-dependencies]
|
|
anthropic = [ "anthropic~=0.45.2" ]
|
|
assemblyai = [ "assemblyai~=0.36.0" ]
|
|
aws = [ "boto3~=1.35.99" ]
|
|
azure = [ "azure-cognitiveservices-speech~=1.42.0", "openai~=1.59.6" ]
|
|
canonical = [ "aiofiles~=24.1.0" ]
|
|
cartesia = [ "cartesia~=1.3.1", "websockets~=13.1" ]
|
|
cerebras = [ "openai~=1.59.6" ]
|
|
deepseek = [ "openai~=1.59.6" ]
|
|
daily = [ "daily-python~=0.14.2" ]
|
|
deepgram = [ "deepgram-sdk~=3.8.0" ]
|
|
elevenlabs = [ "websockets~=13.1" ]
|
|
fal = [ "fal-client~=0.5.6" ]
|
|
fish = [ "ormsgpack~=1.7.0", "websockets~=13.1" ]
|
|
gladia = [ "websockets~=13.1" ]
|
|
google = [ "google-cloud-speech~=2.31.0", "google-cloud-texttospeech~=2.25.0", "google-genai~=1.2.0", "google-generativeai~=0.8.4" ]
|
|
grok = [ "openai~=1.59.6" ]
|
|
groq = [ "openai~=1.59.6" ]
|
|
gstreamer = [ "pygobject~=3.50.0" ]
|
|
fireworks = [ "openai~=1.59.6" ]
|
|
krisp = [ "pipecat-ai-krisp~=0.3.0" ]
|
|
koala = [ "pvkoala~=2.0.3" ]
|
|
langchain = [ "langchain~=0.3.14", "langchain-community~=0.3.14", "langchain-openai~=0.3.0" ]
|
|
livekit = [ "livekit~=0.19.1", "livekit-api~=0.8.1", "tenacity~=9.0.0" ]
|
|
lmnt = [ "websockets~=13.1" ]
|
|
local = [ "pyaudio~=0.2.14" ]
|
|
moondream = [ "einops~=0.8.0", "timm~=1.0.13", "transformers~=4.48.0" ]
|
|
nim = [ "openai~=1.59.6" ]
|
|
noisereduce = [ "noisereduce~=3.0.3" ]
|
|
openai = [ "openai~=1.59.6", "websockets~=13.1" ]
|
|
openpipe = [ "openpipe~=4.45.0" ]
|
|
perplexity = [ "openai~=1.59.6" ]
|
|
playht = [ "pyht~=0.1.6", "websockets~=13.1" ]
|
|
rime = [ "websockets~=13.1" ]
|
|
riva = [ "nvidia-riva-client~=2.18.0" ]
|
|
sentry = [ "sentry-sdk~=2.20.0" ]
|
|
silero = [ "onnxruntime~=1.20.1" ]
|
|
simli = [ "simli-ai~=0.1.10"]
|
|
soundfile = [ "soundfile~=0.13.0" ]
|
|
together = [ "openai~=1.59.6" ]
|
|
websocket = [ "websockets~=13.1", "fastapi~=0.115.6" ]
|
|
whisper = [ "faster-whisper~=1.1.1" ]
|
|
openrouter = [ "openai~=1.59.6" ]
|
|
|
|
[tool.setuptools.packages.find]
|
|
# All the following settings are optional:
|
|
where = ["src"]
|
|
|
|
[tool.pytest.ini_options]
|
|
addopts = "--verbose"
|
|
testpaths = ["tests"]
|
|
pythonpath = ["src"]
|
|
asyncio_default_fixture_loop_scope = "function"
|
|
filterwarnings = [
|
|
"ignore:'audioop' is deprecated:DeprecationWarning",
|
|
]
|
|
|
|
[tool.setuptools_scm]
|
|
local_scheme = "no-local-version"
|
|
fallback_version = "0.0.0-dev"
|
|
|
|
[tool.ruff]
|
|
exclude = [".git", "*_pb2.py"]
|
|
line-length = 100
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"D", # Docstring rules
|
|
"I", # Import rules
|
|
]
|
|
|
|
[tool.ruff.lint.pydocstyle]
|
|
convention = "google"
|
|
|
|
[tool.coverage.run]
|
|
command_line = "--module pytest"
|
|
source = ["src"]
|
|
omit = ["*/tests/*"]
|