-
Notifications
You must be signed in to change notification settings - Fork 69
140 lines (113 loc) · 3.55 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: CI
on:
workflow_dispatch:
pull_request:
push:
release:
types:
- published
jobs:
pre-commit:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
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.9", "3.10", "3.11"]
runs-on: [ubuntu-latest, macos-latest, windows-latest]
exclude:
- runs-on: macos-latest
python-version: "3.9"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
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 HDF5 for pytables on macos-14/latest
if: ${{ matrix.runs-on == 'macos-latest' }}
run: |
brew install hdf5
- 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 .[optional]
- name: Version info for optional installed packages
run: |
pip list
- name: Install graphviz
uses: ts-graphviz/setup-graphviz@v2
with:
# Skip to run brew update command on macOS.
macos-skip-brew-update: 'true' # default false
- name: Test interface ACT-R
run: |
python -m pytest -v -m "actr" tests/
- name: Test interface PyTorch
run: |
python -m pytest -v -m "pytorch" tests/
- name: Test interface NeuroML
run: |
python -m pip install .[neuroml]
python -m pytest -v -m "neuroml" tests/
- name: Test interface TensorFlow
run: |
python -m pip install .[tensorflow]
dot -V
python -m pytest -v -m "tensorflow" tests/
- name: Test interface PsyNeuLink
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@v4
- name: Build sdist and wheel
run: pipx run --spec build pyproject-build
- uses: actions/upload-artifact@v4
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 }}