name: CI on: push: branches: - main pull_request: branches: - main jobs: lint: runs-on: ubuntu-latest timeout: 300 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' cache: 'pip' - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install ruff - name: Run linting run: python -m ruff check src/ tests/ test: runs-on: ubuntu-latest timeout: 600 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' cache: 'pip' - name: Install dependencies run: | python -m pip install --upgrade pip python -m pip install -r requirements.txt python -m pip install pytest pytest-cov - name: Run tests run: python -m pytest tests/ -xvs --tb=short - name: Upload coverage uses: actions/upload-artifact@v4 with: name: coverage-report path: .coverage build: runs-on: ubuntu-latest timeout: 300 needs: [lint, test] steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' cache: 'pip' - name: Install build dependencies run: | python -m pip install --upgrade pip python -m pip install -r requirements.txt python -m pip install build - name: Build package run: python -m build