@@ -126,6 +126,11 @@ def scans_for_fnames(fnames, keep4d=False, separate_sessions=False):
126
126
127
127
class Info (PackageInfo ):
128
128
"""Handles SPM version information
129
+
130
+ If you use `SPMCommand.set_mlab_paths` to set alternate entries for
131
+ matlab_cmd, paths, and use_mcr, then you will need to use the same entries
132
+ to any call in the Info class to maintain memoization. Otherwise, it will
133
+ default to the parameters in the `getinfo` function below.
129
134
"""
130
135
_path = None
131
136
_name = None
@@ -134,22 +139,16 @@ class Info(PackageInfo):
134
139
135
140
@classmethod
136
141
def path (klass , matlab_cmd = None , paths = None , use_mcr = None ):
137
- if klass ._path :
138
- return klass ._path
139
142
klass .getinfo (matlab_cmd , paths , use_mcr )
140
143
return klass ._path
141
144
142
145
@classmethod
143
146
def version (klass , matlab_cmd = None , paths = None , use_mcr = None ):
144
- if klass ._version :
145
- return klass ._version
146
147
klass .getinfo (matlab_cmd , paths , use_mcr )
147
148
return klass ._version
148
149
149
150
@classmethod
150
151
def name (klass , matlab_cmd = None , paths = None , use_mcr = None ):
151
- if klass ._name :
152
- return klass ._name
153
152
klass .getinfo (matlab_cmd , paths , use_mcr )
154
153
return klass ._name
155
154
@@ -191,7 +190,6 @@ def getinfo(klass, matlab_cmd=None, paths=None, use_mcr=None):
191
190
'path' : klass ._path ,
192
191
'release' : klass ._version
193
192
}
194
-
195
193
mlab = MatlabCommand (matlab_cmd = matlab_cmd , resource_monitor = False )
196
194
mlab .inputs .mfile = False
197
195
if paths :
@@ -217,6 +215,11 @@ def getinfo(klass, matlab_cmd=None, paths=None, use_mcr=None):
217
215
# if no Matlab at all -- exception could be raised
218
216
# No Matlab -- no spm
219
217
logger .debug ('%s' , e )
218
+ klass ._version = None
219
+ klass ._path = None
220
+ klass ._name = None
221
+ klass ._command = matlab_cmd
222
+ klass ._paths = paths
220
223
return None
221
224
222
225
out = sd ._strip_header (out .runtime .stdout )
@@ -301,6 +304,10 @@ def set_mlab_paths(cls, matlab_cmd=None, paths=None, use_mcr=None):
301
304
cls ._matlab_cmd = matlab_cmd
302
305
cls ._paths = paths
303
306
cls ._use_mcr = use_mcr
307
+ info_dict = Info .getinfo (
308
+ matlab_cmd = matlab_cmd ,
309
+ paths = paths ,
310
+ use_mcr = use_mcr )
304
311
305
312
def _find_mlab_cmd_defaults (self ):
306
313
# check if the user has set environment variables to enforce
0 commit comments