github-actions[ci]
Clean sync from main branch - 2025-08-07 22:25:30
dfef45c
name: Python Test
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
UV_SYSTEM_PYTHON: 1
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Checkout PR with full history
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
cache-dependency-glob: "pyproject.toml"
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: bash scripts/install-linux.sh
- name: List dependencies
run: pip list
- name: Login to Hugging Face
env:
HF_TOKEN: ${{ secrets.HF_TOKEN_READ_ONLY }}
run: huggingface-cli login --token $HF_TOKEN
- name: Run tests
env:
PREFECT_API_KEY: ${{ secrets.PREFECT_API_KEY }}
PREFECT_API_URL: ${{ secrets.PREFECT_API_URL }}
run: pytest -vra -n 5 --dist=loadscope tests
- name: Squash commits and trial push to Hugging Face
if: github.event_name == 'pull_request'
id: trial_push
env:
HF_TOKEN: ${{ secrets.HF_TOKEN }}
TRIAL_BRANCH: trial-sync-${{ github.sha }}-${{ matrix.python-version }}
run: |
# Configure Git user identity
git config user.name "github-actions[ci]"
git config user.email "github-actions[ci]@users.noreply.github.com"
# Install Git LFS
sudo apt-get update
sudo apt-get install -y git-lfs
git lfs install
# Configure LFS tracking for binary files (only for HF push)
git lfs track "*.pdf"
git lfs track "*.png"
git add .gitattributes
# Setup LFS for the remote
git lfs fetch
git lfs checkout
# Rebase and squash all PR commits into one
BASE=$(git merge-base origin/main HEAD)
git reset --soft $BASE
# Re-add all files (binary files will now be tracked by LFS)
git add .
git commit -m "Squashed commit from PR #${{ github.event.pull_request.number }}"
# Create a new orphan branch (no history)
git checkout --orphan hf-clean
git add .
git commit -m "Clean sync from main branch - $(date '+%Y-%m-%d %H:%M:%S')"
# Push to temporary branch on Hugging Face
git push -f https://HF_USERNAME:$HF_TOKEN@huggingface.co/spaces/atomind/mlip-arena HEAD:refs/heads/$TRIAL_BRANCH
- name: Delete trial branch from Hugging Face
if: steps.trial_push.outcome == 'success'
env:
HF_TOKEN: ${{ secrets.HF_TOKEN }}
TRIAL_BRANCH: trial-sync-${{ github.sha }}-${{ matrix.python-version }}
run: |
git push https://HF_USERNAME:$HF_TOKEN@huggingface.co/spaces/atomind/mlip-arena --delete $TRIAL_BRANCH || true