name: "Python SDK Tests" env: PYTHONUTF8: 1 on: push: branches: - main pull_request: types: [opened, synchronize, reopened, ready_for_review] paths: - 'python/**' - 'test/**' - 'nodejs/package.json' - '.github/workflows/python-sdk-tests.yml' - '!**/*.md' - '!**/LICENSE*' - '!**/.gitignore' - '!**/.editorconfig' - '!**/*.png' - '!**/*.jpg' - '!**/*.jpeg' - '!**/*.gif' - '!**/*.svg' workflow_dispatch: merge_group: permissions: contents: read jobs: test: name: "Python SDK Tests" 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"] 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: Run Python SDK tests env: COPILOT_HMAC_KEY: ${{ secrets.COPILOT_DEVELOPER_CLI_INTEGRATION_HMAC_KEY }} run: uv run pytest -v -s