Skip to content

MNT: migrate requirement files to PEP 735 dependency groups #513

MNT: migrate requirement files to PEP 735 dependency groups

MNT: migrate requirement files to PEP 735 dependency groups #513

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:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
python-version:
- '3.10'
- '3.11'
- '3.12'
- '3.13'
test-args: [viscm>=0.10]
include:
- os: ubuntu-20.04
python-version: '3.10'
install-args: --resolution=lowest-direct
- os: windows-latest
python-version: '3.10'
- os: windows-latest
python-version: '3.11'
- os: windows-latest
python-version: '3.12'
- os: windows-latest
python-version: '3.13'
concurrency:
group: ${{ github.ref }}-${{ matrix.os }}-${{ matrix.python-version }}-build
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v2
with:
enable-cache: true
- name: Build
shell: bash # for windows-compat
run: |
uv sync -p ${{ matrix.python-version }} ${{ matrix.install-args }} \
--group dev --no-editable
- run: uv pip list
- name: Test package
run: |
uv run pytest --color=yes --mpl \
--cov --cov-config=pyproject.toml --cov-report=term-missing
- name: Upload coverage
shell: bash # for windows-compat
run: |
curl -s https://codecov.io/bash | bash
type-check:
name: type check w/ Python ${{ matrix.python-version }}
strategy:
fail-fast: false
matrix:
python-version:
- '3.10'
- '3.13'
runs-on: ubuntu-latest
concurrency:
group: ${{ github.ref }}-${{ matrix.python-version }}-typecheck
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v2
with:
enable-cache: true
- name: Run mypy
run: |
uv run -p ${{ matrix.python-version }} --group dev mypy cmasher
docs:
name: Build docs
runs-on: ubuntu-latest
concurrency:
group: ${{ github.ref }}-docs
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v2
with:
enable-cache: true
- name: Build
run: |
uvx -p 3.13 --with-requirements=docs/requirements.txt --compile-bytecode \
--from sphinx 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: astral-sh/setup-uv@v2
with:
enable-cache: true
- run: uvx check-manifest
build-artifacts:
name: Build artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v2
with:
enable-cache: true
- run: uv build
- run: uvx 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