name: check_code_quality

on:
  push:
    branches: [ main ]
    paths:
      - "optimum/**.py"
      - "tests/**.py"
      - "examples/**.py"

  pull_request:
    branches: [ main ]
    paths:
      - "optimum/**.py"
      - "tests/**.py"
      - "examples/**.py"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        python-version: [3.8]
        os: [ubuntu-20.04]

    runs-on: ${{ matrix.os }}
    steps:
    - uses: actions/checkout@v3
    - name: Setup Python ${{ matrix.python-version }}
      uses: actions/setup-python@v3
      with:
        python-version: ${{ matrix.python-version }}
    - name: Create and start a virtual environment
      run: |
        python -m venv code_quality_venv --clear
        source code_quality_venv/bin/activate
    - name: Install dependencies
      run: |
        source code_quality_venv/bin/activate
        pip install --upgrade pip
        pip install .[quality]
    - name: Check style with black
      run: |
        source code_quality_venv/bin/activate
        black --check examples tests optimum
    - name: Check style with ruff
      run: |
        source code_quality_venv/bin/activate
        ruff examples tests optimum
