Merge pull request #3496 from riya-singh28/mxmnet_envelope #20
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'] | |
include: | |
- os: windows-latest | |
python-version: '3.9' | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache pip modules for Linux | |
uses: actions/cache@v3 | |
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@v3 | |
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'] | |
include: | |
- os: windows-latest | |
python-version: '3.9' | |
env: | |
OS: ${{ matrix.os }} | |
PYTHON_VERSION: ${{ matrix.python-version }} | |
steps: | |
- uses: actions/checkout@v3 | |
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@v3 | |
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@v3 | |
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@v3 | |
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@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Create env.yml for python < 3.10 | |
shell: bash | |
if: ${{ matrix.python-version != '3.10' }} | |
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_py310_no_support.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_py310_no_support.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.10 | |
shell: bash | |
# A special case of environment creation for python 3.10 which excludes vina | |
if: ${{ matrix.python-version == '3.10' }} | |
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@v2 | |
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' --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.10') }} | |
shell: bash -l {0} | |
run: pytest -v -m "not jax and not torch and not tensorflow and not dqc" --ignore='deepchem/dock/tests/test_docking.py' --ignore='deepchem/dock/tests/test_pose_scoring.py' --ignore='deepchem/dock/tests/test_pose_generation.py' deepchem | |
- name: PyTest | |
# A special pytest case for python 3.10 version which excludes vina | |
if: ${{ (success() || failure()) && (steps.install.outcome == 'failure' || steps.install.outcome == 'success') && (matrix.python-version != '3.10') }} | |
shell: bash -l {0} | |
run: pytest -v -m "not jax and not torch and not tensorflow and not dqc" deepchem |