33 lines
918 B
Python
33 lines
918 B
Python
"""
|
|
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
|