Skip to content

perf(voice): start CO conversation lookup on setup, not first prompt #286

perf(voice): start CO conversation lookup on setup, not first prompt

perf(voice): start CO conversation lookup on setup, not first prompt #286

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
permissions:
id-token: write
contents: read
jobs:
lockfile-hygiene:
name: Lockfile Hygiene
runs-on: ${{ github.event.pull_request.head.repo.fork && 'ubuntu-latest' || 'ubuntu-x64' }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Scan uv.lock + clean-room public install
uses: twilio/sdk-actions/uv-lockfile-hygiene@26f95a54e57993c1bf3b26bec2905f395814c23a # v1.0.0
lint:
name: Linting
runs-on: ${{ github.event.pull_request.head.repo.fork && 'ubuntu-latest' || 'ubuntu-x64' }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Authenticate with Artifactory
if: ${{ !github.event.pull_request.head.repo.fork }}
uses: twilio/sdk-actions/artifactory-oidc@26f95a54e57993c1bf3b26bec2905f395814c23a # v1.0.0
with:
ecosystem: python
- name: Install uv
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5
with:
version: "0.9.26"
- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: "3.10"
- name: Install dependencies
run: |
uv venv
. .venv/bin/activate
uv sync --frozen --all-extras --all-groups
- name: Run ruff check
run: |
. .venv/bin/activate
echo "Checking Python files in repository:"
find . -name "*.py" -not -path "./.venv/*" -not -path "./.*" -type f | sort | head -30
echo ""
echo "Total Python files to check:"
find . -name "*.py" -not -path "./.venv/*" -not -path "./.*" -type f | wc -l
echo ""
uv run ruff check .
- name: Run ruff format check
run: |
. .venv/bin/activate
echo "Checking formatting for Python files in repository:"
find . -name "*.py" -not -path "./.venv/*" -not -path "./.*" -type f | wc -l
echo "files"
echo ""
uv run ruff format --check .
type-check:
name: Type Check
runs-on: ${{ github.event.pull_request.head.repo.fork && 'ubuntu-latest' || 'ubuntu-x64' }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Authenticate with Artifactory
if: ${{ !github.event.pull_request.head.repo.fork }}
uses: twilio/sdk-actions/artifactory-oidc@26f95a54e57993c1bf3b26bec2905f395814c23a # v1.0.0
with:
ecosystem: python
- name: Install uv
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5
with:
version: "0.9.26"
- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: "3.10"
- name: Install dependencies
run: |
uv venv
. .venv/bin/activate
uv sync --frozen --all-extras --all-groups
- name: Run mypy
run: |
. .venv/bin/activate
echo "Type checking directories: src/tac getting_started"
echo ""
echo "Python files in src/tac:"
find src/tac -name "*.py" -type f | wc -l
echo ""
echo "Python files in getting_started:"
find getting_started -name "*.py" -type f | wc -l
echo ""
MYPYPATH=src uv run mypy src/tac getting_started
test:
name: Test - Python ${{ matrix.python-version }}
runs-on: ${{ github.event.pull_request.head.repo.fork && 'ubuntu-latest' || 'ubuntu-x64' }}
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Authenticate with Artifactory
if: ${{ !github.event.pull_request.head.repo.fork }}
uses: twilio/sdk-actions/artifactory-oidc@26f95a54e57993c1bf3b26bec2905f395814c23a # v1.0.0
with:
ecosystem: python
- name: Install uv
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5
with:
version: "0.9.26"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
uv venv
. .venv/bin/activate
uv sync --frozen --all-extras --all-groups
- name: Run tests
run: |
. .venv/bin/activate
uv run pytest
build:
name: Build Package
runs-on: ${{ github.event.pull_request.head.repo.fork && 'ubuntu-latest' || 'ubuntu-x64' }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- name: Authenticate with Artifactory
if: ${{ !github.event.pull_request.head.repo.fork }}
uses: twilio/sdk-actions/artifactory-oidc@26f95a54e57993c1bf3b26bec2905f395814c23a # v1.0.0
with:
ecosystem: python
- name: Install uv
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5
with:
version: "0.9.26"
- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: "3.10"
- name: Build package
run: |
uv build
- name: Check package metadata
run: |
uv venv
. .venv/bin/activate
pip install -r .github/ci-requirements.txt
twine check dist/*
- name: Test package installation
run: |
python -m venv test-env
. test-env/bin/activate
pip install dist/*.whl
python -c "import tac; print(f'Successfully imported tac version {tac.__version__}')"
all-checks:
name: All Checks Passed
needs: [lockfile-hygiene, lint, type-check, test, build]
runs-on: ${{ github.event.pull_request.head.repo.fork && 'ubuntu-latest' || 'ubuntu-x64' }}
if: always()
steps:
- name: Check all job statuses
run: |
if [ "${{ needs['lockfile-hygiene'].result }}" != "success" ] || \
[ "${{ needs.lint.result }}" != "success" ] || \
[ "${{ needs['type-check'].result }}" != "success" ] || \
[ "${{ needs.test.result }}" != "success" ] || \
[ "${{ needs.build.result }}" != "success" ]; then
echo "One or more checks failed"
exit 1
fi