You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
867 B
Python
25 lines
867 B
Python
from shutil import copyfileobj
|
|
|
|
from werkzeug.datastructures import FileStorage
|
|
|
|
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
|
|
|
|
FileStorage.save = lambda self, dst, buffer_size=1<<20: copyfileobj(self.stream, dst, buffer_size)
|