Skip to content

Transition to hip-cargo format #1235

Transition to hip-cargo format

Transition to hip-cargo format #1235

Workflow file for this run

name: pfb-imaging CI Workflow
permissions:
contents: read
pull-requests: read
on:
push:
branches: [main]
tags:
- 'v*'
pull_request:
branches: [main]
jobs:
quality:
name: Code Quality
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v6
- name: Set up uv
uses: astral-sh/setup-uv@v7
- name: Set up Python
run: uv python install 3.10
- name: Cache uv dependencies
uses: actions/cache@v5
with:
path: ~/.cache/uv
key: ${{ runner.os }}-uv-${{ hashFiles('uv.lock') }}
restore-keys: |
${{ runner.os }}-uv-
- name: Install dependencies
run: uv sync --extra dev
- name: Check code formatting
run: uv run ruff format --check .
- name: Lint code
run: uv run ruff check .
test:
runs-on: ubuntu-latest
env:
NUMBA_CACHE_DIR: /tmp/numba-cache
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Check out code
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
# This ensures the venv is created and ready before the test step
activate-environment: true
- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}
- name: Restore repo times
uses: chetan/git-restore-mtime-action@v2
- name: Create Key and Numba Cache Directory
id: numba-key
run: |
mkdir -p ${{ env.NUMBA_CACHE_DIR }}
echo "timestamp=$(/bin/date -u '+%Y%m%d%H%M%S')" >> $GITHUB_OUTPUT
- name: Cache Numba Kernels
uses: actions/cache@v5
with:
key: numba-cache-${{ matrix.python-version }}-${{ steps.numba-key.outputs.timestamp }}
restore-keys: numba-cache-${{ matrix.python-version }}-
path: ${{ env.NUMBA_CACHE_DIR }}
- name: List the measures directory
run: curl --disable-epsv ftp://ftp.astron.nl/outgoing/Measures/ > measures_dir.txt
- name: Load cached CASA Measures Data
id: load-cached-casa-measures
uses: actions/cache@v5
with:
key: casa-measures-${{ hashFiles('measures_dir.txt')}}
path: |
~/measures
~/.casarc
- name: Download and install CASA Measures Data
if: steps.load-cached-casa-measures.outputs.cache-hit != 'true'
run: |
mkdir -p ~/measures
set -e
for i in {1..3}; do
if curl --disable-epsv ftp://ftp.astron.nl/outgoing/Measures/WSRT_Measures.ztar --output WSRT_Measures.ztar; then
break
elif [ $i -eq 3 ]; then
echo "Download failed after 3 attempts."; exit 1
else
echo "Retrying download..."; sleep 5
fi
done
tar xvzf WSRT_Measures.ztar -C ~/measures
echo "measures.directory: ~/measures" > ~/.casarc
- name: Install pfb-imaging
run: uv sync --extra full --extra dev --frozen
- name: Run pfb-imaging
run: uv run pfb --help
- name: Run tests
run: |
# Force Ray and JAX to stay within the 2-core limit of the GHA runner
export RAY_NUM_CPUS=2
export XLA_PYTHON_CLIENT_MEM_FRACTION=0.50
export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1
export NUMEXPR_NUM_THREADS=1
uv run pytest -v tests/