diff options
author | Mike Gilbert <floppym@gentoo.org> | 2018-06-17 11:14:43 -0400 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2023-12-25 16:51:06 +0100 |
commit | c3b1af26778b46460f6054738946c517221ffdcf (patch) | |
tree | 00660fb3895fb37a5f47588a6c892dd05806aec6 | |
parent | Skip test failures specific to our build environment (diff) | |
download | pypy-gentoo-2.7-7.3.14.tar.gz pypy-gentoo-2.7-7.3.14.tar.bz2 pypy-gentoo-2.7-7.3.14.zip |
use_pyxmlgentoo-2.7-7.3.14
-rw-r--r-- | lib-python/2.7/xml/__init__.py | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/lib-python/2.7/xml/__init__.py b/lib-python/2.7/xml/__init__.py index deed983d97..e6c332b8ab 100644 --- a/lib-python/2.7/xml/__init__.py +++ b/lib-python/2.7/xml/__init__.py @@ -22,20 +22,23 @@ __all__ = ["dom", "parsers", "sax", "etree"] _MINIMUM_XMLPLUS_VERSION = (0, 8, 4) -try: +def use_pyxml(): import _xmlplus -except ImportError: - pass -else: - try: - v = _xmlplus.version_info - except AttributeError: - # _xmlplus is too old; ignore it - pass + v = _xmlplus.version_info + if v >= _MINIMUM_XMLPLUS_VERSION: + import sys + _xmlplus.__path__.extend(__path__) + sys.modules[__name__] = _xmlplus + cleared_modules = [] + redefined_modules = [] + for module in sys.modules: + if module.startswith("xml.") and not module.startswith(("xml.marshal", "xml.schema", "xml.utils", "xml.xpath", "xml.xslt")): + cleared_modules.append(module) + if module.startswith(("xml.__init__", "xml.dom", "xml.parsers", "xml.sax")) and sys.modules[module] is not None: + redefined_modules.append(module) + for module in cleared_modules: + del sys.modules[module] + for module in sorted(redefined_modules): + __import__(module) else: - if v >= _MINIMUM_XMLPLUS_VERSION: - import sys - _xmlplus.__path__.extend(__path__) - sys.modules[__name__] = _xmlplus - else: - del v + raise ImportError("PyXML too old: %s" % ".".join(str(x) for x in v)) |