Robust baseclass (#4154) #8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.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.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.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 |