Skip to content

Commit ed9f540

Browse files
authored
Add NEST 3.9 for CI (#1249)
1 parent 4608a38 commit ed9f540

File tree

3 files changed

+22
-17
lines changed

3 files changed

+22
-17
lines changed

.github/workflows/nestml-build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ jobs:
167167
runs-on: ubuntu-latest
168168
strategy:
169169
matrix:
170-
nest_branch: ["v2.20.2", "v3.0", "v3.8", "master"]
170+
nest_branch: ["v2.20.2", "v3.0", "v3.9", "master"]
171171
fail-fast: false
172172
steps:
173173
# Checkout the repository contents

pynestml/codegeneration/nest_tools.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ def detect_nest_version(cls) -> str:
4646
4747
try:
4848
import nest
49+
import semver
4950
5051
vt = nest.Create("volume_transmitter")
5152
@@ -58,24 +59,27 @@ def detect_nest_version(cls) -> str:
5859
except Exception:
5960
pass
6061
61-
if "DataConnect" in dir(nest):
62-
nest_version = "v2.20.2"
63-
else:
64-
nest_version = "v" + nest.__version__
65-
if nest_version.startswith("v3.5") or nest_version.startswith("v3.6") or nest_version.startswith("v3.7") or nest_version.startswith("v3.8"):
66-
if "post0.dev0" in nest_version:
62+
try:
63+
# For NEST version <= 3.4, the version string is not parsable by semver.
64+
ver = semver.Version.parse(nest.__version__)
65+
if ver.major >= 3 and ver.minor >= 5:
66+
if ver.prerelease and "post0.dev0" in ver.prerelease:
6767
nest_version = "master"
68-
else:
69-
if "kernel_status" not in dir(nest): # added in v3.1
70-
nest_version = "v3.0"
71-
elif "prepared" in nest.GetKernelStatus().keys(): # "prepared" key was added after v3.3 release
72-
nest_version = "v3.4"
73-
elif "tau_u_bar_minus" in neuron.get().keys(): # added in v3.3
74-
nest_version = "v3.3"
75-
elif "tau_Ca" in vt.get().keys(): # removed in v3.2
76-
nest_version = "v3.1"
7768
else:
78-
nest_version = "v3.2"
69+
nest_version = "v" + nest.__version__
70+
except (AttributeError, ValueError):
71+
if "DataConnect" in dir(nest):
72+
nest_version = "v2.20.2"
73+
elif "kernel_status" not in dir(nest): # added in v3.1
74+
nest_version = "v3.0"
75+
elif "prepared" in nest.GetKernelStatus().keys(): # "prepared" key was added after v3.3 release
76+
nest_version = "v3.4"
77+
elif "tau_u_bar_minus" in neuron.get().keys(): # added in v3.3
78+
nest_version = "v3.3"
79+
elif "tau_Ca" in vt.get().keys(): # removed in v3.2
80+
nest_version = "v3.1"
81+
else:
82+
nest_version = "v3.2"
7983
except ModuleNotFoundError:
8084
nest_version = ""
8185

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ setuptools
77
Jinja2 >= 2.10
88
typing;python_version<"3.5"
99
astropy
10+
semver
1011
odetoolbox >= 2.5.9

0 commit comments

Comments
 (0)