Skip to content

[pre-commit.ci] pre-commit autoupdate #453

[pre-commit.ci] pre-commit autoupdate

[pre-commit.ci] pre-commit autoupdate #453

Workflow file for this run

# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Test
on:
push:
branches:
- master
tags: v*
pull_request:
schedule:
# run this on first day of the month at 3 am UTC
- cron: 0 3 1 * *
workflow_dispatch:
jobs:
build:
name: ${{ matrix.os }}, Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
python-version:
- '3.9'
- '3.10'
- '3.11'
- '3.12'
with-viscm:
- true
include:
- os: ubuntu-20.04
python-version: '3.9'
deps: minimal
pip-args: --constraint requirements/min_constraints.txt
with-viscm: false
fail-fast: false
concurrency:
group: ${{ github.ref }}-${{ matrix.os }}-${{ matrix.python-version }}-build
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- run: |
python -m pip install --upgrade pip
python -m pip install -r requirements/dev.txt ${{ matrix.pip-args }}
- if: matrix.with-viscm
run: python -m pip install "viscm>=0.10"
- if: matrix.deps == 'minimal'
run: |
pipx run uv pip compile pyproject.toml --resolution=lowest-direct > mindeps.txt
python -m pip install --requirement mindeps.txt \
--only-binary ':all:' ${{ matrix.pip-args }}
- name: Build
run: |
python -m pip install -e .
- run: python -m pip list
- name: Test package
run: |
pytest --color=yes --mpl --cov --cov-config=pyproject.toml --cov-report=term-missing
- name: Upload coverage
run: |
curl -s https://codecov.io/bash | bash
type-check:
name: type check w/ Python ${{ matrix.python-version }}
strategy:
matrix:
python-version:
- '3.9'
- '3.12'
runs-on: ubuntu-latest
concurrency:
group: ${{ github.ref }}-${{ matrix.python-version }}-typecheck
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Build
run: |
python -m pip install --upgrade pip
python -m pip install "."
python -m pip install -r requirements/typecheck.txt
- name: Run mypy
run: mypy cmasher
docs:
name: Build docs
runs-on: ubuntu-latest
concurrency:
group: ${{ github.ref }}-docs
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
- name: Setup env
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements/docs.txt
- run: python -m pip freeze
- name: Build
run: |
sphinx-build -M html docs/source site -W
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: site
path: site
check-manifest:
name: Check MANIFEST.in
runs-on: ubuntu-latest
concurrency:
group: ${{ github.ref }}-check_manifest
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: pipx run check-manifest
build-artifacts:
name: Build artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: |
pipx run build
pipx run twine check dist/*
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist
publish:
name: Publish to PyPI
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
needs:
- build
- type-check
- docs
- check-manifest
- build-artifacts
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/CMasher
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Publish package distributions to PyPI
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
uses: pypa/gh-action-pypi-publish@release/v1