name: "Python SDK Tests" env: PYTHONUTF8: 1 on: push: branches: - main workflow_dispatch: workflow_call: permissions: contents: read jobs: test: name: "Python SDK Tests (${{ matrix.os }}, ${{ matrix.transport }})" if: github.event.repository.fork == false env: POWERSHELL_UPDATECHECK: Off strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] # Test the oldest supported Python version to make sure compatibility is maintained. python-version: ["3.11"] transport: ["default", "inprocess"] runs-on: ${{ matrix.os }} defaults: run: shell: bash working-directory: ./python steps: - uses: actions/checkout@v6.0.2 - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - uses: actions/setup-node@v6 with: node-version: "22" cache: "npm" cache-dependency-path: "./nodejs/package-lock.json" - name: Set up uv uses: astral-sh/setup-uv@v7 with: enable-cache: true - name: Install Python dev dependencies run: uv sync --all-extras --dev - name: Install Node.js dependencies (for CLI in tests) working-directory: ./nodejs run: npm ci --ignore-scripts - name: Run ruff format check run: uv run ruff format --check . - name: Run ruff lint run: uv run ruff check - name: Run ty type checking run: uv run ty check copilot - name: Install test harness dependencies working-directory: ./test/harness run: npm ci --ignore-scripts - name: Warm up PowerShell if: runner.os == 'Windows' run: pwsh.exe -Command "Write-Host 'PowerShell ready'" - name: Select inprocess transport if: matrix.transport == 'inprocess' run: | echo "COPILOT_SDK_DEFAULT_CONNECTION=inprocess" >> "$GITHUB_ENV" - name: Run Python SDK tests env: COPILOT_HMAC_KEY: ${{ secrets.COPILOT_DEVELOPER_CLI_INTEGRATION_HMAC_KEY }} # Keep each module's shared E2E client and proxy on one process while # running independent modules concurrently in isolated workers. run: uv run pytest -v -s -n 2 --dist=loadfile