Skip to content

Add Python-based PDD solver option and fix sign convention inconsistencies #1745

Add Python-based PDD solver option and fix sign convention inconsistencies

Add Python-based PDD solver option and fix sign convention inconsistencies #1745

name: Unit test and examples
on:
push:
pull_request:
# every day at 3 am UTC
schedule:
- cron: '0 3 * * *'
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
unit_test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: install-rtools
if: matrix.os == 'windows-latest'
run: |
choco install rtools --version=4.0.0.20220206 --no-progress --force
echo "c:\rtools40\ucrt64\bin;" >> $env:GITHUB_PATH
- name: Install system dependencies in Linux
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt install -y gfortran ngspice python3-tk libboost-all-dev libopenblas-dev libfftw3-dev libsuitesparse-dev
- name: Install system dependencies in MacOS
if: matrix.os == 'macos-latest'
run: |
brew reinstall gfortran
brew install ngspice boost suite-sparse
- name: Install system dependencies in Windows
if: matrix.os == 'windows-latest'
run: choco install ngspice
- name: Install Python dependecies
run: |
pip install numpy --config-settings=setup-args="-Dallow-noblas=true"
pip install pytest meson-python ninja cython spin
python3 -m spin install-dependencies -test-dep
- name: Install S4
if: matrix.os != 'windows-latest'
run: |
pip install wheel setuptools
git clone https://github.com/phoebe-p/S4
cd S4
make S4_pyext
cd ..
rm -rf S4
- name: Build solcore
run: |
python -m spin build -- -Dwith_pdd=true -Dinstall_test=true
- name: Unit and functional tests (MacOS and Linux)
if: matrix.os != 'windows-latest'
env:
SOLCORE_SPICE: ngspice
run: |
python -m spin test -- -r a -v --cov=solcore/ --ignore=solcore/tests/test_examples.py -n "auto"
- name: Unit and functional tests (Windows)
if: matrix.os == 'windows-latest'
run: |
cd D:\a\solcore5\solcore5\build-install\usr\Lib\site-packages
python -m pytest -r a -v --ignore=solcore/tests/test_examples.py
- name: Codecov
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
run: |
python -m pip install codecov
python -m spin codecov
test_examples:
needs: unit_test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: install-rtools
if: matrix.os == 'windows-latest'
run: |
choco install rtools --version=4.0.0.20220206 --no-progress --force
echo "c:\rtools40\ucrt64\bin;" >> $env:GITHUB_PATH
- name: Install system dependencies in Linux
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get update
sudo apt install -y gfortran ngspice python3-tk libboost-all-dev libopenblas-dev libfftw3-dev libsuitesparse-dev
- name: Install system dependencies in MacOS
if: matrix.os == 'macos-latest'
run: |
brew reinstall gfortran
brew install ngspice boost suite-sparse
# - name: Install system dependencies in Windows
# if: matrix.os == 'windows-latest'
# run: choco install ngspice
- name: Install Python dependecies
run: |
pip install pytest meson-python ninja cython numpy spin
python3 -m spin install-dependencies -test-dep
- name: Install S4
if: matrix.os != 'windows-latest'
run: |
pip install wheel setuptools
git clone https://github.com/phoebe-p/S4
cd S4
make S4_pyext
cd ..
rm -rf S4
- name: Build solcore
run: |
python -m spin build -- -Dwith_pdd=true -Dinstall_test=true
- name: Unit and functional tests (MacOS and Linux)
if: matrix.os != 'windows-latest'
env:
SOLCORE_SPICE: ngspice
run: |
python -m spin test -- -r a -v solcore/tests/test_examples.py -n "auto"
# - name: Unit and functional tests (Windows)
# if: matrix.os == 'windows-latest'
# run: |
# python -m spin test -- -r a -v solcore/tests/test_examples.py