yomitoki 0.1.1

Fast, explainable, route-free molecular synthesizability diagnostics.
Documentation
name: CI

on:
  push:
    branches: [main]
  pull_request:

env:
  CARGO_TERM_COLOR: always

jobs:
  lint:
    name: fmt + clippy + doc
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
      - run: cargo fmt --check
      - run: cargo clippy --all-targets --all-features -- -D warnings
      - run: cargo doc --no-deps --all-features

  test:
    name: test (${{ matrix.os }})
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo test --all-features

  msrv:
    name: MSRV (1.88)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@1.88
      - run: cargo check --all-features

  deny:
    name: cargo-deny
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: EmbarkStudios/cargo-deny-action@v2

  benchmark-smoke:
    name: benchmark harness smoke test
    runs-on: ubuntu-latest
    # Statistics-only: synthetic fixtures, no RDKit, no downloaded
    # dataset, no network access. Verifies the metrics implementation
    # itself (ROC-AUC/PR-AUC/MCC/bootstrap CI/risk-coverage/AURC/
    # calibration) stays correct -- not a full benchmark run, which needs
    # real (large, license-encumbered) data this CI job deliberately
    # never touches. See benchmarks/synthesizability/README.md.
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.13"
      - run: pip install numpy==1.26.4 scipy==1.17.1 scikit-learn==1.8.0 pytest==9.1.1
      - run: pytest test_metrics.py -v
        working-directory: benchmarks/synthesizability/scripts