From b75314df87b9fd5e7e267bbfc13159624da16533 Mon Sep 17 00:00:00 2001 From: Tomo Krajina Date: Thu, 16 Nov 2023 18:43:32 +0100 Subject: [PATCH] Global etree selector --- gpxpy/parser.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/gpxpy/parser.py b/gpxpy/parser.py index 70b496a..04b2f5c 100644 --- a/gpxpy/parser.py +++ b/gpxpy/parser.py @@ -19,12 +19,21 @@ try: # Load LXML or fallback to cET or ET - import lxml.etree as mod_etree # type: ignore + import lxml.etree as mod_lxml_etree # type: ignore except ImportError: - try: - import xml.etree.cElementTree as mod_etree # type: ignore - except ImportError: - import xml.etree.ElementTree as mod_etree # type: ignore + pass + +try: + import xml.etree.cElementTree as mod_xml_etree # type: ignore +except ImportError: + import xml.etree.ElementTree as mod_xml_etree # type: ignore + +mod_etree = mod_xml_etree + +""" Change the etree implementation, use gpx.set_xml_etree(mod_lxml_etree) for lxml """ +def set_xml_etree(etre): + global mod_etree + mod_etree = etre from . import gpx as mod_gpx from . import utils as mod_utils @@ -32,6 +41,7 @@ log = mod_logging.getLogger(__name__) + def library() -> str: """ Return the underlying ETree.