Skip to content

Use partial functions in flows to increase user flexibility in setting job attributes (e.g. executor) #8222

Use partial functions in flows to increase user flexibility in setting job attributes (e.g. executor)

Use partial functions in flows to increase user flexibility in setting job attributes (e.g. executor) #8222

Workflow file for this run

name: tests
on:
push:
branches:
- main
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
tests-core:
strategy:
fail-fast: true
matrix:
python-version: ["3.9", "3.12"]
os: [ubuntu-latest, windows-latest]
exclude:
- os: windows-latest
python-version: "3.9"
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Install pip packages
run: |
pip install -r tests/requirements.txt
pip install .[dev]
- name: Run tests with pytest
run: pytest --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v3
with:
name: ${{ github.job }} ${{ matrix.python-version }} ${{ matrix.os }} coverage report
path: "coverage.xml"
retention-days: 1
tests-engines-covalent:
runs-on: ubuntu-latest
strategy:
fail-fast: true
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Install pip packages
run: |
pip install -r tests/requirements.txt
pip install -r tests/requirements-covalent.txt
pip install -r tests/phonopy.txt
pip install .[dev]
- name: Start Covalent server
run: covalent start
- name: Run tests with pytest
run: pytest --durations=10 tests/covalent --cov=quacc --cov-report=xml
- name: Stop Covalent server
run: covalent stop
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v3
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
tests-engines:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
wflow_engine: [dask, parsl, redun, jobflow]
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Install pip packages
run: |
pip install -r tests/requirements.txt
pip install -r tests/requirements-${{ matrix.wflow_engine }}.txt
pip install -r tests/phonopy.txt
pip install .[dev]
- name: Run tests with pytest
run: pytest --durations=10 tests/${{ matrix.wflow_engine }} --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v3
with:
name: ${{ github.job }} ${{ matrix.wflow_engine }} coverage report
path: "coverage.xml"
retention-days: 1
tests-psi4:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Set up conda
uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
activate-environment: quacc-env
- name: Install conda packages
run: |
conda install -n base conda-libmamba-solver
conda install psi4 python=3.11 -c conda-forge/label/libint_dev -c conda-forge --solver libmamba
- name: Install pip packages
run: |
pip install -r tests/requirements.txt
pip install .[dev]
- name: Run tests with pytest
run: pytest -k 'psi4' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v3
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
tests-defects-phonons-espresso:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Set up conda
uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
activate-environment: quacc-env
- name: Install conda packages
run: conda install -c conda-forge qe
- name: Install pip packages
run: |
pip install -r tests/requirements.txt
pip install -r tests/requirements-defects.txt
pip install -r tests/requirements-phonopy.txt
pip install .[dev]
- name: Run tests with pytest
run: pytest -k 'defects or phonon or espresso' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v3
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
tests-tblite-dftbplus:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Set up conda
uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
activate-environment: quacc-env
- name: Install conda packages
run: conda install -c conda-forge dftbplus
- name: Install pip packages
run: |
pip install -r tests/requirements.txt
pip install -r tests/requirements-tblite.txt
pip install -r tests/requirements-phonopy.txt
pip install .[dev]
- name: Run tests with pytest
run: pytest -k 'dftb or tblite' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v3
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
tests-qchem-sella:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Set up conda
uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
activate-environment: quacc-env
- name: Install conda packages
run: |
conda install -c conda-forge openbabel
conda install -c pytorch pytorch
- name: Install pip packages
run: |
pip install -r tests/requirements.txt
pip install -r tests/requirements-sella.txt
pip install .[dev]
- name: Run tests with pytest
run: pytest -k 'qchem or sella' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v3
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
tests-mlps:
strategy:
fail-fast: true
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- name: Check out repo
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
cache: pip
cache-dependency-path: tests/requirements**.txt
- name: Set up conda
uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
activate-environment: quacc-env
- name: Install pip packages
run: |
pip install -r tests/requirements.txt
pip install -r tests/requirements-mlp.txt
pip install -r tests/requirements-newtonnet.txt
pip install .[dev]
- name: Run tests with pytest
run: pytest -k 'mlp or newtonnet' --durations=10 --cov=quacc --cov-report=xml
- name: Upload code coverage report to Artifact
uses: actions/upload-artifact@v3
with:
name: ${{ github.job }} coverage report
path: "coverage.xml"
retention-days: 1
codecov:
needs:
- tests-core
- tests-engines-covalent
- tests-engines
- tests-psi4
- tests-defects-phonons-espresso
- tests-qchem-sella
- tests-mlps
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download coverage artifacts
uses: actions/download-artifact@v3
- name: Upload coverage to Codecov
uses: Wandalen/wretry.action@v1
with:
action: codecov/codecov-action@v3
attempt_limit: 5
attempt_delay: 30000
with: |
fail_ci_if_error: true