Skip to content

Switch to UV

Switch to UV #1880

name: EthicML CI
on:
pull_request:
branches:
- main
paths-ignore:
- 'docs/**'
- 'examples/**'
- '**/*.md'
- .github/dependabot.yml
- .github/release.yml
- .github/workflows/docs.yml
- .github/workflows/dummy_ci.yml
- .github/workflows/dependabot_auto.yml
- .github/workflows/labeler.yml
- .gitignore
- CODEOWNERS
- LICENSE
- make_release.sh
- CITATION.cff
merge_group:
jobs:
lint_with_ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Set up Python
run: uv python install 3.10
- name: Install ruff
run: uv sync --no-install-project --only-group lint
- name: Lint with ruff
run: |
uv run ruff check --output-format=github ethicml
- name: Lint with ruff
run: |
uv run ruff check --output-format=github tests
format_with_black:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Set up Python
run: uv python install 3.10
- name: Install ruff
run: uv sync --no-install-project --only-group lint
- name: Format with ruff
run: |
uv run ruff format --diff .
check_with_pydoclint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Set up Python
run: uv python install 3.11
- name: Install pydoclint
run: uv sync --no-install-project --only-group doclint
- name: Check with pydoclint
run: |
uv run pydoclint ethicml
test_minimal_dependencies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Set up Python
run: uv python install 3.10
- name: Install dependencies
run: uv sync --no-install-project --no-group dev --no-group test --no-group typecheck --no-group lint --no-group doclint
- name: Test import
run: |
uv run python -c "import ethicml"
test_build_docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- name: Set up Python
run: uv python install 3.10
- name: Install dependencies
run: uv sync --no-install-project --all-extras --group ci --group torchcpu --group docs --no-group lint --no-group doclint
- name: Test import
run: |
uv run python -c "import ethicml"
- name: Install pandoc
run: sudo apt-get install -y pandoc
- name: Build with sphinx
run: |
uv run sphinx-build -W -b html ./docs ./docs/_build
test_with_pytest:
needs: [lint_with_ruff, format_with_black, check_with_pydoclint, test_minimal_dependencies, test_build_docs]
runs-on: ubuntu-latest
steps:
#----------------------------------------------
# --- check-out repo and set-up python ---
#----------------------------------------------
- uses: actions/checkout@v4
- name: Install uv
if: ${{ github.event_name == 'merge_group' }}
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- name: Set up Python
if: ${{ github.event_name == 'merge_group' }}
run: uv python install 3.10
#----------------------------------------------
# --------- install dependencies --------
#----------------------------------------------
- name: Install dependencies
if: ${{ github.event_name == 'merge_group' }}
run: uv sync --no-install-project --all-extras --group ci --group torchcpu --no-group lint --no-group doclint
#----------------------------------------------
# ----- Run MyPy -----
#----------------------------------------------
- name: Type check with mypy
if: ${{ github.event_name == 'merge_group' }}
run: |
uv run mypy ethicml
#----------------------------------------------
# ----- Run MyPy on tests -----
#----------------------------------------------
- name: Type check tests with mypy
if: ${{ github.event_name == 'merge_group' }}
run: |
uv run mypy tests
#----------------------------------------------
# ----- Run Tests -----
#----------------------------------------------
- name: Test with pytest
if: ${{ github.event_name == 'merge_group' }}
run: |
uv run python -m pytest -vv -n 2 --dist loadgroup --cov=ethicml --cov-fail-under=80 tests/