""" This module is here to ensure compatibility of Windows/Linux/MacOS and different Python versions. """ import errno import sys import pickle def pickle_load(file): try: return pickle.load(file) # Python on Windows don't throw EOF errors for pipes. So reraise them with # the correct type, which is caught upwards. except OSError: if sys.platform == 'win32': raise EOFError() raise def pickle_dump(data, file, protocol): try: pickle.dump(data, file, protocol) # On Python 3.3 flush throws sometimes an error even though the writing # operation should be completed. file.flush() # Python on Windows don't throw EPIPE errors for pipes. So reraise them with # the correct type and error number. except OSError: if sys.platform == 'win32': raise IOError(errno.EPIPE, "Broken pipe") raise