rustyml 0.17.0

Machine learning models, neural networks, metrics, and data utilities in Rust
Documentation
name: ci

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

# Cancel superseded runs on the same ref to save CI minutes
concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

env:
  CARGO_TERM_COLOR: always

jobs:
  fmt:
    name: cargo fmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - name: Check formatting
        run: cargo fmt --all -- --check

  clippy:
    name: cargo clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - name: Cache cargo artifacts
        uses: Swatinem/rust-cache@v2
      - name: Run clippy
        run: cargo clippy --all-features --all-targets -- -D warnings

  test:
    name: cargo test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
      - name: Cache cargo artifacts
        uses: Swatinem/rust-cache@v2
      - name: Run tests
        run: cargo test --all-features

  doc:
    name: cargo doc
    runs-on: ubuntu-latest
    env:
      # Fail the build on any rustdoc warning
      RUSTDOCFLAGS: -D warnings
    steps:
      - uses: actions/checkout@v4
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
      - name: Cache cargo artifacts
        uses: Swatinem/rust-cache@v2
      - name: Build documentation
        run: cargo doc --all-features --no-deps

  guide-examples:
    name: Guide examples
    runs-on: ubuntu-latest
    env:
      CARGO_TARGET_DIR: target/guide-check
    steps:
      - uses: actions/checkout@v4
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable
      - name: Install Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - name: Cache cargo artifacts
        uses: Swatinem/rust-cache@v2
        with:
          workspaces: ". -> target/guide-check"
      - name: Test output comparison
        run: python3 -m unittest discover -s guide -p 'test_check_examples.py'
      - name: Check guide examples
        run: python3 guide/check_examples.py