name: Build on: push: branches: - main paths-ignore: - '**.md' tags: - '**' workflow_dispatch: ~ pull_request: paths-ignore: - '**.md' jobs: linux: runs-on: ubuntu-latest strategy: matrix: python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 with: submodules: true - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Build wheels uses: PyO3/maturin-action@v1 with: rust-toolchain: nightly command: build args: --release --out dist - name: Upload wheels uses: actions/upload-artifact@v3 with: name: wheels path: dist windows: runs-on: windows-latest strategy: matrix: python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 with: submodules: true - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - uses: dtolnay/rust-toolchain@nightly - name: Build wheels uses: PyO3/maturin-action@v1 with: command: build args: --release --out dist - name: Upload wheels uses: actions/upload-artifact@v3 with: name: wheels path: dist macos: runs-on: macos-latest strategy: matrix: python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 with: submodules: true - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - uses: dtolnay/rust-toolchain@nightly - name: Build wheels uses: PyO3/maturin-action@v1 with: command: build args: --release --out dist --sdist - name: Build wheels - universal2 uses: PyO3/maturin-action@v1 with: command: build args: --release --out dist - name: Upload wheels uses: actions/upload-artifact@v3 with: name: wheels path: dist linux-cross: runs-on: ubuntu-latest strategy: matrix: target: ['aarch64'] steps: - uses: actions/checkout@v4 with: submodules: true - name: Build wheels uses: PyO3/maturin-action@v1 with: rust-toolchain: nightly target: ${{ matrix.target }} manylinux: auto args: --release --out dist --interpreter 3.8 3.9 3.10 3.11 3.12 3.13 - name: Upload wheels uses: actions/upload-artifact@v3 with: name: wheels path: dist releases: runs-on: ubuntu-latest needs: [linux, windows , macos , linux-cross] if: startsWith(github.ref, 'refs/tags/') steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v3 with: python-version: 3.11 - name: Install Twine run: | pip install twine - name: get dist artifacts uses: actions/download-artifact@v3 with: name: wheels path: dist - name: upload to pypi run: twine upload dist/* env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}