Skip to content

Tweak README to indicate correct project status #2

Tweak README to indicate correct project status

Tweak README to indicate correct project status #2

Workflow file for this run

name: CI
on:
push:
branches: [main]
tags: [v*]
pull_request:
workflow_dispatch:
schedule:
# run once a month on the first day of the month at 00:00
- cron: "0 0 1 * *"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
pyright:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v7
- run: uv run pyright
test:
name: >-
Test ${{ matrix.os }} py${{ matrix.python-version }}
java${{ matrix.java-version }}
${{ matrix.resolution != 'highest' && matrix.resolution || '' }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
os: [ubuntu-latest, macos-latest, windows-latest]
java-version: ["11"]
resolution: ["highest"]
group: [test-all] # this means install all third party deps. The other includes do not.
exclude:
# this one always seems to hang on CI for some reason.
- os: ubuntu-latest
python-version: "3.10"
java-version: "11"
include:
- os: ubuntu-latest
python-version: "3.12"
java-version: "17"
- os: ubuntu-latest
python-version: "3.14"
java-version: "21"
# lowest-resolution variants
- os: ubuntu-latest
python-version: "3.11"
java-version: "11"
resolution: "lowest-direct"
- os: ubuntu-latest
python-version: "3.12"
java-version: "11"
resolution: "lowest-direct"
group: test-all
- os: windows-latest
python-version: "3.13"
java-version: "21"
resolution: "lowest-direct"
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v7
with:
python-version: ${{ matrix.python-version }}
- name: Install Dependencies
run: uv sync --group ${{ matrix.group == '' && 'test' || matrix.group }}
env:
UV_NO_DEV: 1
UV_RESOLUTION: ${{ matrix.resolution || 'highest' }}
UV_PRERELEASE: ${{ github.event_name == 'schedule' && 'allow' || 'if-necessary-or-explicit' }}
- name: Get test data cache key
id: cache-key
shell: bash
run: |
MANIFEST_HASH=$(curl -sL https://pub-2ac5a4b342a7472da9d44847263e1a56.r2.dev/manifest.json | sha256sum | cut -d' ' -f1)
echo "hash=${MANIFEST_HASH}" >> "$GITHUB_OUTPUT"
- name: Cache test data
uses: actions/cache@v5
id: cache-test-data
with:
path: tests/data
key: test-data-${{ steps.cache-key.outputs.hash }}
- name: Fetch test data
if: steps.cache-test-data.outputs.cache-hit != 'true'
run: uv run scripts/fetch_test_data.py
- name: Test
run: uv run --no-sync coverage run -p -m pytest -v -p no:faulthandler
env:
BFF_JAVA_VERSION: ${{ matrix.java-version }}
PYTEST_ADDOPTS: ${{ matrix.resolution == 'lowest-direct' && '-W ignore' || '' }}
- name: Upload coverage
uses: actions/upload-artifact@v6
with:
name: covreport-${{ matrix.os }}-py${{ matrix.python-version }}-${{ matrix.java-version }}-${{ matrix.resolution }}-${{ matrix.group}}
path: ./.coverage*
include-hidden-files: true
upload_coverage:
if: always()
needs: [test]
uses: pyapp-kit/workflows/.github/workflows/upload-coverage.yml@v2
secrets:
codecov_token: ${{ secrets.CODECOV_TOKEN }}
build-and-inspect-package:
name: Build & inspect package.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: hynek/build-and-inspect-python-package@v2
upload-to-pypi:
name: Upload package to PyPI
needs: [test, build-and-inspect-package]
if: success() && startsWith(github.ref, 'refs/tags/') && github.event_name != 'schedule'
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
steps:
- name: Download built artifact to dist/
uses: actions/download-artifact@v7
with:
name: Packages
path: dist
- name: 🚢 Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
- uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: "./dist/*"