1# Copyright (c) 2010-2024 openpyxl
2
3
4"""Collection of XML resources compatible across different Python versions"""
5import os
6
7
8def lxml_available():
9 try:
10 from lxml.etree import LXML_VERSION
11 LXML = LXML_VERSION >= (3, 3, 1, 0)
12 if not LXML:
13 import warnings
14 warnings.warn("The installed version of lxml is too old to be used with openpyxl")
15 return False # we have it, but too old
16 else:
17 return True # we have it, and recent enough
18 except ImportError:
19 return False # we don't even have it
20
21
22def lxml_env_set():
23 return os.environ.get("OPENPYXL_LXML", "True") == "True"
24
25
26LXML = lxml_available() and lxml_env_set()
27
28
29def defusedxml_available():
30 try:
31 import defusedxml # noqa
32 except ImportError:
33 return False
34 else:
35 return True
36
37
38def defusedxml_env_set():
39 return os.environ.get("OPENPYXL_DEFUSEDXML", "True") == "True"
40
41
42DEFUSEDXML = defusedxml_available() and defusedxml_env_set()