summaryrefslogtreecommitdiffstats
path: root/Lib/lib2to3/pytree.py
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2008-11-28 23:01:28 (GMT)
committerBenjamin Peterson <benjamin@python.org>2008-11-28 23:01:28 (GMT)
commit5cff9312fd95469f5e5afdaaa8d7949361ffc79f (patch)
tree5366128fd020b9de3e885b1985c79253fe38a25c /Lib/lib2to3/pytree.py
parent6f3a6e209a2cc460ed70c6bd1fa660d9b4b92b49 (diff)
downloadcpython-5cff9312fd95469f5e5afdaaa8d7949361ffc79f.zip
cpython-5cff9312fd95469f5e5afdaaa8d7949361ffc79f.tar.gz
cpython-5cff9312fd95469f5e5afdaaa8d7949361ffc79f.tar.bz2
Merged revisions 67428 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ................ r67428 | benjamin.peterson | 2008-11-28 16:12:14 -0600 (Fri, 28 Nov 2008) | 57 lines Merged revisions 67384,67386-67387,67389-67390,67392,67399-67400,67403-67405,67426 via svnmerge from svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3 ........ r67384 | benjamin.peterson | 2008-11-25 16:13:31 -0600 (Tue, 25 Nov 2008) | 4 lines don't duplicate calls to start_tree() RefactoringTool.pre_order values now holds a list of the fixers while pre_order_mapping holds the dict. ........ r67386 | benjamin.peterson | 2008-11-25 16:44:52 -0600 (Tue, 25 Nov 2008) | 1 line #4423 fix_imports was still replacing usage of a module if attributes were being used ........ r67387 | benjamin.peterson | 2008-11-25 16:47:54 -0600 (Tue, 25 Nov 2008) | 1 line fix broken test ........ r67389 | benjamin.peterson | 2008-11-25 17:13:17 -0600 (Tue, 25 Nov 2008) | 1 line remove compatibility code; we only cater to 2.5+ ........ r67390 | benjamin.peterson | 2008-11-25 22:03:36 -0600 (Tue, 25 Nov 2008) | 1 line fix #3994; the usage of changed imports was fixed in nested cases ........ r67392 | benjamin.peterson | 2008-11-26 11:11:40 -0600 (Wed, 26 Nov 2008) | 1 line simpilfy and comment fix_imports ........ r67399 | benjamin.peterson | 2008-11-26 11:47:03 -0600 (Wed, 26 Nov 2008) | 1 line remove more compatibility code ........ r67400 | benjamin.peterson | 2008-11-26 12:07:41 -0600 (Wed, 26 Nov 2008) | 1 line set svn:ignore ........ r67403 | benjamin.peterson | 2008-11-26 13:11:11 -0600 (Wed, 26 Nov 2008) | 1 line wrap import ........ r67404 | benjamin.peterson | 2008-11-26 13:29:49 -0600 (Wed, 26 Nov 2008) | 1 line build the fix_imports pattern in compile_pattern, so MAPPING can be changed and reflected in the pattern ........ r67405 | benjamin.peterson | 2008-11-26 14:01:24 -0600 (Wed, 26 Nov 2008) | 1 line stop ugly messages about runtime errors being from printed ........ r67426 | benjamin.peterson | 2008-11-28 16:01:40 -0600 (Fri, 28 Nov 2008) | 5 lines don't replace a module name if it is in the middle of a attribute lookup This fix also stops module names from being replaced if they are not in an attribute lookup. ........ ................
Diffstat (limited to 'Lib/lib2to3/pytree.py')
-rw-r--r--Lib/lib2to3/pytree.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/Lib/lib2to3/pytree.py b/Lib/lib2to3/pytree.py
index c6655a0..ec87a9d 100644
--- a/Lib/lib2to3/pytree.py
+++ b/Lib/lib2to3/pytree.py
@@ -11,6 +11,9 @@ There's also a pattern matching implementation here.
__author__ = "Guido van Rossum <guido@python.org>"
+import sys
+from io import StringIO
+
HUGE = 0x7FFFFFFF # maximum repeat count, default max
@@ -655,6 +658,11 @@ class WildcardPattern(BasePattern):
elif self.name == "bare_name":
yield self._bare_name_matches(nodes)
else:
+ # The reason for this is that hitting the recursion limit usually
+ # results in some ugly messages about how RuntimeErrors are being
+ # ignored.
+ save_stderr = sys.stderr
+ sys.stderr = StringIO()
try:
for count, r in self._recursive_matches(nodes, 0):
if self.name:
@@ -667,6 +675,8 @@ class WildcardPattern(BasePattern):
if self.name:
r[self.name] = nodes[:count]
yield count, r
+ finally:
+ sys.stderr = save_stderr
def _iterative_matches(self, nodes):
"""Helper to iteratively yield the matches."""