Skip to content

Nightly build

Nightly build #749

Workflow file for this run

name: Nightly build
on:
workflow_dispatch:
schedule:
- cron: '30 4 * * *'
defaults:
run:
shell: bash -l {0}
jobs:
pytests:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- qutip-version: '4'
qutip-branch: 'qutip-4.7.X'
- qutip-version: '5'
qutip-branch: 'master'
steps:
- uses: actions/checkout@v3
- uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
use-quiet-mode: 'yes'
folder-path: tutorials-v${{ matrix.qutip-version }}
#use config file to define 403 and 405 errors as valid links
#(APS blocks this link check)
config-file: mlc_config.json
- name: Setup Mambaforge
uses: conda-incubator/setup-miniconda@v2
with:
miniforge-variant: Mambaforge
miniforge-version: latest
activate-environment: test-environment-v${{ matrix.qutip-version }}
use-mamba: true
- name: Get Date
id: get-date
run: echo "::set-output name=today::$(/bin/date -u '+%Y%m%d')"
shell: bash
- name: Cache Conda env
uses: actions/cache@v2
with:
path: ${{ env.CONDA }}/envs
key: conda-${{ runner.os }}--${{ runner.arch }}--${{ steps.get-date.outputs.today }}-${{ hashFiles('test_environment.yml') }}-${{ env.CACHE_NUMBER }}-qutip-${{ matrix.qutip-version }}
env:
# Increase this value to reset cache if etc/example-environment.yml has not changed
CACHE_NUMBER: 0
id: cache
- name: Install environment
if: steps.cache.outputs.cache-hit != 'true'
run: mamba env update -n test-environment-v${{ matrix.qutip-version }} -f test_environment-v${{ matrix.qutip-version }}.yml
- name: Install QuTiP
run: |
pip install --upgrade pip
python -m pip install jax jax[cpu] equinox diffrax
git clone -b ${{ matrix.qutip-branch }} https://github.com/qutip/qutip.git
cd qutip
pip install -r requirements.txt
pip install .
cd ..
python -m pip install git+https://github.com/qutip/qutip-qip
python -m pip install --no-deps git+https://github.com/qutip/qutip-jax
git clone -b master https://github.com/qutip/qutip-qtrl.git
cd qutip-qtrl
# install qutip-qtrl without deps because it requires qutip 5.0.0a1
pip install --no-deps -e .
- name: Install ffmpeg & LaTeX
run: |
sudo apt update
sudo apt install ffmpeg
sudo apt install texlive-latex-extra
- name: Convert Notebooks
run: |
rm -rf notebooks
mkdir notebooks
cp -r tutorials-v${{ matrix.qutip-version }}/* notebooks
cd notebooks
find . -name '*.md' -exec jupytext --to notebook {} +
find . -name '*.md' -delete
- name: Check PEP8 formatting
run: |
pip install nbqa flake8
find . -name '*.ipynb' -exec nbqa flake8 --max-line-length=88 {} +
- name: Run tests
run: |
jupyter kernel &
cd notebooks
find . -name '*.ipynb' -exec pytest --nbmake --overwrite --nbmake-timeout=600 {} +
rm template.ipynb
- name: Create Notebook Artifact
uses: actions/upload-artifact@v4
with:
name: executed-notebooks-v${{ matrix.qutip-version }}
path: |
notebooks/*.ipynb
notebooks/**/*.ipynb