16
16
import shutil
17
17
import simplejson as json
18
18
from traits .trait_errors import TraitError
19
- from packaging .version import Version
19
+ from packaging .version import Version , InvalidVersion
20
20
21
21
from ... import config , logging
22
22
from ...utils .provenance import write_provenance
@@ -293,23 +293,26 @@ def _check_version_requirements(self, trait_object, permissive=False):
293
293
check = dict (min_ver = lambda t : t is not None )
294
294
names = trait_object .trait_names (** check )
295
295
296
+ if self .version :
297
+ try :
298
+ version = Version (str (self .version ))
299
+ except InvalidVersion as err :
300
+ version = err
301
+
296
302
if names and self .version :
297
- version = Version (str (self .version ))
298
303
for name in names :
299
304
min_ver = Version (str (trait_object .traits ()[name ].min_ver ))
300
- try :
301
- too_old = min_ver > version
302
- except TypeError as err :
305
+ if isinstance (version , InvalidVersion ):
303
306
msg = (
304
- f"Nipype cannot validate the package version { version !r } for "
307
+ f"Nipype cannot validate the package version { self . version } for "
305
308
f"{ self .__class__ .__name__ } . Trait { name } requires version >={ min_ver } ."
306
309
)
307
310
if not permissive :
308
311
iflogger .warning (f"{ msg } . Please verify validity." )
309
312
if config .getboolean ("execution" , "stop_on_unknown_version" ):
310
- raise ValueError (msg ) from err
313
+ raise ValueError (msg ) from version
311
314
continue
312
- if too_old :
315
+ if min_ver > version :
313
316
unavailable_traits .append (name )
314
317
if not isdefined (getattr (trait_object , name )):
315
318
continue
@@ -323,22 +326,19 @@ def _check_version_requirements(self, trait_object, permissive=False):
323
326
check = dict (max_ver = lambda t : t is not None )
324
327
names = trait_object .trait_names (** check )
325
328
if names and self .version :
326
- version = Version (str (self .version ))
327
329
for name in names :
328
330
max_ver = Version (str (trait_object .traits ()[name ].max_ver ))
329
- try :
330
- too_new = max_ver < version
331
- except TypeError as err :
331
+ if isinstance (version , InvalidVersion ):
332
332
msg = (
333
- f"Nipype cannot validate the package version { version !r } for "
333
+ f"Nipype cannot validate the package version { self . version } for "
334
334
f"{ self .__class__ .__name__ } . Trait { name } requires version <={ max_ver } ."
335
335
)
336
336
if not permissive :
337
337
iflogger .warning (f"{ msg } . Please verify validity." )
338
338
if config .getboolean ("execution" , "stop_on_unknown_version" ):
339
- raise ValueError (msg ) from err
339
+ raise ValueError (msg ) from version
340
340
continue
341
- if too_new :
341
+ if max_ver < version :
342
342
unavailable_traits .append (name )
343
343
if not isdefined (getattr (trait_object , name )):
344
344
continue
0 commit comments