Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/nestml-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
nest_branch: ["v2.20.2", "v3.0", "v3.8", "master"]
nest_branch: ["v2.20.2", "v3.0", "v3.9", "master"]
fail-fast: false
steps:
# Checkout the repository contents
Expand Down
36 changes: 20 additions & 16 deletions pynestml/codegeneration/nest_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ def detect_nest_version(cls) -> str:

try:
import nest
import semver

vt = nest.Create("volume_transmitter")

Expand All @@ -58,24 +59,27 @@ def detect_nest_version(cls) -> str:
except Exception:
pass

if "DataConnect" in dir(nest):
nest_version = "v2.20.2"
else:
nest_version = "v" + nest.__version__
if nest_version.startswith("v3.5") or nest_version.startswith("v3.6") or nest_version.startswith("v3.7") or nest_version.startswith("v3.8"):
if "post0.dev0" in nest_version:
try:
# For NEST version <= 3.4, the version string is not parsable by semver.
ver = semver.Version.parse(nest.__version__)
if ver.major >= 3 and ver.minor >= 5:
if ver.prerelease and "post0.dev0" in ver.prerelease:
nest_version = "master"
else:
if "kernel_status" not in dir(nest): # added in v3.1
nest_version = "v3.0"
elif "prepared" in nest.GetKernelStatus().keys(): # "prepared" key was added after v3.3 release
nest_version = "v3.4"
elif "tau_u_bar_minus" in neuron.get().keys(): # added in v3.3
nest_version = "v3.3"
elif "tau_Ca" in vt.get().keys(): # removed in v3.2
nest_version = "v3.1"
else:
nest_version = "v3.2"
nest_version = "v" + nest.__version__
except (AttributeError, ValueError):
if "DataConnect" in dir(nest):
nest_version = "v2.20.2"
elif "kernel_status" not in dir(nest): # added in v3.1
nest_version = "v3.0"
elif "prepared" in nest.GetKernelStatus().keys(): # "prepared" key was added after v3.3 release
nest_version = "v3.4"
elif "tau_u_bar_minus" in neuron.get().keys(): # added in v3.3
nest_version = "v3.3"
elif "tau_Ca" in vt.get().keys(): # removed in v3.2
nest_version = "v3.1"
else:
nest_version = "v3.2"
except ModuleNotFoundError:
nest_version = ""

Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ setuptools
Jinja2 >= 2.10
typing;python_version<"3.5"
astropy
semver
odetoolbox >= 2.5.9
Loading