name: Publish Python SDKs permissions: contents: read id-token: write attestations: write artifact-metadata: write on: push: tags: - "python/sandbox/v*" - "python/code-interpreter/v*" - "python/mcp/sandbox/v*" jobs: release-preflight: uses: ./.github/workflows/release-preflight.yml publish-sandbox: needs: release-preflight if: startsWith(github.ref, 'refs/tags/python/sandbox/v') runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: '3.10' - name: Install uv uses: astral-sh/setup-uv@v7 with: version: "latest" - name: Generate API working-directory: sdks/sandbox/python run: | uv run python scripts/generate_api.py - name: Build package working-directory: sdks/sandbox/python run: | uv build - name: Attest built package if: startsWith(github.ref, 'refs/tags/python/sandbox/v') uses: actions/attest@v4 with: subject-path: sdks/sandbox/python/dist/* - name: Publish to PyPI working-directory: sdks/sandbox/python env: UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }} run: | uv publish publish-code-interpreter: needs: release-preflight if: startsWith(github.ref, 'refs/tags/python/code-interpreter/v') runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: '3.10' - name: Install uv uses: astral-sh/setup-uv@v7 with: version: "latest" - name: Build package working-directory: sdks/code-interpreter/python run: | uv build - name: Attest built package if: startsWith(github.ref, 'refs/tags/python/code-interpreter/v') uses: actions/attest@v4 with: subject-path: sdks/code-interpreter/python/dist/* - name: Publish to PyPI working-directory: sdks/code-interpreter/python env: UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }} run: | uv publish publish-mcp-sandbox: needs: release-preflight if: startsWith(github.ref, 'refs/tags/python/mcp/sandbox/v') runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: "3.10" - name: Install uv uses: astral-sh/setup-uv@v7 with: version: "latest" - name: Build package working-directory: sdks/mcp/sandbox/python run: | uv build - name: Attest built package if: startsWith(github.ref, 'refs/tags/python/mcp/sandbox/v') uses: actions/attest@v4 with: subject-path: sdks/mcp/sandbox/python/dist/* - name: Publish to PyPI working-directory: sdks/mcp/sandbox/python env: UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }} run: | uv publish