Warnings if imaging library has wrong UCS support.

Raise exceptions for unknown errors.
This commit is contained in:
Freek Dijkstra 2013-07-23 10:44:27 +02:00
parent 2f803e653c
commit d24a419299

View File

@ -61,7 +61,9 @@ try:
except ImportError as v: except ImportError as v:
core = _imaging_not_installed() core = _imaging_not_installed()
if str(v)[:20] == "Module use of python" and warnings: if not warnings: # the warnings module is available since Python 2.1
raise # raise the original ImportError.
elif str(v).startswith("Module use of python"):
# The _imaging C module is present, but not compiled for # The _imaging C module is present, but not compiled for
# the right version (windows only). Print a warning, if # the right version (windows only). Print a warning, if
# possible. # possible.
@ -70,8 +72,25 @@ except ImportError as v:
"of Python; most PIL functions will be disabled", "of Python; most PIL functions will be disabled",
RuntimeWarning RuntimeWarning
) )
if str(v).startswith("The _imaging extension") and warnings: elif str(v).startswith("The _imaging extension"):
warnings.warn(str(v), RuntimeWarning) warnings.warn(str(v), RuntimeWarning)
elif "Symbol not found: _PyUnicodeUCS2_FromString" in str(v):
warnings.warn(
"The _imaging extension was build for Python with UCS2 support; "
"recompile PIL or build Python --without-wide-unicode. "
"Most PIL functions will be disabled",
RuntimeWarning
)
elif "Symbol not found: _PyUnicodeUCS4_FromString" in str(v):
warnings.warn(
"The _imaging extension was build for Python with UCS4 support; "
"recompile PIL or build Python --with-wide-unicode. "
"Most PIL functions will be disabled",
RuntimeWarning
)
else:
# unknown problem. Raise the original exception.
raise
try: try:
import builtins import builtins