Switch to UV #1880
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: 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/ |