summaryrefslogtreecommitdiffstats
path: root/Lib/xml/sax/expatreader.py
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2013-07-04 21:43:24 (GMT)
committerBrett Cannon <brett@python.org>2013-07-04 21:43:24 (GMT)
commitcd171c8e92c10d327151400fd8f16b11a4964615 (patch)
treedb734100511572201a54a6b7ce1803bcea4c94da /Lib/xml/sax/expatreader.py
parentfff59155d40ede93594eb77f320e0bde658cce28 (diff)
downloadcpython-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.py17
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