name: Tests on: [push, pull_request] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python 3.12 uses: actions/setup-python@v4 with: python-version: 3.12 - name: Configure pip caching uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt')}}-${{ hashFiles('**/requirements-dev.txt') }} - name: Install Python dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install -r requirements-dev.txt - name: Validate against psf/black run: python -m black --check pdfplumber tests - name: Validate against isort run: python -m isort --profile black --check-only pdfplumber tests - name: Validate against flake8 run: python -m flake8 pdfplumber tests - name: Check type annotations via mypy run: python -m mypy --strict --implicit-reexport pdfplumber test: needs: lint runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install ghostscript run: sudo apt update && sudo apt install ghostscript - name: Configure pip caching uses: actions/cache@v3 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt')}}-${{ hashFiles('**/requirements-dev.txt') }} - name: Install Python dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install -r requirements-dev.txt - name: Run tests run: | python -m pytest --workers auto python -m coverage html - name: Upload code coverage uses: codecov/codecov-action@v3 if: matrix.python-version == 3.9 - name: Build package run: python setup.py build sdist