Despite being part of the requirement.txt, xlrd apparently was still optional-ish, and absent from some environments like the iotbox. Restore this by only monkeypatching xlrd if it's actually present. closes odoo/odoo#63045 X-original-commit: c36aa16c2cc431a1e3b3bb7047dbae4fcac13946 Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
19 lines
686 B
Python
19 lines
686 B
Python
try:
|
|
from xlrd import xlsx
|
|
except ImportError:
|
|
pass
|
|
else:
|
|
from lxml import etree
|
|
# xlrd.xlsx supports defusedxml, defusedxml's etree interface is broken
|
|
# (missing ElementTree and thus ElementTree.iter) which causes a fallback to
|
|
# Element.getiterator(), triggering a warning before 3.9 and an error from 3.9.
|
|
#
|
|
# We have defusedxml installed because zeep has a hard dep on defused and
|
|
# doesn't want to drop it (mvantellingen/python-zeep#1014).
|
|
#
|
|
# Ignore the check and set the relevant flags directly using lxml as we have a
|
|
# hard dependency on it.
|
|
xlsx.ET = etree
|
|
xlsx.ET_has_iterparse = True
|
|
xlsx.Element_has_iter = True
|