Add Python 3.13 and switch to uv package management #140
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: Run Tests | |
on: | |
push: | |
branches: | |
- main | |
release: | |
types: [published] | |
pull_request: | |
concurrency: | |
group: test-${{github.ref}} | |
cancel-in-progress: true | |
jobs: | |
test: | |
name: Test with Python ${{matrix.python}} on ${{matrix.platform}} | |
runs-on: ${{matrix.platform}}-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- macos | |
- windows | |
- ubuntu | |
python: | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
- "3.13" | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{matrix.python}} | |
- name: Install uv | |
uses: astral-sh/setup-uv@v3 | |
- name: Set up dev environment | |
run: | | |
uv sync --only-group test | |
uv pip install . | |
- name: Run tests | |
run: | | |
uv run --no-sync pytest --cov=seedbank --cov-report=xml tests | |
- name: Upload logs | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-${{matrix.platform}}-py${{matrix.python}} | |
path: | | |
test*.log | |
coverage.xml | |
test-extra: | |
name: Test single extra ${{matrix.extra}} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
extra: | |
- numba | |
- torch | |
- tf | |
- jax | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.11 | |
- name: Install uv | |
uses: astral-sh/setup-uv@v3 | |
- name: Set up dev environment | |
run: | | |
uv sync --only-group test | |
uv pip install ".[${{matrix.extra}}]" | |
- name: Run tests | |
run: | | |
uv run --no-sync pytest --cov=seedbank --cov-report=xml tests | |
- name: Upload logs | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-extra-${{matrix.extra}} | |
path: | | |
test*.log | |
coverage.xml | |
report: | |
name: Process test results | |
runs-on: ubuntu-latest | |
needs: [test, test-extra] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Report test results | |
uses: lenskit/lkbuild/actions/report-test-results@main | |
sdist: | |
name: Build and Publish Packages | |
runs-on: ubuntu-latest | |
needs: [test, test-extra] | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Fetch Git tags | |
run: git fetch --tags | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.13" | |
- name: Install Python deps | |
run: pip install -U build twine | |
- name: Build distribution | |
run: python -m build | |
- name: Save archive | |
uses: actions/upload-artifact@v3 | |
with: | |
name: pypi-pkgs | |
path: dist | |
- name: List dist dir | |
run: ls -R dist | |
- name: Publish PyPI packages | |
if: github.event_name == 'release' | |
run: | | |
twine upload dist/* | |
shell: bash | |
env: | |
TWINE_NON_INTERACTIVE: y | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} |