Merge pull request #485 from ModECI/nml_examples #2257
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: | |
workflow_dispatch: | |
pull_request: | |
push: | |
release: | |
types: | |
- published | |
jobs: | |
pre-commit: | |
name: Format | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- uses: pre-commit/[email protected] | |
with: | |
extra_args: --hook-stage manual --all-files | |
checks: | |
name: Check Python ${{ matrix.python-version }} on ${{ matrix.runs-on }} | |
runs-on: ${{ matrix.runs-on }} | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: [ "3.8", "3.9", "3.10"] | |
runs-on: [ubuntu-latest, macos-latest, windows-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
# Rely on version of modelspec from PyPI as set by setup.cfg... | |
#- name: Install modelspec | |
# run: python -m pip install git+https://github.com/ModECI/modelspec.git@main | |
# Rely on version of NeuroMLlite from PyPI as set by setup.py... | |
# - name: Install NeuroMLlite | |
# run: python -m pip install NeuroMLlite>=0.5.0 | |
# Rely on version of PsyNeuLink from PyPI as set by setup.py... | |
#- name: Install specific PsyNeuLink branch | |
# run: python -m pip install git+https://github.com/ModECI/PsyNeuLink@devel | |
- name: Install core package | |
run: python -m pip install .[dev] | |
- name: Version info for installed packages | |
run: | | |
pip list | |
- name: Test core package | |
run: | | |
python -m pytest -m coremdf tests/ | |
- name: Install most optional dependencies | |
run: | | |
python -m pip install .[all_except_psyneulink] | |
- name: Version info for optional installed packages | |
run: | | |
pip list | |
- name: Install graphviz | |
if: ${{ matrix.runs-on != 'windows-latest' }} | |
run: | | |
if [[ ${{ matrix.runs-on }} == *"macos"* ]]; then brew install graphviz ; fi | |
if [[ ${{ matrix.runs-on }} == *"ubuntu"* ]]; then sudo apt install graphviz ; fi | |
- name: Test interface ACT-R | |
if: ${{ matrix.python-version != '3.10' || matrix.runs-on != 'windows-latest' }} | |
run: | | |
python -m pytest -v -m "actr" tests/ | |
- name: Test interface PyTorch | |
if: ${{ matrix.python-version != '3.10' || matrix.runs-on != 'windows-latest' }} | |
run: | | |
python -m pytest -v -m "pytorch" tests/ | |
- name: Test interface NeuroML | |
if: ${{ matrix.python-version != '3.10' || matrix.runs-on != 'windows-latest' }} | |
run: | | |
python -m pytest -v -m "neuroml" tests/ | |
- name: Test interface TensorFlow linux/mac | |
if: ${{ matrix.runs-on != 'windows-latest' }} | |
run: | | |
dot -V | |
python -m pytest -v -m "tensorflow" tests/ | |
- name: Test interface TensorFlow windows | |
if: ${{ matrix.python-version != '3.10' && matrix.runs-on == 'windows-latest' }} | |
run: | | |
choco install graphviz | |
dot -V | |
python -m pytest -v -m "tensorflow" tests/ | |
- name: Test interface PsyNeuLink | |
if: ${{ matrix.python-version != '3.10' }} | |
run: | | |
python -m pip install .[psyneulink] | |
python -m pytest -v -m "psyneulink" tests/ | |
- name: Build Documentation | |
run: | | |
cd docs | |
python generate.py | |
cd sphinx | |
make clean | |
make html | |
- name: Final version info for optional installed packages | |
run: | | |
pip list | |
dist: | |
name: Distribution build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build sdist and wheel | |
run: pipx run --spec build pyproject-build | |
- uses: actions/upload-artifact@v3 | |
with: | |
path: dist | |
- uses: pypa/[email protected] | |
if: github.event_name == 'release' && github.event.action == 'published' | |
with: | |
user: __token__ | |
# Remember to generate this and set it in "GitHub Secrets" | |
password: ${{ secrets.pypi_password }} |