Split newlines only at Python universal newlines (LF, CRLF, CR) #239
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Build and test | |
on: # yamllint disable-line rule:truthy | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
env: | |
PY_IGNORE_IMPORTMISMATCH: 1 | |
jobs: | |
build-wheel: | |
runs-on: ubuntu-latest | |
outputs: | |
wheel-path: ${{ steps.get-darkgraylib-version.outputs.wheel-path }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
- name: Install wheel | |
run: python -m pip install wheel | |
- name: Build wheel distribution | |
run: python setup.py bdist_wheel | |
- name: Upload wheel for other jobs | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dist | |
path: dist/ | |
if-no-files-found: error | |
- name: Find out darkgraylib version and output it for test jobs | |
id: get-darkgraylib-version | |
shell: python | |
run: | | |
from os import environ | |
from pathlib import Path | |
from runpy import run_path | |
version = run_path("src/darkgraylib/version.py")["__version__"] | |
Path(environ["GITHUB_OUTPUT"]).open("a").write( | |
f"wheel-path=dist/darkgraylib-{version}-py3-none-any.whl\n" | |
) | |
test-nixos: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
needs: | |
- build-wheel | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: cachix/install-nix-action@v22 | |
with: | |
nix_path: nixpkgs=channel:nixos-unstable | |
- name: Download wheel uploaded by the build-wheel job | |
uses: actions/download-artifact@v4 | |
- name: Run tests in nix-shell | |
run: | | |
nix-shell \ | |
--pure \ | |
--run ' | |
python -m venv venv | |
source venv/bin/activate | |
pip install "${{needs.build-wheel.outputs.wheel-path}}[test]" | |
PY_IGNORE_IMPORTMISMATCH=1 pytest | |
' \ | |
./default.nix | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macos-latest | |
python-version: | |
- '3.9' | |
- '3.10' | |
- '3.11' | |
- '3.12' | |
- '3.13-dev' | |
constraints: [''] | |
post_install: [''] | |
exclude: | |
# C extension builds failing. | |
# Remove exclusions after Python 3.13 release. | |
- os: windows-latest | |
python-version: '3.13-dev' | |
- os: macos-latest | |
python-version: '3.13-dev' | |
include: | |
- os: ubuntu-latest | |
python-version: '3.9' | |
constraints: '--constraint constraints-oldest.txt' | |
- os: ubuntu-latest | |
python-version: '3.12' | |
post_install: pip install -r constraints-future.txt | |
--upgrade --upgrade-strategy=eager | |
needs: | |
- build-wheel | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Download wheel uploaded by the build-wheel job | |
uses: actions/download-artifact@v4 | |
- name: Install darkgraylib and dependencies from wheel built earlier | |
run: pip install "${{needs.build-wheel.outputs.wheel-path}}[test]" | |
${{ matrix.upgrade }} ${{ matrix.constraints }} | |
- name: Upgrade dependencies from GitHub if future constraints are used | |
# This can't be done in the same Pip invocation as installing | |
# Darkgraylib since Darkgraylib might place an upper limit on dependencies | |
# during compatibility fixing periods. | |
if: matrix.post_install | |
run: ${{ matrix.post_install }} | |
- name: Run Pytest | |
run: pytest | |
build-sdist-validate-dists: | |
runs-on: ubuntu-latest | |
needs: | |
- build-wheel | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
- name: Install twine | |
run: python -m pip install twine | |
- name: Download wheel uploaded by the build-wheel job | |
uses: actions/download-artifact@v4 | |
- name: Build source distribution | |
run: python setup.py sdist | |
- name: Validate distributions | |
run: twine check dist/* |