diff --git a/.github/workflows/python-compatibility.yaml b/.github/workflows/python-compatibility.yaml new file mode 100644 index 000000000..243e2c1fa --- /dev/null +++ b/.github/workflows/python-compatibility.yaml @@ -0,0 +1,61 @@ +name: Python Compatibility Test + +on: + push: + branches: [main, develop] + paths: ['pyproject.toml'] + pull_request: + branches: [main, develop] + paths: ['pyproject.toml'] + +jobs: + test-compatibility: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ['3.10.18', '3.11.13', '3.12.11', '3.13.5'] + + name: Python ${{ matrix.python-version }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install system dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + portaudio19-dev \ + libcairo2-dev \ + libgirepository1.0-dev \ + pkg-config + + - name: Install uv + uses: astral-sh/setup-uv@v4 + with: + version: 'latest' + + - name: Set up Python ${{ matrix.python-version }} + run: | + uv python install ${{ matrix.python-version }} + uv python pin ${{ matrix.python-version }} + + - name: Test uv sync with all extras (Python < 3.13) + if: "!startsWith(matrix.python-version, '3.13.')" + run: | + uv sync --group dev --all-extras --no-extra krisp + + - name: Test uv sync without PyTorch extras (Python 3.13+) + if: startsWith(matrix.python-version, '3.13.') + run: | + uv sync --group dev --all-extras \ + --no-extra krisp \ + --no-extra ultravox \ + --no-extra local-smart-turn \ + --no-extra moondream \ + --no-extra mlx-whisper + + - name: Verify installation + run: | + uv run python --version + uv run python -c "import pipecat; print('✅ Pipecat imports successfully')" diff --git a/pyproject.toml b/pyproject.toml index 5cf1432d0..3759d7896 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,8 +34,6 @@ dependencies = [ "resampy~=0.4.3", "soxr~=0.5.0", "openai>=1.74.0,<2", - # Explicit dependency pins for Python 3.11+ compatibility - "numba>=0.60.0,<1", ] [project.urls] diff --git a/uv.lock b/uv.lock index 212d43b0c..a83306cc1 100644 --- a/uv.lock +++ b/uv.lock @@ -4029,7 +4029,6 @@ dependencies = [ { name = "loguru" }, { name = "markdown" }, { name = "nltk" }, - { name = "numba" }, { name = "numpy" }, { name = "openai" }, { name = "pillow" }, @@ -4270,7 +4269,6 @@ requires-dist = [ { name = "mlx-whisper", marker = "extra == 'mlx-whisper'", specifier = "~=0.4.2" }, { name = "nltk", specifier = ">=3.9.1,<4" }, { name = "noisereduce", marker = "extra == 'noisereduce'", specifier = "~=3.0.3" }, - { name = "numba", specifier = ">=0.60.0,<1" }, { name = "numpy", specifier = ">=1.26.4,<3" }, { name = "nvidia-riva-client", marker = "extra == 'riva'", specifier = "~=2.21.1" }, { name = "onnxruntime", marker = "extra == 'silero'", specifier = "~=1.20.1" }, @@ -4337,7 +4335,7 @@ dev = [ { name = "pytest", specifier = "~=8.4.1" }, { name = "pytest-aiohttp", specifier = "==1.1.0" }, { name = "pytest-asyncio", specifier = "~=1.0.0" }, - { name = "python-dotenv", specifier = "~=1.1.1" }, + { name = "python-dotenv", specifier = ">=1.0.1,<2.0.0" }, { name = "ruff", specifier = "~=0.12.1" }, { name = "setuptools", specifier = "~=78.1.1" }, { name = "setuptools-scm", specifier = "~=8.3.1" },