Source code for hylite.Picklablefile

#!/usr/bin/env python3

#    (c) Copyright 2013-2018 Murray Cox, Wandrille Duchemin, Pierre-Yves Dupont.
#
#
#    This file is part of HyLiTE.
#
#    HyLiTE is a free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License version 3 as published by
#    the Free Software Foundation.
#
#    HyLiTE is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with HyLiTE.  If not, see <http://www.gnu.org/licenses/>


#===============================#
# author: Wandrille Duchemin    #
#         Murray Cox            #
# last modified: 9 January 2018 #
#===============================#


[docs]class Picklablefile(object): ''' This class allow the pickling of a file handle Attributes: fileobj (file): a file object ''' def __init__(self, fileobj): ''' This class allow the pickling of a file handle ''' self.fileobj = fileobj def __getattr__(self, key): return getattr(self.fileobj, key) def __getstate__(self): ret = self.__dict__.copy() ret['_file_name'] = self.fileobj.name ret['_file_mode'] = self.fileobj.mode ret['_file_pos'] = self.fileobj.tell() del ret['fileobj'] return ret def __setstate__(self, dict): self.fileobj = open(dict['_file_name'], dict['_file_mode']) self.fileobj.seek(dict['_file_pos']) del dict['_file_name'] del dict['_file_mode'] del dict['_file_pos'] self.__dict__.update(dict)