name: Sync to Hugging Face hub on: push: branches: [main] workflow_dispatch: jobs: sync-to-hub: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 lfs: true # ------------------------- # 1. Set up Python # ------------------------- - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.10' # ------------------------- # 2. Install dependencies # ------------------------- - name: Install dependencies run: | pip install --upgrade pip pip install flake8 nbqa pytest pandas scikit-learn # ------------------------- # 3. Lint Python files # ------------------------- - name: Lint .py files run: | flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # ------------------------- # 4. Lint notebooks with nbQA # ------------------------- - name: Lint notebooks run: | nbqa flake8 . --exclude A2,A3 --extend-ignore=F821 --select=E9,F63,F7,F82 --statistics # ------------------------- # 5. Block problematic files # ------------------------- - name: Check for restricted file types run: | if git diff --name-only HEAD~1 | grep -E '\.(pdf|xlsx)$'; then echo "❌ PDF/XLSX files detected. These break HuggingFace sync." exit 1 fi # ------------------------- # 6. Run unit tests # ------------------------- - name: Run unit tests run: | pytest A4/ -v --tb=short # ------------------------- # 7. Push to HuggingFace # ------------------------- - name: Push to hub env: HF_TOKEN: ${{ secrets.HF_TOKEN }} run: | git push -f https://Bachstelze:$HF_TOKEN@huggingface.co/spaces/Bachstelze/github_sync main