""" | |
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 | |