name: bindings/python on: push: branches: [ "main" ] pull_request: branches: [ "main" ] env: PYTHON_VERSION: "3.10" jobs: build: strategy: matrix: host: - name: ubuntu-22.04 target: x86_64-unknown-linux-gnu - name: windows-latest target: x86_64-pc-windows-msvc runs-on: ${{ matrix.host.name }} steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} architecture: x64 - name: Build Python extension run: | cargo fetch cargo clippy --all-targets --no-deps -- -Dwarnings cargo build --release --target ${{ matrix.host.target }} --frozen working-directory: bindings/python - name: Build Wheel uses: PyO3/maturin-action@63b75c597b83e247fbf4fb7719801cc4220ae9f3 # v1.43.0 with: target: x86_64 args: --release --out dist --manifest-path bindings/python/Cargo.toml --offline --strip sccache: 'true' - name: Upload Wheel uses: actions/upload-artifact@v4 with: name: regorus-wheel-${{ matrix.host.name }} path: dist/regorus-*.whl test: strategy: matrix: python-version: ["3.10", "3.11", "3.12", "3.13"] host: - name: ubuntu-24.04 wheel: regorus-0.4.0-cp310-abi3-manylinux_2_34_x86_64.whl - name: ubuntu-22.04 wheel: regorus-0.4.0-cp310-abi3-manylinux_2_34_x86_64.whl - name: windows-latest wheel: regorus-0.4.0-cp310-abi3-win_amd64.whl needs: build runs-on: ${{ matrix.host.name }} steps: - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Download Regorus wheel uses: actions/download-artifact@v4 with: path: wheels pattern: regorus-wheel-* merge-multiple: true - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} architecture: x64 - name: Test Wheel run: | pip3 install ../../wheels/${{ matrix.host.wheel }} python3 test.py working-directory: bindings/python