|
name: Packages |
|
|
|
# PyPI package compatibility matrix. Resolves tests/packages/matrix.toml |
|
# for every device target against the live indexes (PyPI, BeeWare, |
|
# Chaquopy) and fails when a package's availability disagrees with the |
|
# manifest, so an index change that breaks or fixes a package shows up |
|
# here rather than in a user's build. |
|
# |
|
# Runs weekly (the indexes change without us), on manual dispatch, and |
|
# on any change to the resolver, the manifest, or the guide's table. |
|
|
|
on: |
|
schedule: |
|
- cron: '17 6 * * 1' |
|
workflow_dispatch: |
|
push: |
|
branches: [main] |
|
paths: |
|
- 'src/pythonnative/project/deps.py' |
|
- 'tests/packages/**' |
|
- 'scripts/package-matrix.py' |
|
- '.github/workflows/packages.yml' |
|
pull_request: |
|
paths: |
|
- 'src/pythonnative/project/deps.py' |
|
- 'tests/packages/**' |
|
- 'scripts/package-matrix.py' |
|
- '.github/workflows/packages.yml' |
|
|
|
jobs: |
|
matrix: |
|
runs-on: ubuntu-latest |
|
timeout-minutes: 20 |
|
steps: |
|
- name: Checkout |
|
uses: actions/checkout@v4 |
|
|
|
- name: Set up uv |
|
uses: astral-sh/setup-uv@v10.0.1 |
|
with: |
|
enable-cache: true |
|
python-version: '3.13' |
|
|
|
- name: Install dependencies |
|
run: uv sync --locked --group dev |
|
|
|
- name: Resolve the matrix |
|
env: |
|
PN_PACKAGE_MATRIX: '1' |
|
run: uv run pytest tests/packages -q -m network |
|
|
|
# The Markdown table the guide embeds; download it from the run |
|
# page and paste it into docs/guides/pypi-packages.md when it |
|
# changes. |
|
- name: Render the Markdown table |
|
if: always() |
|
run: uv run scripts/package-matrix.py > package-matrix.md |
|
|
|
- name: Upload the table |
|
if: always() |
|
uses: actions/upload-artifact@v4 |
|
with: |
|
name: package-matrix |
|
path: package-matrix.md |
|
retention-days: 30 |