optirustic 1.2.3

This crate moved to https://github.com/s-simoncelli/nsga-rs
# This file is autogenerated by maturin v1.7.0
# To update, run
#
#    maturin generate-ci github
#
name: Python

on:
  push:
    branches:
      - main
      - master
    tags:
      - '*'
  pull_request:
  workflow_dispatch:

permissions:
  contents: read

jobs:
  linux-build-and-test:
    name: Linux (build and test)
    runs-on: ${{ matrix.platform.runner }}
    strategy:
      matrix:
        platform:
          - runner: ubuntu-latest
            target: x86_64
    #          - runner: ubuntu-latest
    #            target: aarch64
    steps:
      - name: Install Clang
        run: sudo apt update && sudo apt install --yes clang libclang-dev build-essential clang-18
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - uses: dtolnay/rust-toolchain@stable
      - name: Build wheels
        uses: PyO3/maturin-action@v1
        with:
          target: ${{ matrix.platform.target }}
          args: --release --out dist --find-interpreter --manifest-path optirustic-py/Cargo.toml
          # run w/o container to prevent issue with missing clang lib
          container: off
          sccache: 'true'
          manylinux: auto
      - name: Check Python syntax
        run: |

          cd optirustic-py
          pip install '.[dev]'
          ruff check
          ruff format
      # Run tests only in linux env
      - name: Test Python API
        run: |

          pip install optirustic --find-links dist --force-reinstall
          python -m pytest optirustic-py/tests/test_api.py
      - name: Upload wheels
        uses: actions/upload-artifact@v4
        with:
          name: wheels-linux-${{ matrix.platform.target }}
          path: dist

  # TODO MSVC is broken with binding files
  #  windows:
  #    runs-on: ${{ matrix.platform.runner }}
  #    strategy:
  #      matrix:
  #        platform:
  #          - runner: windows-latest
  #            target: x64
  #          - runner: windows-latest
  #            target: x86
  #    steps:
  #      - uses: actions/checkout@v4
  #      - uses: actions/setup-python@v5
  #        with:
  #          python-version: 3.x
  #          architecture: ${{ matrix.platform.target }}
  #      - name: Build wheels
  #        uses: PyO3/maturin-action@v1
  #        with:
  #          target: ${{ matrix.platform.target }}
  #          args: --release --out dist --find-interpreter --manifest-path optirustic-py/Cargo.toml
  #          sccache: 'true'
  #      - name: Upload wheels
  #        uses: actions/upload-artifact@v4
  #        with:
  #          name: wheels-windows-${{ matrix.platform.target }}
  #          path: dist

  macos-build:
    name: Mac OS (build only)
    runs-on: ${{ matrix.platform.runner }}
    strategy:
      matrix:
        platform:
          - runner: macos-12
            target: x86_64
          - runner: macos-14
            target: aarch64
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: 3.x
      - name: Build wheels
        uses: PyO3/maturin-action@v1
        with:
          target: ${{ matrix.platform.target }}
          args: --release --out dist --find-interpreter --manifest-path optirustic-py/Cargo.toml
          sccache: 'true'
      - name: Upload wheels
        uses: actions/upload-artifact@v4
        with:
          name: wheels-macos-${{ matrix.platform.target }}
          path: dist

  release:
    name: Wheel release
    runs-on: ubuntu-latest
    if: "startsWith(github.ref, 'refs/tags/')"
    needs: [ linux-build-and-test, macos-build ]
    #    needs: [ linux, windows, macos ]
    steps:
      - uses: actions/download-artifact@v4
      - name: Publish to PyPI
        uses: PyO3/maturin-action@v1
        env:
          MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
        with:
          command: upload
          args: --non-interactive --skip-existing wheels-*/*