rust-bert 0.23.0

Ready-to-use NLP pipelines and language models
Documentation
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

name: Build

jobs:
  build:
    name: Build Linux
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --features download-libtorch

  build-no-defaults:
    name: Build no defaults
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --no-default-features --features download-libtorch

  build-windows:
    name: Build Windows
    runs-on: windows-2019
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --features download-libtorch

  build-mac-os:
    name: Build macOS
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --features download-libtorch

  test-batch-0:
    name: Integration tests (batch 0)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --package rust-bert
            --test albert
            --test bart
            --test bert
            --test distilbert
            --test distilgpt2
            --test electra
            --test gpt2
            --test marian
            --test fnet
            --test deberta
            --test deberta_v2
            --features download-libtorch

  test-batch-1:
    name: Integration tests (batch 1)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --package rust-bert
            --test mobilebert
            --test openai_gpt
            --test prophetnet
            --test reformer
            --test roberta
            --test t5
            --test xlnet
            --test longformer
            --test pegasus
            --test gpt_neo
            --features download-libtorch

  test-batch-2:
    name: Integration tests (batch 2)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --package rust-bert
            --test sentence_embeddings
            --test longt5
            --test gpt_j
            --test nllb
            --features download-libtorch

  test-opt-features:
    name: Integration tests (Optional features)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --package rust-bert
            --features onnx
            --features hf-tokenizers
            --test onnx
            --test hf_tokenizers
            --features download-libtorch

  convert-model:
    name: Model conversion test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions/setup-python@v2
        with:
          python-version: '3.10'
      - run: |

          pip install -r ./utils/requirements.txt --progress-bar off
          python ./utils/download-dependencies_distilbert.py

  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - run: rustup component add rustfmt
      - uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - run: rustup component add clippy
      - uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: --all-targets --all-features -- -D warnings -A clippy::assign_op_pattern -A clippy::upper-case-acronyms