Batteries-included GitHub Actions pack for data science teams. Fast, reliable, and easy to use.
- Huge Adoption: GitHub Actions has massive adoption across the industry
- Python-First: Optimized for Python, the top language for data science
- Data/ML Ready: Purpose-built for data science and ML project workflows
- Drop-in Ready: Templates and examples lower friction to adoption
- Performance Focused: Uses UV package manager for 10-100x faster builds
name: Data Science CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./actions/setup-python-uv
- uses: ./actions/pytest-uv
- uses: ./actions/code-quality-uv
- uses: ./actions/notebook-test-uvWant to customize? See USAGE.md for complete configuration options and how to pick only the actions you need.
| Action | Description | When to Use |
|---|---|---|
| setup-python-uv | Python setup with UV | Always (required for other actions) |
| pytest-uv | Test runner with coverage | If you have tests (recommended) |
| code-quality-uv | Linting and type checking | For code quality (recommended) |
| notebook-test-uv | Jupyter notebook testing | If you have .ipynb files |
All actions are optional except setup-python-uv. Mix and match based on your needs!
Traditional pip-based setup:
Installing dependencies... 2m 34s
UV-based setup:
Installing dependencies... 8s
name: Test Data Science Project
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./actions/setup-python-uv
with:
python-version: '3.11'
- uses: ./actions/pytest-uv
with:
coverage-threshold: 85
- uses: ./actions/code-quality-uv
- uses: ./actions/notebook-test-uvname: ML Pipeline
on: [push, pull_request]
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./actions/setup-python-uv
with:
python-version: '3.11'
dev-dependencies: true
- uses: ./actions/code-quality-uv
with:
fail-on-violations: true
check-notebooks: true
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.9', '3.10', '3.11', '3.12']
steps:
- uses: actions/checkout@v4
- uses: ./actions/setup-python-uv
with:
python-version: ${{ matrix.python-version }}
- uses: ./actions/pytest-uv
with:
parallel: true
coverage-threshold: 90
notebooks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./actions/setup-python-uv
- uses: ./actions/notebook-test-uv
with:
timeout: 1200
generate-html: trueEach action comes with carefully curated package sets:
- pandas, numpy, matplotlib, seaborn, plotly
- scikit-learn, scipy, statsmodels
- jupyter, ipykernel, nbconvert
- pytest, pytest-cov, pytest-xdist
- ruff, mypy, black, isort
- bandit, safety (security)
- papermill, nbqa, nbformat
- ipywidgets for interactive notebooks
- uses: ./actions/setup-python-uv
with:
python-version: '3.11'
cache: true
dev-dependencies: true
requirements-file: 'requirements.txt'- uses: ./actions/pytest-uv
with:
test-path: 'tests/'
coverage-threshold: 90
parallel: true
pytest-args: '--benchmark-only'- uses: ./actions/code-quality-uv
with:
fail-on-violations: true
fix-violations: false
check-notebooks: trueThis pack works best with standard Python project structures:
your-project/
├── src/ # Source code
├── tests/ # Test files
├── notebooks/ # Jupyter notebooks
├── requirements.txt # Dependencies
├── pyproject.toml # Project configuration
└── .github/
└── workflows/
└── ci.yml # Your workflow
UV is the next-generation Python package manager:
- 10-100x Faster: Rust-based implementation
- Better Dependency Resolution: Handles complex data science dependencies
- Drop-in Replacement: Compatible with pip workflows
- Built-in Virtual Environments: No need for separate venv management
- Production Ready: Used by major companies and open source projects
Replace this:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txtWith this:
- uses: ./actions/setup-python-uv
with:
python-version: '3.11'- USAGE.md - Complete guide to choosing and configuring actions
- CONTRIBUTING.md - How to contribute to the project
- SECURITY.md - Security guidelines and best practices
- templates/ - Ready-to-use workflow templates
- examples/ - Complete example projects
- Issues: Report bugs and request features on GitHub Issues
- Discussions: Share workflows and ask questions in GitHub Discussions
- Contributing: Submit PRs for new actions or improvements (see CONTRIBUTING.md)
- Examples: Check
/examplesfor complete project setups
MIT License - See LICENSE file for details. Free for personal and commercial use.
This project follows security best practices. See SECURITY.md for details on:
- Safe action design and implementation
- Vulnerability reporting procedures
- Security guidelines for users
Built for data teams, by the open source community.