name: Python Tests on: push: branches: [ main, develop ] paths: - 'src/**' - 'tests/python/**' - 'pyproject.toml' - '.github/workflows/python-tests.yml' pull_request: branches: [ main, develop ] paths: - 'src/**' - 'tests/python/**' - 'pyproject.toml' - '.github/workflows/python-tests.yml' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: runs-on: ubuntu-latest strategy: matrix: python-version: ['3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Cache pip dependencies uses: actions/cache@v4 with: path: ~/.cache/pip key: pip-test-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }} restore-keys: | pip-test-${{ runner.os }}-${{ matrix.python-version }}- - name: Install package with dev dependencies run: | python -m pip install --upgrade pip pip install -e ".[dev]" - name: Run tests with pytest run: | pytest tests/python/ -v --tb=short --cov=scitex_writer --cov-report=term-missing --cov-fail-under=40 - name: Upload coverage if: matrix.python-version == '3.11' uses: actions/upload-artifact@v4 with: name: coverage-report path: .coverage retention-days: 7