diff options
author | Brett Cannon <brett@python.org> | 2013-07-04 21:43:24 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2013-07-04 21:43:24 (GMT) |
commit | cd171c8e92c10d327151400fd8f16b11a4964615 (patch) | |
tree | db734100511572201a54a6b7ce1803bcea4c94da /Lib/xml/sax/expatreader.py | |
parent | fff59155d40ede93594eb77f320e0bde658cce28 (diff) | |
download | cpython-cd171c8e92c10d327151400fd8f16b11a4964615.zip cpython-cd171c8e92c10d327151400fd8f16b11a4964615.tar.gz cpython-cd171c8e92c10d327151400fd8f16b11a4964615.tar.bz2 |
Issue #18200: Back out usage of ModuleNotFoundError (8d28d44f3a9a)
Diffstat (limited to 'Lib/xml/sax/expatreader.py')
-rw-r--r-- | Lib/xml/sax/expatreader.py | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/Lib/xml/sax/expatreader.py b/Lib/xml/sax/expatreader.py index 8619747..a227cda 100644 --- a/Lib/xml/sax/expatreader.py +++ b/Lib/xml/sax/expatreader.py @@ -20,7 +20,7 @@ del sys try: from xml.parsers import expat -except ModuleNotFoundError: +except ImportError: raise SAXReaderNotAvailable("expat not supported", None) else: if not hasattr(expat, "ParserCreate"): @@ -30,7 +30,18 @@ from xml.sax import xmlreader, saxutils, handler AttributesImpl = xmlreader.AttributesImpl AttributesNSImpl = xmlreader.AttributesNSImpl -import weakref +# If we're using a sufficiently recent version of Python, we can use +# weak references to avoid cycles between the parser and content +# handler, otherwise we'll just have to pretend. +try: + import _weakref +except ImportError: + def _mkproxy(o): + return o +else: + import weakref + _mkproxy = weakref.proxy + del weakref, _weakref # --- ExpatLocator @@ -41,7 +52,7 @@ class ExpatLocator(xmlreader.Locator): a circular reference between the parser and the content handler. """ def __init__(self, parser): - self._ref = weakref.proxy(parser) + self._ref = _mkproxy(parser) def getColumnNumber(self): parser = self._ref |