name: Upload component to Python Package Index on: workflow_dispatch: inputs: release: type: boolean default: false required: false description: "Release? If false, publish to test.pypi.org, if true, publish to pypi.org" permissions: contents: read jobs: linux: runs-on: ubuntu-latest strategy: matrix: target: [x86_64, x86, aarch64, armv7, s390x, ppc64le] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: '3.10' - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} args: --release --out dist --find-interpreter sccache: 'true' manylinux: auto working-directory: bindings/python - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-${{ runner.os }}-${{ matrix.target }} path: bindings/python/dist windows: runs-on: windows-latest strategy: matrix: target: [x64, x86] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: '3.10' architecture: ${{ matrix.target }} - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} args: --release --out dist --find-interpreter sccache: 'true' working-directory: bindings/python - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-${{ runner.os }}-${{ matrix.target }} path: bindings/python/dist macos: runs-on: macos-latest strategy: matrix: target: [x86_64, aarch64] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: '3.10' - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} args: --release --out dist --find-interpreter sccache: 'true' working-directory: bindings/python - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-${{ runner.os }}-${{ matrix.target }} path: bindings/python/dist sdist: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist working-directory: bindings/python - name: Upload sdist uses: actions/upload-artifact@v4 with: name: wheels-${{ runner.os }}-sdist path: bindings/python/dist publish-to-test-pypi: if: ${{ github.event.inputs.release != 'true' }} name: >- Publish Python 🐍 distribution 📦 to Test PyPI runs-on: ubuntu-latest needs: [linux, windows, macos, sdist] steps: - uses: actions/download-artifact@v4 with: path: bindings/python/ - name: Publish distribution 📦 to Test PyPI uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TEST_API_TOKEN }} MATURIN_REPOSITORY_URL: "https://test.pypi.org/legacy/" with: command: upload args: --skip-existing * working-directory: bindings/python publish-pypi: if: ${{ github.event.inputs.release == 'true' }} name: >- Publish Python 🐍 distribution 📦 to PyPI runs-on: ubuntu-latest needs: [linux, windows, macos, sdist] steps: - uses: actions/download-artifact@v4 with: path: bindings/python/ - name: Publish distribution 📦 to PyPI uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} MATURIN_REPOSITORY_URL: "https://upload.pypi.org/legacy/" with: command: upload args: --skip-existing * working-directory: bindings/python