| # GitHub Action to check our dictionary, this should only be used by the codespell project itself |
| # For general usage in your repo, see the example in codespell.yml |
| # https://github.com/codespell-project/codespell |
| # Concurrency cancels an action on a given PR once a new commit is pushed |
| name: Pytest |
| concurrency: |
| group: ${{ github.workflow }}-${{ github.event.number }}-${{ github.event.ref }} |
| cancel-in-progress: true |
| on: [push, pull_request] |
| permissions: {} |
| jobs: |
| test: |
| env: |
| REQUIRE_ASPELL: ${{ startsWith(matrix.os, 'ubuntu') }} |
| RUFF_OUTPUT_FORMAT: github |
| # Make sure we're using the latest aspell dictionary |
| runs-on: ${{ matrix.os }} |
| timeout-minutes: 10 |
| strategy: |
| fail-fast: false |
| matrix: |
| python-version: |
| - "3.9" |
| - "3.10" |
| - "3.11" |
| - "3.12" |
| - "3.13" |
| - "3.14" |
| kind: |
| - "standard" |
| os: |
| - "ubuntu-24.04-arm" |
| include: |
| - python-version: "3.10" |
| kind: "no-toml" |
| os: "ubuntu-24.04-arm" |
| - python-version: "3.13" |
| kind: "standard" |
| os: "windows-latest" |
| name: "${{ matrix.python-version }} ${{ matrix.kind }} ${{ matrix.os }}" |
| steps: |
| - uses: actions/checkout@v6 |
| with: |
| persist-credentials: false |
| - name: Setup python |
| uses: actions/setup-python@v6 |
| with: |
| python-version: ${{ matrix.python-version }} |
| allow-prereleases: true |
| - run: sudo apt-get install libaspell-dev aspell-en |
| if: startsWith(matrix.os, 'ubuntu') |
| - name: Install dependencies |
| shell: bash -e {0} |
| run: | |
| python --version # just to check |
| python -m pip install --upgrade pip wheel # upgrade to latest pip find 3.5 wheels; wheel to avoid errors |
| pip install --upgrade "setuptools!=47.2.0" docutils setuptools_scm[toml] twine |
| pip install -e ".[dev]" # install the codespell dev packages |
| - run: pip install aspell-python-py3 |
| if: startsWith(matrix.os, 'ubuntu') |
| - run: codespell --help |
| - run: codespell --version |
| - run: make check |
| if: startsWith(matrix.os, 'ubuntu') |
| - run: pytest codespell_lib |
| if: startsWith(matrix.os, 'windows') |
| - uses: codecov/codecov-action@v5 |
| with: |
| token: ${{ secrets.CODECOV_TOKEN }} |
| # tomli should not be required for the next two steps (and make sure it's not) |
| - run: pip uninstall -yq tomli |
| if: ${{ matrix.kind == 'no-toml' }} |
| - run: codespell --check-filenames --skip="./.*,./build/*,./codespell_lib/data/*,./codespell_lib/tests/test_basic.py,./example/code.c,./junit-results.xml,*.egg-info/*,*.pyc,*.sig,pyproject-codespell.precommit-toml,README.rst," |
| # this file has an error |
| - run: "! codespell codespell_lib/tests/test_basic.py" |
| shell: bash -e {0} |
| |
| make-check-dictionaries: |
| runs-on: ubuntu-latest |
| timeout-minutes: 10 |
| steps: |
| - name: Setup Python |
| uses: actions/setup-python@v6 |
| - uses: actions/checkout@v6 |
| with: |
| persist-credentials: false |
| - name: Install general dependencies |
| run: pip install --upgrade pip wheel # upgrade to latest pip find 3.5 wheels; wheel to avoid errors |
| - name: Install codespell dependencies |
| run: pip install -e ".[dev]" |
| - uses: codespell-project/sort-problem-matcher@v1 |
| - run: make check-dictionaries |