From c36aa16c2cc431a1e3b3bb7047dbae4fcac13946 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 8 Dec 2020 13:52:14 +0000 Subject: [FIX] core: don't require xlrd 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#63025 Signed-off-by: Xavier Morel (xmo) --- odoo/tools/_monkeypatches.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'odoo/tools') diff --git a/odoo/tools/_monkeypatches.py b/odoo/tools/_monkeypatches.py index ce8ba4987e2..d6a604783ef 100644 --- a/odoo/tools/_monkeypatches.py +++ b/odoo/tools/_monkeypatches.py @@ -1,15 +1,18 @@ -from xlrd import xlsx -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 +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 -- cgit v1.2.3