Skip to content

Split newlines only at Python universal newlines (LF, CRLF, CR) #239

Split newlines only at Python universal newlines (LF, CRLF, CR)

Split newlines only at Python universal newlines (LF, CRLF, CR) #239

Workflow file for this run

---
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/*