@@ -685,37 +685,33 @@ def loadpkl(infile):
685
685
686
686
unpkl = None
687
687
with indirectory (infile .parent ):
688
- with SoftFileLock (infile .name + '.lock' ):
689
- pkl_file = pklopen (infile .name , 'rb' )
690
-
691
- try : # Look if pkl file contains version file
692
- pkl_metadata_line = pkl_file .readline ()
693
- pkl_metadata = json .loads (pkl_metadata_line )
694
- except (UnicodeDecodeError , json .JSONDecodeError ):
695
- # Could not get version info
696
- pkl_file .seek (0 )
697
-
698
- try :
699
- unpkl = pickle .load (pkl_file )
700
- except UnicodeDecodeError :
701
- # Was this pickle created with Python 2.x?
702
- unpkl = pickle .load (pkl_file , fix_imports = True , encoding = 'utf-8' )
703
- fmlogger .info ('Successfully loaded pkl in compatibility mode.' )
704
- # Unpickling problems
705
- except Exception as e :
706
- if pkl_metadata and 'version' in pkl_metadata :
707
- from nipype import __version__ as version
708
- if pkl_metadata ['version' ] != version :
709
- fmlogger .error ("""\
710
- Attempted to open a results file generated by Nipype version %s, \
711
- with an incompatible Nipype version (%s)""" , pkl_metadata ['version' ], version )
712
- raise e
713
- fmlogger .error ("""\
714
- No metadata was found in the pkl file. Make sure you are currently using \
715
- the same Nipype version from the generated pkl.""" )
716
- raise e
717
- finally :
718
- pkl_file .close ()
688
+ with SoftFileLock ('%s.lock' % infile .name ):
689
+ with pklopen (infile .name , 'rb' ) as pkl_file :
690
+ try : # Look if pkl file contains version file
691
+ pkl_metadata_line = pkl_file .readline ()
692
+ pkl_metadata = json .loads (pkl_metadata_line )
693
+ except (UnicodeDecodeError , json .JSONDecodeError ):
694
+ # Could not get version info
695
+ pkl_file .seek (0 )
696
+ try :
697
+ unpkl = pickle .load (pkl_file )
698
+ except UnicodeDecodeError :
699
+ # Was this pickle created with Python 2.x?
700
+ unpkl = pickle .load (pkl_file , fix_imports = True , encoding = 'utf-8' )
701
+ fmlogger .info ('Successfully loaded pkl in compatibility mode.' )
702
+ # Unpickling problems
703
+ except Exception as e :
704
+ if pkl_metadata and 'version' in pkl_metadata :
705
+ from nipype import __version__ as version
706
+ if pkl_metadata ['version' ] != version :
707
+ fmlogger .error ("""\
708
+ Attempted to open a results file generated by Nipype version %s, \
709
+ with an incompatible Nipype version (%s)""" , pkl_metadata ['version' ], version )
710
+ raise e
711
+ fmlogger .error ("""\
712
+ No metadata was found in the pkl file. Make sure you are currently using \
713
+ the same Nipype version from the generated pkl.""" )
714
+ raise e
719
715
720
716
if unpkl is None :
721
717
raise ValueError ('Loading %s resulted in None.' % infile )
@@ -756,21 +752,17 @@ def read_stream(stream, logger=None, encoding=None):
756
752
757
753
758
754
def savepkl (filename , record , versioning = False ):
759
- with SoftFileLock (filename + '.lock' ):
760
- if filename .endswith ('pklz' ):
761
- pkl_file = gzip .open (filename , 'wb' )
762
- else :
763
- pkl_file = open (filename , 'wb' )
764
-
765
- if versioning :
766
- from nipype import __version__ as version
767
- metadata = json .dumps ({'version' : version })
755
+ pklopen = gzip .open if filename .endswith ('.pklz' ) else open
756
+ with SoftFileLock ('%s.lock' % filename ):
757
+ with pklopen (filename , 'wb' ) as pkl_file :
758
+ if versioning :
759
+ from nipype import __version__ as version
760
+ metadata = json .dumps ({'version' : version })
768
761
769
- pkl_file .write (metadata .encode ('utf-8' ))
770
- pkl_file .write ('\n ' .encode ('utf-8' ))
762
+ pkl_file .write (metadata .encode ('utf-8' ))
763
+ pkl_file .write ('\n ' .encode ('utf-8' ))
771
764
772
- pickle .dump (record , pkl_file )
773
- pkl_file .close ()
765
+ pickle .dump (record , pkl_file )
774
766
775
767
776
768
rst_levels = ['=' , '-' , '~' , '+' ]
0 commit comments