[WIP] Restraints API #4237
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: "CI" | |
on: | |
pull_request: | |
branches: | |
- main | |
# Skip CI if changed files only affect the following folders | |
# - docs: documentation changes don't need code validation | |
# See here for more details: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-excluding-paths | |
paths-ignore: | |
- "docs/*" | |
push: | |
branches: | |
- main | |
schedule: | |
# At 07:00 UTC on Monday and Thursday. | |
- cron: "0 7 * * *" | |
workflow_dispatch: | |
release: | |
types: | |
- published | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.ref }}" | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash -l {0} | |
jobs: | |
tests: | |
runs-on: ${{ matrix.os }} | |
name: "π»-${{matrix.os }} π-${{ matrix.python-version }} ποΈ${{ matrix.pydantic-version }} oechem-${{ matrix.openeye }} gufe-${{ matrix.gufe-version }}" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu-latest"] | |
pydantic-version: [">1"] | |
python-version: | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
openeye: ["no"] | |
gufe-version: ['a9b5982471eb3644ca8c4423c7001e6309a3f544'] | |
include: | |
- os: "macos-latest" | |
python-version: "3.12" | |
pydantic-version: ">1" | |
gufe-version: 'a9b5982471eb3644ca8c4423c7001e6309a3f544' | |
- os: "ubuntu-latest" | |
python-version: "3.11" | |
pydantic-version: "<2" | |
gufe-version: 'a9b5982471eb3644ca8c4423c7001e6309a3f544' | |
- os: "ubuntu-latest" | |
python-version: "3.11" | |
pydantic-version: ">1" | |
openeye: "yes" | |
gufe-version: 'a9b5982471eb3644ca8c4423c7001e6309a3f544' | |
- os: "macos-latest" | |
python-version: "3.12" | |
pydantic-version: ">1" | |
omff-version: ">0.13" | |
openeye: ["no"] | |
gufe-version: 'a9b5982471eb3644ca8c4423c7001e6309a3f544' | |
# temporary test against gufe main while we're pinned to a9b5 | |
- os: "ubuntu-latest" | |
python-version: "3.11" | |
pydantic-version: ">1" | |
openeye: "yes" | |
gufe-version: 'main' | |
env: | |
OE_LICENSE: ${{ github.workspace }}/oe_license.txt | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Get current date | |
id: date | |
run: echo "date=$(date +%Y-%m-%d)" >> "${GITHUB_OUTPUT}" | |
- name: "Setup Micromamba" | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
micromamba-version: '1.5.6-0' | |
micromamba-binary-path: ~/.local/bin/micromamba | |
environment-file: environment.yml | |
environment-name: openfe_env | |
cache-environment: true | |
cache-downloads: true | |
cache-environment-key: environment-${{ steps.date.outputs.date }} | |
cache-downloads-key: downloads-${{ steps.date.outputs.date }} | |
create-args: >- | |
python=${{ matrix.python-version }} | |
pydantic=${{ matrix.pydantic-version }} | |
init-shell: bash | |
- name: "Install OpenEye" | |
if: ${{ !github.event.pull_request.head.repo.fork | |
&& matrix.openeye == 'yes' }} | |
env: | |
OE_LICENSE_TEXT: ${{ secrets.OE_LICENSE }} | |
run: | | |
echo "${OE_LICENSE_TEXT}" > ${OE_LICENSE} | |
micromamba install -c openeye openeye-toolkits | |
python -c "import openeye; assert openeye.oechem.OEChemIsLicensed(), 'oechem license check failed!'" | |
- name: "Install GUFE at {{ matrix.gufe-version }}" | |
if: ${{ matrix.gufe-version != 'main' }} | |
run: python -m pip install --no-deps git+https://github.com/OpenFreeEnergy/gufe@${{ matrix.gufe-version }} | |
- name: "Install" | |
run: python -m pip install --no-deps -e . | |
- name: "Test imports" | |
run: | | |
# if we add more to this, consider changing to for + env vars | |
python -Ic "import openfe; print(openfe.__version__)" | |
- name: "Environment Information" | |
run: | | |
micromamba info | |
micromamba list | |
pip list | |
- name: "Run tests" | |
env: | |
# Set the OFE_SLOW_TESTS to True if running a Cron job | |
OFE_SLOW_TESTS: ${{ fromJSON('{"false":"false","true":"true"}')[github.event_name != 'pull_request'] }} | |
DUECREDIT_ENABLE: 'yes' | |
run: | | |
pytest -n auto -v --cov=openfe --cov=openfecli --cov-report=xml --durations=10 | |
- name: codecov-pr | |
if: ${{ github.repository == 'OpenFreeEnergy/openfe' | |
&& github.event_name == 'pull_request' }} | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: coverage.xml | |
fail_ci_if_error: False | |
verbose: True | |
flags: fast-tests | |
- name: codecov-merge | |
# we only want to upload a slow report if | |
# 1) it isn't a schedule run | |
# 2) it wasn't from a PR (we don't run slow tests on PRs) | |
if: ${{ github.repository == 'OpenFreeEnergy/openfe' | |
&& github.event_name != 'schedule' | |
&& github.event_name != 'pull_request' }} | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: coverage.xml | |
fail_ci_if_error: False | |
verbose: True | |
flags: slow-tests |