Skip to content

Adding HF CI (#4173) #154

Adding HF CI (#4173)

Adding HF CI (#4173) #154

Workflow file for this run

name: Unit Tests
on:
push: # ci work when pushing master branch
branches:
- master
pull_request: # ci work when creating a PR to master branch
branches:
- master
jobs:
core-build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ['3.8', '3.10', '3.11']
include:
- os: windows-latest
python-version: '3.9'
steps:
- name: Maximize build space
if: matrix.os == 'ubuntu-latest'
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- uses: actions/checkout@v4
- name: Cache pip modules for Linux
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**.yml') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Build DeepChem
run: |
python -m pip install --upgrade pip
pip install -e .
- name: Import checking
run: python -c "import deepchem"
unit-tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ['3.8', '3.10', '3.11']
include:
- os: windows-latest
python-version: '3.9'
env:
OS: ${{ matrix.os }}
PYTHON_VERSION: ${{ matrix.python-version }}
steps:
- name: Maximize build space
if: matrix.os == 'ubuntu-latest'
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
sudo rm -rf /usr/local/lib/android
- uses: actions/checkout@v4
with:
fetch-depth: 0
# https://github.com/galaxyproject/tools-iuc/blob/master/.github/workflows/pr.yaml
# The range of commits to check for changes is:
# - for events on the master branch we compare against the sha before the event
# (note that this does not work for feature branch events since we want all
# commits on the feature branch and not just the commits of the last event)
# - for pull requests we compare against the 1st ancestor, given the current
# HEAD is the merge between the PR branch and the base branch
- name: Set commit range (push to the master branch, e.g. merge)
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
run: echo "COMMIT_RANGE=${{ github.event.before }}.." >> $GITHUB_ENV
- name: Set commit range (pull request)
if: github.event_name == 'pull_request'
run: |
git fetch origin master
echo "COMMIT_RANGE=origin/master..." >> $GITHUB_ENV
- name: Cache pip packages for Linux
if: runner.os == 'Linux'
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/**.yml') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache pip packages for MacOS
if: runner.os == 'macOS'
uses: actions/cache@v4
with:
path: ~/Library/Caches/pip
key: ${{ matrix.os }}-pip-${{ hashFiles('requirements/**.yml') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache pip packages for Windows
if: runner.os == 'Windows'
uses: actions/cache@v4
with:
path: ~\AppData\Local\pip\Cache
key: ${{ matrix.os }}-pip-${{ hashFiles('requirements/**.yml') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Create env.yml for python 3.11
shell: bash
if: ${{ matrix.python-version == '3.11' }}
run: |
python -m pip install --upgrade pip;
pip install conda-merge;
cd requirements
if [ "$(uname)" == 'Linux' ]; then
conda-merge env_common.yml env_test.yml env_ubuntu_3_11.yml tensorflow/env_tensorflow.cpu.yml torch/env_torch.cpu.yml jax/env_jax.cpu.yml > env.yml
elif [ "$(uname)" == 'Darwin' ]; then
conda-merge env_common.yml env_test.yml env_mac_3_11.yml tensorflow/env_tensorflow.cpu.yml torch/env_torch.mac.cpu.yml jax/env_jax.cpu.yml > env.yml
elif [[ "$(uname)" == "MINGW64_NT"* ]]; then
conda-merge env_common.yml env_test.yml tensorflow/env_tensorflow.cpu.yml torch/env_torch.win.cpu.yml > env.yml
fi;
cd ..
cp requirements/env.yml env.yml
- name: Create env.yml for python 3.8
shell: bash
# A special case of environment creation for python 3.8 which excludes jax
if: ${{ matrix.python-version == '3.8' }}
run: |
python -m pip install --upgrade pip;
pip install conda-merge;
cd requirements
if [ "$(uname)" == 'Linux' ]; then
conda-merge env_common_3_8.yml env_test.yml env_ubuntu.yml tensorflow/env_tensorflow.cpu.yml torch/env_torch.cpu.yml env_dqc.yml > env.yml
elif [ "$(uname)" == 'Darwin' ]; then
conda-merge env_common_3_8.yml env_test.yml env_mac.yml tensorflow/env_tensorflow.cpu.yml torch/env_torch.mac.cpu.yml > env.yml
elif [[ "$(uname)" == "MINGW64_NT"* ]]; then
conda-merge env_common_3_8.yml env_test.yml tensorflow/env_tensorflow.cpu.yml torch/env_torch.win.cpu.yml > env.yml
fi;
cd ..
cp requirements/env.yml env.yml
- name: Create env.yml for python >= 3.9
shell: bash
if: ${{ matrix.python-version != '3.8' && matrix.python-version != '3.11' }}
run: |
python -m pip install --upgrade pip;
pip install conda-merge;
cd requirements
if [ "$(uname)" == 'Linux' ]; then
conda-merge env_common.yml env_test.yml env_ubuntu.yml tensorflow/env_tensorflow.cpu.yml torch/env_torch.cpu.yml jax/env_jax.cpu.yml > env.yml
elif [ "$(uname)" == 'Darwin' ]; then
conda-merge env_common.yml env_test.yml env_mac.yml tensorflow/env_tensorflow.cpu.yml torch/env_torch.mac.cpu.yml jax/env_jax.cpu.yml > env.yml
elif [[ "$(uname)" == "MINGW64_NT"* ]]; then
conda-merge env_common.yml env_test.yml tensorflow/env_tensorflow.cpu.yml torch/env_torch.win.cpu.yml > env.yml
fi;
cd ..
cp requirements/env.yml env.yml
- name: Install all dependencies
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
auto-update-conda: true
activate-environment: deepchem
channels: conda-forge,defaults
python-version: ${{ matrix.python-version }}
environment-file: env.yml
- name: Install DeepChem
id: install
shell: bash -l {0}
run: pip install -e .
- name: Doctest Linux
if: ${{ (runner.os == 'Linux') && always() }}
shell: bash -l {0}
run: DGLBACKEND=pytorch pytest -v --ignore-glob='deepchem/**/test*.py' --ignore-glob='deepchem/models/jax_models/*' --ignore-glob='deepchem/models/dft/*' --ignore='deepchem/utils/dftutils.py' --doctest-modules deepchem --doctest-continue-on-failure
- name: Doctest Windows
if: ${{ (runner.os == 'Windows') && always() }}
# Seperate test avoiding Jax in windows since Jax is not supported in Windows
shell: bash -l {0}
run: DGLBACKEND=pytorch pytest -v --ignore-glob='deepchem/**/test*.py' --ignore-glob='deepchem/models/jax_models/*' --doctest-modules deepchem --doctest-continue-on-failure
- name: PyTest
if: ${{ (success() || failure()) && (steps.install.outcome == 'failure' || steps.install.outcome == 'success') && matrix.python-version == '3.11'}}
shell: bash -l {0}
run: pytest -v -m "not jax and not torch and not tensorflow and not dqc" --ignore='deepchem/utils/test/test_sequence_utils.py' deepchem
- name: PyTest
if: ${{ (success() || failure()) && (steps.install.outcome == 'failure' || steps.install.outcome == 'success') && matrix.python-version != '3.11'}}
shell: bash -l {0}
run: pytest -v -m "not jax and not torch and not tensorflow and not dqc" deepchem