Skip to content

Commit

Permalink
move to uv for deps on fairseq2 + lint/format
Browse files Browse the repository at this point in the history
  • Loading branch information
Mortimerp9 committed Dec 11, 2024
1 parent 90d4a05 commit 8eee380
Show file tree
Hide file tree
Showing 24 changed files with 2,990 additions and 381 deletions.
11 changes: 11 additions & 0 deletions .github/actions/setup/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
runs:
using: composite
steps:
- name: "Install UV"
shell: bash
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
- name: "Install libsndfile"
shell: bash
run: |
sudo apt-get install libsndfile1 python3-distutils
159 changes: 38 additions & 121 deletions .github/workflows/lint_and_test.yml
Original file line number Diff line number Diff line change
@@ -1,135 +1,52 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python package
name: Lint Python Code

on:
# Trigger the workflow on push to master or any pull request
push:
branches: ["main"]
pull_request:
branches: ["main"]
branches:
- main

jobs:
linter:
lock_file:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.8"]

steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install dependencies
run: |
sudo apt-get install libsndfile1
python -m pip install --upgrade pip
python -m pip install fairseq2n==0.3.0rc1+cpu --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/rc/pt2.5.1/cpu/
python -m pip install fairseq2==0.3.0rc1 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/rc/pt2.5.1/cpu/
python -m pip install -r requirements.txt
python -m pip install -r requirements-dev.txt
python -m pip install -e .
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: isort
run: isort --check --diff .
- name: black
run: black --check --diff .

mypy:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
- run: uv lock --locked
linting:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10"]
needs: [lock_file]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install dependencies
run: |
sudo apt-get install libsndfile1
python -m pip install --upgrade pip
python -m pip install fairseq2n==0.3.0rc1+cpu --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/rc/pt2.5.1/cpu/
python -m pip install fairseq2==0.3.0rc1 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/rc/pt2.5.1/cpu/
python -m pip install -r requirements.txt
python -m pip install -r requirements-dev.txt
python -m pip install -e .
- name: mypy
run: mypy --install-types --non-interactive ./ --cache-dir=.mypy_cache/

unit_test:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
- run: uvx ruff check .
formatting:
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
python-version: ["3.8"]
needs: [lock_file]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install dependencies
run: |
sudo apt-get install libsndfile1
python -m pip install fairseq2n==0.3.0rc1+cpu --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/rc/pt2.5.1/cpu/
python -m pip install fairseq2==0.3.0rc1 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/rc/pt2.5.1/cpu/
python -m pip install -r requirements.txt
python -m pip install -r requirements-dev.txt
python -m pip install -e .
- name: pytest_unit
run: pytest -s -v tests/unit_tests/

integration_test:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
- run: uvx ruff check --select I .
- run: uvx ruff format --check .
type_consistency:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.8"]
timeout-minutes: 40
needs: [lock_file]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install dependencies
run: |
sudo apt-get install libsndfile1
python -m pip install --upgrade pip
python -m pip install fairseq2n==0.3.0rc1+cpu --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/rc/pt2.5.1/cpu/
python -m pip install fairseq2==0.3.0rc1 --pre --extra-index-url https://fair.pkg.atmeta.com/fairseq2/whl/rc/pt2.5.1/cpu/
python -m pip install -r requirements.txt
python -m pip install -r requirements-dev.txt
python -m pip install -e .
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false

# all of these default to true, but feel free to set to
# "false" if necessary for your workflow
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
- name: pytest_integration
run: pytest -s -v tests/integration_tests/ --ignore-glob='*sonar*.py'
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
- run: uvx --with=types-PyYAML mypy
tests:
runs-on: ubuntu-latest
needs: [lock_file]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
- run: uv run --extra cpu pytest -s -v tests/unit_tests/
build:
runs-on: ubuntu-latest
needs: [lock_file, linting, formatting, type_consistency, tests]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
- run: uv build
16 changes: 16 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
repos:
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.5.7
hooks:
- id: uv-lock
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.2
hooks:
# Lint
- id: ruff
args: [ --fix ]
# sort imports
- id: ruff
args: ["check", "--select", "I", "--fix"]
# format
- id: ruff-format
Loading

0 comments on commit 8eee380

Please sign in to comment.