Skip to content

feat: migrate packaging to uv #1949

feat: migrate packaging to uv

feat: migrate packaging to uv #1949

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
# Tests for the template
test:
strategy:
fail-fast: false
matrix:
python-version:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
os:
- ubuntu-latest
# - windows-latest
- macOS-latest
runs-on: ${{ matrix.os }}
name: "Template: ${{ matrix.python-version }} - ${{ matrix.os }}"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: astral-sh/setup-uv@v5
- run: uv sync --no-python-downloads
shell: bash
- run: uv run pytest
shell: bash
# Generate package, run test, run linting and build docs
copier:
strategy:
fail-fast: false
matrix:
script:
- run: "uv run python -m pytest tests"
dir: ""
name: "pytest"
- run: "git init && git add . && uvx --with pre-commit-uv pre-commit run -a"
dir: ""
name: "pre-commit"
- run: "uv run make html"
dir: "docs"
name: "docs"
extra_options:
- project_name: "Simple Package"
project_slug: "simple-package"
value: ""
- project_name: "Simple CLI"
project_slug: "simple-cli"
value: "--data 'has_cli=yes' --data 'cli_name=mycli'"
- project_name: "Django Package"
project_slug: "django-simple-package"
value: "--data 'is_django_package=yes' --data 'documentation=yes'"
runs-on: ubuntu-latest
name: "Generated: ${{ matrix.script.name }} ${{ matrix.extra_options.project_name }}"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
id: setup-python
with:
python-version: "3.11"
- uses: astral-sh/setup-uv@v5
- run: |
uvx copier copy \
. \
my-project \
--UNSAFE \
--data 'full_name=Bruno Alla' \
--data '[email protected]' \
--data 'github_username=dummy' \
--data 'project_name=${{ matrix.extra_options.project_name }}' \
--data 'project_slug=${{ matrix.extra_options.project_slug }}' \
--data 'project_short_description=Just a great project' \
--data 'open_source_license=MIT' \
${{ matrix.extra_options.value }} \
--defaults
env:
PIPX_DEFAULT_PYTHON: ${{ steps.setup-python.outputs.python-path }}
- run: cat pyproject.toml
working-directory: my-project
env:
PIPX_DEFAULT_PYTHON: ${{ steps.setup-python.outputs.python-path }}
- run: uv sync --group docs
working-directory: my-project
- run: ${{ matrix.script.run }}
working-directory: my-project/${{ matrix.script.dir }}