Skip to content

Commit 99f32a8

Browse files
authored
Merge pull request #1059 from clinssen/generate_code_for_touch
NESTCodeGeneratorUtils.generate_code_for() no longer touches source files on each call
2 parents 076bd89 + 100be62 commit 99f32a8

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

.github/workflows/nestml-build.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,13 @@ jobs:
242242
ipynb_fns=$(find $GITHUB_WORKSPACE/doc/tutorials -name '*.ipynb')
243243
rc=0
244244
for fn in $ipynb_fns; do
245+
echo "Now running Jupyter notebook: ${fn}"
245246
cd `dirname ${fn}`
246-
ipython3 ${fn} || rc=1
247+
ipython3 ${fn}
248+
if [ $? -ne 0 ]; then
249+
echo "Error running Jupyter notebook: ${fn}"
250+
rc=1
251+
fi
247252
done;
248253
cd $GITHUB_WORKSPACE
249254
exit $rc

pynestml/codegeneration/nest_code_generator_utils.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,22 +75,24 @@ def generate_code_for(cls,
7575
-------
7676
If a synapse is specified, returns a tuple (module_name, mangled_neuron_name, mangled_synapse_name) containing the names that can be used in ``nest.Install()``, ``nest.Create()`` and ``nest.Connect()`` calls. If no synapse is specified, returns a tuple (module_name, mangled_neuron_name).
7777
"""
78-
7978
from pynestml.frontend.pynestml_frontend import generate_nest_target
8079

8180
# generate temporary install directory
8281
install_path = tempfile.mkdtemp(prefix="nestml_target_")
8382

8483
# read neuron model from file?
85-
if "\n" not in nestml_neuron_model and ".nestml" in nestml_neuron_model:
84+
neuron_model_is_file_name: bool = "\n" not in nestml_neuron_model and ".nestml" in nestml_neuron_model
85+
if neuron_model_is_file_name:
86+
neuron_fn = nestml_neuron_model
8687
with open(nestml_neuron_model, "r") as nestml_model_file:
8788
nestml_neuron_model = nestml_model_file.read()
8889

8990
# update neuron model name inside the file
9091
neuron_model_name = re.findall(r"model [^:\s]*:", nestml_neuron_model)[0][6:-1]
91-
neuron_fn = neuron_model_name + ".nestml"
92-
with open(neuron_fn, "w") as f:
93-
print(nestml_neuron_model, file=f)
92+
if not neuron_model_is_file_name:
93+
neuron_fn = neuron_model_name + ".nestml"
94+
with open(neuron_fn, "w") as f:
95+
print(nestml_neuron_model, file=f)
9496

9597
input_fns = [neuron_fn]
9698
_codegen_opts = {"neuron_parent_class": "StructuralPlasticityNode",
@@ -99,15 +101,19 @@ def generate_code_for(cls,
99101

100102
if nestml_synapse_model:
101103
# read synapse model from file?
102-
if "\n" not in nestml_synapse_model and ".nestml" in nestml_synapse_model:
104+
synapse_model_is_file_name: bool = "\n" not in nestml_synapse_model and ".nestml" in nestml_synapse_model
105+
if synapse_model_is_file_name:
106+
synapse_fn = nestml_synapse_model
103107
with open(nestml_synapse_model, "r") as nestml_model_file:
104108
nestml_synapse_model = nestml_model_file.read()
105109

106110
# update synapse model name inside the file
107111
synapse_model_name = re.findall(r"model [^:\s]*:", nestml_synapse_model)[0][6:-1]
108-
synapse_fn = synapse_model_name + ".nestml"
109-
with open(synapse_fn, "w") as f:
110-
print(nestml_synapse_model, file=f)
112+
if not synapse_model_is_file_name:
113+
synapse_fn = synapse_model_name + ".nestml"
114+
with open(synapse_fn, "w") as f:
115+
print(nestml_synapse_model, file=f)
116+
111117
input_fns += [synapse_fn]
112118
_codegen_opts["neuron_synapse_pairs"] = [{"neuron": neuron_model_name,
113119
"synapse": synapse_model_name,

0 commit comments

Comments
 (0)